add winpcap 4.0.2 from url http://www.winpcap.org/
[natblaster.git] / winpcap / Examples / NETMETER / LineColl.cpp
blobf34087a0f0c9870e59fd9f3f7be27f92889b8f61
1 /*
2 * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy)
3 * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California)
4 * All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the Politecnico di Torino, CACE Technologies
16 * nor the names of its contributors may be used to endorse or promote
17 * products derived from this software without specific prior written
18 * permission.
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 #include "LineColl.h"
36 #ifdef _DEBUG
37 #undef THIS_FILE
38 static char THIS_FILE[]=__FILE__;
39 #define new DEBUG_NEW
40 #endif
42 //////////////////////////////////////////////////////////////////////
43 // Construction/Destruction
44 //////////////////////////////////////////////////////////////////////
46 LineCollection::LineCollection(CString *s,int skip)
48 m_Skip=skip;
49 if(s==NULL) return;
50 *this=*s;
53 LineCollection::LineCollection(CArchive &ar,int skip)
55 if (ar.IsStoring())
57 return;
59 else
61 m_Skip=skip;
62 CString s;
63 int i,j;
64 vect.SetSize(0);
65 for(i=0,j=0;ar.ReadString(s);i++)
67 if(m_Skip && s=="") continue;
68 vect.SetSize(j+1);
69 vect[j]=s;
70 j++;
75 LineCollection::~LineCollection()
79 int LineCollection::GetSize()
81 return vect.GetSize();
84 CString & LineCollection::operator =(CString &s)
86 int i,l,n,t=0;
87 l=s.GetLength();
88 vect.SetSize(0);
89 for(i=0,n=0;i<l;i++)
91 if ((s)[i]=='\n')
93 if(m_Skip && i>0 && (s)[i-1]=='\n') continue;
94 vect.SetSize(t+1);
95 vect[t]=(s).Mid(n,i-n-1);
96 t++;
97 n=i+1;
100 return s;
103 void LineCollection::clear()
105 vect.SetSize(0);