xref: /trunk/main/autodoc/inc/cosv/tpl/swelist.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
1*11c03c6dSDamjan Jovanovic /**************************************************************
2*11c03c6dSDamjan Jovanovic  *
3*11c03c6dSDamjan Jovanovic  * Licensed to the Apache Software Foundation (ASF) under one
4*11c03c6dSDamjan Jovanovic  * or more contributor license agreements.  See the NOTICE file
5*11c03c6dSDamjan Jovanovic  * distributed with this work for additional information
6*11c03c6dSDamjan Jovanovic  * regarding copyright ownership.  The ASF licenses this file
7*11c03c6dSDamjan Jovanovic  * to you under the Apache License, Version 2.0 (the
8*11c03c6dSDamjan Jovanovic  * "License"); you may not use this file except in compliance
9*11c03c6dSDamjan Jovanovic  * with the License.  You may obtain a copy of the License at
10*11c03c6dSDamjan Jovanovic  *
11*11c03c6dSDamjan Jovanovic  *   http://www.apache.org/licenses/LICENSE-2.0
12*11c03c6dSDamjan Jovanovic  *
13*11c03c6dSDamjan Jovanovic  * Unless required by applicable law or agreed to in writing,
14*11c03c6dSDamjan Jovanovic  * software distributed under the License is distributed on an
15*11c03c6dSDamjan Jovanovic  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*11c03c6dSDamjan Jovanovic  * KIND, either express or implied.  See the License for the
17*11c03c6dSDamjan Jovanovic  * specific language governing permissions and limitations
18*11c03c6dSDamjan Jovanovic  * under the License.
19*11c03c6dSDamjan Jovanovic  *
20*11c03c6dSDamjan Jovanovic  *************************************************************/
21*11c03c6dSDamjan Jovanovic 
22*11c03c6dSDamjan Jovanovic 
23*11c03c6dSDamjan Jovanovic 
24*11c03c6dSDamjan Jovanovic #ifndef CSV_SWELIST_HXX
25*11c03c6dSDamjan Jovanovic #define CSV_SWELIST_HXX
26*11c03c6dSDamjan Jovanovic 
27*11c03c6dSDamjan Jovanovic // USED SERVICES
28*11c03c6dSDamjan Jovanovic     // BASE CLASSES
29*11c03c6dSDamjan Jovanovic     // COMPONENTS
30*11c03c6dSDamjan Jovanovic     // PARAMETERS
31*11c03c6dSDamjan Jovanovic #include <cosv/tpl/dyn.hxx>
32*11c03c6dSDamjan Jovanovic 
33*11c03c6dSDamjan Jovanovic 
34*11c03c6dSDamjan Jovanovic namespace csv
35*11c03c6dSDamjan Jovanovic {
36*11c03c6dSDamjan Jovanovic 
37*11c03c6dSDamjan Jovanovic 
38*11c03c6dSDamjan Jovanovic template <class XX>
39*11c03c6dSDamjan Jovanovic class SweListElement
40*11c03c6dSDamjan Jovanovic {
41*11c03c6dSDamjan Jovanovic   public:
42*11c03c6dSDamjan Jovanovic     typedef SweListElement<XX> self;
43*11c03c6dSDamjan Jovanovic 
SweListElement(const XX & in_aObj)44*11c03c6dSDamjan Jovanovic                         SweListElement(
45*11c03c6dSDamjan Jovanovic                             const XX &          in_aObj )
46*11c03c6dSDamjan Jovanovic                                                 :   aObj(in_aObj), pNext(0) {}
47*11c03c6dSDamjan Jovanovic 
Obj() const48*11c03c6dSDamjan Jovanovic     const XX &          Obj() const             { return aObj; }
Obj()49*11c03c6dSDamjan Jovanovic     XX &                Obj()                   { return aObj; }
Next() const50*11c03c6dSDamjan Jovanovic     self *              Next() const            { return pNext; }
51*11c03c6dSDamjan Jovanovic 
SetNext(self * i_pNext)52*11c03c6dSDamjan Jovanovic     void                SetNext(
53*11c03c6dSDamjan Jovanovic                             self *              i_pNext )
54*11c03c6dSDamjan Jovanovic                                                 { pNext = i_pNext; }
55*11c03c6dSDamjan Jovanovic   private:
56*11c03c6dSDamjan Jovanovic     XX                  aObj;
57*11c03c6dSDamjan Jovanovic     self *              pNext;
58*11c03c6dSDamjan Jovanovic };
59*11c03c6dSDamjan Jovanovic 
60*11c03c6dSDamjan Jovanovic 
61*11c03c6dSDamjan Jovanovic 
62*11c03c6dSDamjan Jovanovic template <class XX>  class SweListIterator;
63*11c03c6dSDamjan Jovanovic template <class XX>  class SweListCIterator;
64*11c03c6dSDamjan Jovanovic 
65*11c03c6dSDamjan Jovanovic 
66*11c03c6dSDamjan Jovanovic template <class XX>
67*11c03c6dSDamjan Jovanovic class SweList
68*11c03c6dSDamjan Jovanovic {
69*11c03c6dSDamjan Jovanovic   public:
70*11c03c6dSDamjan Jovanovic     // TYPES
71*11c03c6dSDamjan Jovanovic     typedef SweList<XX>             self;
72*11c03c6dSDamjan Jovanovic     typedef XX                      value_type;
73*11c03c6dSDamjan Jovanovic     typedef SweListIterator<XX>     iterator;
74*11c03c6dSDamjan Jovanovic     typedef SweListCIterator<XX>    const_iterator;
75*11c03c6dSDamjan Jovanovic   private:
76*11c03c6dSDamjan Jovanovic     typedef SweListElement<XX>      elem;
77*11c03c6dSDamjan Jovanovic 
78*11c03c6dSDamjan Jovanovic   public:
79*11c03c6dSDamjan Jovanovic     // LIFECYCLE
SweList()80*11c03c6dSDamjan Jovanovic                         SweList()               : pTop(0), pTail(0) {}
~SweList()81*11c03c6dSDamjan Jovanovic                         ~SweList()              { erase_all(); }
82*11c03c6dSDamjan Jovanovic     // OPERATIONS
83*11c03c6dSDamjan Jovanovic     void                push_front(
84*11c03c6dSDamjan Jovanovic                             const XX &          i_aObj );
85*11c03c6dSDamjan Jovanovic     void                pop_front();
86*11c03c6dSDamjan Jovanovic     void                push_back(
87*11c03c6dSDamjan Jovanovic                             const XX &          i_aObj );
88*11c03c6dSDamjan Jovanovic     void                erase_all();
89*11c03c6dSDamjan Jovanovic 
90*11c03c6dSDamjan Jovanovic     // INQUIRY
begin() const91*11c03c6dSDamjan Jovanovic     const_iterator      begin() const           { return pTop; }
begin()92*11c03c6dSDamjan Jovanovic     iterator            begin()                 { return pTop; }
end() const93*11c03c6dSDamjan Jovanovic     const_iterator      end() const             { return (elem*)0; }
end()94*11c03c6dSDamjan Jovanovic     iterator            end()                   { return (elem*)0; }
front() const95*11c03c6dSDamjan Jovanovic     const XX &          front() const           { return pTop->Obj(); }
front()96*11c03c6dSDamjan Jovanovic     XX &                front()                 { return pTop->Obj(); }
back() const97*11c03c6dSDamjan Jovanovic     const XX &          back() const            { return pTail->Obj(); }
back()98*11c03c6dSDamjan Jovanovic     XX &                back()                  { return pTail->Obj(); }
99*11c03c6dSDamjan Jovanovic 
empty() const100*11c03c6dSDamjan Jovanovic     bool                empty() const           { return pTop == 0; }
101*11c03c6dSDamjan Jovanovic     uintt               size() const;
102*11c03c6dSDamjan Jovanovic 
103*11c03c6dSDamjan Jovanovic 
104*11c03c6dSDamjan Jovanovic   private:
105*11c03c6dSDamjan Jovanovic     // Forbiddden methods.
106*11c03c6dSDamjan Jovanovic                         SweList(
107*11c03c6dSDamjan Jovanovic                             const self &        i_rList );
108*11c03c6dSDamjan Jovanovic     self &              operator=(
109*11c03c6dSDamjan Jovanovic                             const self &        i_rList );
110*11c03c6dSDamjan Jovanovic 
111*11c03c6dSDamjan Jovanovic     // DATA
112*11c03c6dSDamjan Jovanovic     DYN elem *          pTop;
113*11c03c6dSDamjan Jovanovic     elem *              pTail;
114*11c03c6dSDamjan Jovanovic };
115*11c03c6dSDamjan Jovanovic 
116*11c03c6dSDamjan Jovanovic template <class XX>
117*11c03c6dSDamjan Jovanovic class SweList_dyn
118*11c03c6dSDamjan Jovanovic {
119*11c03c6dSDamjan Jovanovic   public:
120*11c03c6dSDamjan Jovanovic     // TYPES
121*11c03c6dSDamjan Jovanovic     typedef SweList_dyn<XX>         self;
122*11c03c6dSDamjan Jovanovic     typedef SweListElement< XX* >   elem;
123*11c03c6dSDamjan Jovanovic     typedef SweListIterator< XX* >  iterator;
124*11c03c6dSDamjan Jovanovic 
125*11c03c6dSDamjan Jovanovic     // LIFECYCLE
SweList_dyn()126*11c03c6dSDamjan Jovanovic                         SweList_dyn()       : pTop(0), pTail(0) {}
~SweList_dyn()127*11c03c6dSDamjan Jovanovic                         ~SweList_dyn()      { erase_all(); }
128*11c03c6dSDamjan Jovanovic     // OPERATIONS
129*11c03c6dSDamjan Jovanovic     void                push_front(
130*11c03c6dSDamjan Jovanovic                             XX *            i_pObj );
131*11c03c6dSDamjan Jovanovic     void                push_back(
132*11c03c6dSDamjan Jovanovic                             XX *            i_pObj );
133*11c03c6dSDamjan Jovanovic     void                pop_front();
134*11c03c6dSDamjan Jovanovic     void                erase_all();
135*11c03c6dSDamjan Jovanovic 
136*11c03c6dSDamjan Jovanovic     // INQUIRY
begin() const137*11c03c6dSDamjan Jovanovic     iterator            begin() const       { return pTop; }
end() const138*11c03c6dSDamjan Jovanovic     iterator            end() const         { return (elem*)0; }
front() const139*11c03c6dSDamjan Jovanovic     XX *                front() const       { return pTop->Obj(); }
back() const140*11c03c6dSDamjan Jovanovic     XX *                back() const        { return pTail->Obj(); }
141*11c03c6dSDamjan Jovanovic 
empty() const142*11c03c6dSDamjan Jovanovic     bool                empty() const       { return pTop == 0; }
143*11c03c6dSDamjan Jovanovic     uintt               size() const;
144*11c03c6dSDamjan Jovanovic 
145*11c03c6dSDamjan Jovanovic   private:
146*11c03c6dSDamjan Jovanovic     // Forbiddden methods.
147*11c03c6dSDamjan Jovanovic                         SweList_dyn(
148*11c03c6dSDamjan Jovanovic                             const self &        i_rList );
149*11c03c6dSDamjan Jovanovic     self &              operator=(
150*11c03c6dSDamjan Jovanovic                             const self &        i_rList );
151*11c03c6dSDamjan Jovanovic 
152*11c03c6dSDamjan Jovanovic     DYN elem *          pTop;
153*11c03c6dSDamjan Jovanovic     elem *              pTail;
154*11c03c6dSDamjan Jovanovic };
155*11c03c6dSDamjan Jovanovic 
156*11c03c6dSDamjan Jovanovic 
157*11c03c6dSDamjan Jovanovic 
158*11c03c6dSDamjan Jovanovic 
159*11c03c6dSDamjan Jovanovic template<class XX>
160*11c03c6dSDamjan Jovanovic class SweListIterator
161*11c03c6dSDamjan Jovanovic {
162*11c03c6dSDamjan Jovanovic   public:
163*11c03c6dSDamjan Jovanovic     typedef SweListIterator<XX> self;
164*11c03c6dSDamjan Jovanovic     typedef SweListElement<XX>  elem;
165*11c03c6dSDamjan Jovanovic 
SweListIterator(elem * i_pElem=0)166*11c03c6dSDamjan Jovanovic                         SweListIterator(
167*11c03c6dSDamjan Jovanovic                             elem *              i_pElem = 0)
168*11c03c6dSDamjan Jovanovic                                                 :   pElem(i_pElem) { }
169*11c03c6dSDamjan Jovanovic 
170*11c03c6dSDamjan Jovanovic     // OPERATORS
operator *() const171*11c03c6dSDamjan Jovanovic     XX &                operator*() const       { return pElem->Obj(); }
operator ++()172*11c03c6dSDamjan Jovanovic     self &              operator++()            { if (pElem != 0) pElem = pElem->Next();
173*11c03c6dSDamjan Jovanovic                                                   return *this; }
operator ==(const self & i_rIter) const174*11c03c6dSDamjan Jovanovic     bool                operator==(
175*11c03c6dSDamjan Jovanovic                             const self &        i_rIter ) const
176*11c03c6dSDamjan Jovanovic                                                 { return pElem == i_rIter.pElem; }
operator !=(const self & i_rIter) const177*11c03c6dSDamjan Jovanovic     bool                operator!=(
178*11c03c6dSDamjan Jovanovic                             const self &        i_rIter ) const
179*11c03c6dSDamjan Jovanovic                                                 { return pElem != i_rIter.pElem; }
180*11c03c6dSDamjan Jovanovic   private:
181*11c03c6dSDamjan Jovanovic     friend class SweListCIterator<XX>;
182*11c03c6dSDamjan Jovanovic 
183*11c03c6dSDamjan Jovanovic     elem *              pElem;
184*11c03c6dSDamjan Jovanovic };
185*11c03c6dSDamjan Jovanovic 
186*11c03c6dSDamjan Jovanovic template<class XX>
187*11c03c6dSDamjan Jovanovic class SweListCIterator
188*11c03c6dSDamjan Jovanovic {
189*11c03c6dSDamjan Jovanovic   public:
190*11c03c6dSDamjan Jovanovic     typedef SweListCIterator<XX> self;
191*11c03c6dSDamjan Jovanovic     typedef SweListElement<XX>  elem;
192*11c03c6dSDamjan Jovanovic 
SweListCIterator(const elem * i_pElem=0)193*11c03c6dSDamjan Jovanovic                         SweListCIterator(
194*11c03c6dSDamjan Jovanovic                             const elem *        i_pElem = 0)
195*11c03c6dSDamjan Jovanovic                                                 :   pElem(i_pElem) { }
196*11c03c6dSDamjan Jovanovic 
197*11c03c6dSDamjan Jovanovic     // OPERATORS
operator =(const SweListIterator<XX> & i_rIter)198*11c03c6dSDamjan Jovanovic     self &              operator=(
199*11c03c6dSDamjan Jovanovic                             const SweListIterator<XX> &
200*11c03c6dSDamjan Jovanovic                                                 i_rIter )
201*11c03c6dSDamjan Jovanovic                                                 { pElem = i_rIter.pElem; return *this; }
202*11c03c6dSDamjan Jovanovic 
operator *() const203*11c03c6dSDamjan Jovanovic     const XX &          operator*() const       { return pElem->Obj(); }
operator ++()204*11c03c6dSDamjan Jovanovic     self &              operator++()            { if (pElem != 0) pElem = pElem->Next();
205*11c03c6dSDamjan Jovanovic                                                   return *this; }
operator ==(const self & i_rIter) const206*11c03c6dSDamjan Jovanovic     bool                operator==(
207*11c03c6dSDamjan Jovanovic                             const self &        i_rIter ) const
208*11c03c6dSDamjan Jovanovic                                                 { return pElem == i_rIter.pElem; }
operator !=(const self & i_rIter) const209*11c03c6dSDamjan Jovanovic     bool                operator!=(
210*11c03c6dSDamjan Jovanovic                             const self &        i_rIter ) const
211*11c03c6dSDamjan Jovanovic                                                 { return pElem != i_rIter.pElem; }
212*11c03c6dSDamjan Jovanovic   private:
213*11c03c6dSDamjan Jovanovic     const elem *        pElem;
214*11c03c6dSDamjan Jovanovic };
215*11c03c6dSDamjan Jovanovic 
216*11c03c6dSDamjan Jovanovic // Implementierung
217*11c03c6dSDamjan Jovanovic 
218*11c03c6dSDamjan Jovanovic template <class XX>
219*11c03c6dSDamjan Jovanovic void
push_front(const XX & i_aObj)220*11c03c6dSDamjan Jovanovic SweList<XX>::push_front( const XX & i_aObj )
221*11c03c6dSDamjan Jovanovic {
222*11c03c6dSDamjan Jovanovic     DYN elem * dpNew = new elem(i_aObj);
223*11c03c6dSDamjan Jovanovic     dpNew->SetNext(pTop);
224*11c03c6dSDamjan Jovanovic     pTop = dpNew;
225*11c03c6dSDamjan Jovanovic     if (pTail == 0)
226*11c03c6dSDamjan Jovanovic         pTail = pTop;
227*11c03c6dSDamjan Jovanovic }
228*11c03c6dSDamjan Jovanovic 
229*11c03c6dSDamjan Jovanovic template <class XX>
230*11c03c6dSDamjan Jovanovic void
push_back(const XX & i_aObj)231*11c03c6dSDamjan Jovanovic SweList<XX>::push_back( const XX & i_aObj)
232*11c03c6dSDamjan Jovanovic {
233*11c03c6dSDamjan Jovanovic     if (pTail != 0)
234*11c03c6dSDamjan Jovanovic     {
235*11c03c6dSDamjan Jovanovic         pTail->SetNext(new elem(i_aObj));
236*11c03c6dSDamjan Jovanovic         pTail = pTail->Next();
237*11c03c6dSDamjan Jovanovic     }
238*11c03c6dSDamjan Jovanovic     else
239*11c03c6dSDamjan Jovanovic     {
240*11c03c6dSDamjan Jovanovic         pTop = pTail = new elem(i_aObj);
241*11c03c6dSDamjan Jovanovic     }
242*11c03c6dSDamjan Jovanovic }
243*11c03c6dSDamjan Jovanovic 
244*11c03c6dSDamjan Jovanovic template <class XX>
245*11c03c6dSDamjan Jovanovic void
pop_front()246*11c03c6dSDamjan Jovanovic SweList<XX>::pop_front()
247*11c03c6dSDamjan Jovanovic {
248*11c03c6dSDamjan Jovanovic     if (pTop != 0)
249*11c03c6dSDamjan Jovanovic     {
250*11c03c6dSDamjan Jovanovic         elem * pDel = pTop;
251*11c03c6dSDamjan Jovanovic         pTop = pTop->Next();
252*11c03c6dSDamjan Jovanovic         delete pDel;
253*11c03c6dSDamjan Jovanovic         if (pTop == 0)
254*11c03c6dSDamjan Jovanovic             pTail = 0;
255*11c03c6dSDamjan Jovanovic     }
256*11c03c6dSDamjan Jovanovic }
257*11c03c6dSDamjan Jovanovic 
258*11c03c6dSDamjan Jovanovic template <class XX>
259*11c03c6dSDamjan Jovanovic uintt
size() const260*11c03c6dSDamjan Jovanovic SweList<XX>::size() const
261*11c03c6dSDamjan Jovanovic {
262*11c03c6dSDamjan Jovanovic     uintt ret = 0;
263*11c03c6dSDamjan Jovanovic     for ( const_iterator iter = begin();
264*11c03c6dSDamjan Jovanovic           iter != end();
265*11c03c6dSDamjan Jovanovic           ++iter )
266*11c03c6dSDamjan Jovanovic     {
267*11c03c6dSDamjan Jovanovic         ++ret;
268*11c03c6dSDamjan Jovanovic     }
269*11c03c6dSDamjan Jovanovic     return ret;
270*11c03c6dSDamjan Jovanovic }
271*11c03c6dSDamjan Jovanovic 
272*11c03c6dSDamjan Jovanovic 
273*11c03c6dSDamjan Jovanovic template <class XX>
274*11c03c6dSDamjan Jovanovic void
erase_all()275*11c03c6dSDamjan Jovanovic SweList<XX>::erase_all()
276*11c03c6dSDamjan Jovanovic {
277*11c03c6dSDamjan Jovanovic     for (pTail = pTop ; pTop != 0; pTail = pTop)
278*11c03c6dSDamjan Jovanovic     {
279*11c03c6dSDamjan Jovanovic         pTop = pTop->Next();
280*11c03c6dSDamjan Jovanovic         delete pTail;
281*11c03c6dSDamjan Jovanovic     }
282*11c03c6dSDamjan Jovanovic     pTop = pTail = 0;
283*11c03c6dSDamjan Jovanovic }
284*11c03c6dSDamjan Jovanovic 
285*11c03c6dSDamjan Jovanovic 
286*11c03c6dSDamjan Jovanovic template <class XX>
287*11c03c6dSDamjan Jovanovic void
push_front(XX * i_pObj)288*11c03c6dSDamjan Jovanovic SweList_dyn<XX>::push_front( XX * i_pObj )
289*11c03c6dSDamjan Jovanovic {
290*11c03c6dSDamjan Jovanovic     DYN elem * dpNew = new elem(i_pObj);
291*11c03c6dSDamjan Jovanovic     dpNew->SetNext(pTop);
292*11c03c6dSDamjan Jovanovic     pTop = dpNew;
293*11c03c6dSDamjan Jovanovic     if (pTail == 0)
294*11c03c6dSDamjan Jovanovic         pTail = pTop;
295*11c03c6dSDamjan Jovanovic }
296*11c03c6dSDamjan Jovanovic 
297*11c03c6dSDamjan Jovanovic template <class XX>
298*11c03c6dSDamjan Jovanovic void
push_back(XX * i_pObj)299*11c03c6dSDamjan Jovanovic SweList_dyn<XX>::push_back( XX * i_pObj )
300*11c03c6dSDamjan Jovanovic {
301*11c03c6dSDamjan Jovanovic     if (pTail != 0)
302*11c03c6dSDamjan Jovanovic     {
303*11c03c6dSDamjan Jovanovic         pTail->SetNext(new elem(i_pObj));
304*11c03c6dSDamjan Jovanovic         pTail = pTail->Next();
305*11c03c6dSDamjan Jovanovic     }
306*11c03c6dSDamjan Jovanovic     else
307*11c03c6dSDamjan Jovanovic     {
308*11c03c6dSDamjan Jovanovic         pTop = pTail = new elem(i_pObj);
309*11c03c6dSDamjan Jovanovic     }
310*11c03c6dSDamjan Jovanovic }
311*11c03c6dSDamjan Jovanovic 
312*11c03c6dSDamjan Jovanovic template <class XX>
313*11c03c6dSDamjan Jovanovic void
pop_front()314*11c03c6dSDamjan Jovanovic SweList_dyn<XX>::pop_front()
315*11c03c6dSDamjan Jovanovic {
316*11c03c6dSDamjan Jovanovic     if (pTop != 0)
317*11c03c6dSDamjan Jovanovic     {
318*11c03c6dSDamjan Jovanovic         elem * pDel = pTop;
319*11c03c6dSDamjan Jovanovic         pTop = pTop->Next();
320*11c03c6dSDamjan Jovanovic         if (pDel->Obj() != 0)
321*11c03c6dSDamjan Jovanovic             Delete_dyn(pDel->Obj());
322*11c03c6dSDamjan Jovanovic         delete pDel;
323*11c03c6dSDamjan Jovanovic         if (pTop == 0)
324*11c03c6dSDamjan Jovanovic             pTail = 0;
325*11c03c6dSDamjan Jovanovic     }
326*11c03c6dSDamjan Jovanovic }
327*11c03c6dSDamjan Jovanovic 
328*11c03c6dSDamjan Jovanovic 
329*11c03c6dSDamjan Jovanovic template <class XX>
330*11c03c6dSDamjan Jovanovic void
erase_all()331*11c03c6dSDamjan Jovanovic SweList_dyn<XX>::erase_all()
332*11c03c6dSDamjan Jovanovic {
333*11c03c6dSDamjan Jovanovic     for (pTail = pTop ; pTop != 0; pTail = pTop)
334*11c03c6dSDamjan Jovanovic     {
335*11c03c6dSDamjan Jovanovic         pTop = pTop->Next();
336*11c03c6dSDamjan Jovanovic         if (pTail->Obj() != 0)
337*11c03c6dSDamjan Jovanovic         {
338*11c03c6dSDamjan Jovanovic             delete pTail->Obj();
339*11c03c6dSDamjan Jovanovic         }
340*11c03c6dSDamjan Jovanovic         delete pTail;
341*11c03c6dSDamjan Jovanovic     }
342*11c03c6dSDamjan Jovanovic     pTop = pTail = 0;
343*11c03c6dSDamjan Jovanovic }
344*11c03c6dSDamjan Jovanovic 
345*11c03c6dSDamjan Jovanovic template <class XX>
346*11c03c6dSDamjan Jovanovic uintt
size() const347*11c03c6dSDamjan Jovanovic SweList_dyn<XX>::size() const
348*11c03c6dSDamjan Jovanovic {
349*11c03c6dSDamjan Jovanovic     uintt ret = 0;
350*11c03c6dSDamjan Jovanovic     for ( iterator iter = begin();
351*11c03c6dSDamjan Jovanovic           iter != end();
352*11c03c6dSDamjan Jovanovic           ++iter )
353*11c03c6dSDamjan Jovanovic     {
354*11c03c6dSDamjan Jovanovic         ++ret;
355*11c03c6dSDamjan Jovanovic     }
356*11c03c6dSDamjan Jovanovic     return ret;
357*11c03c6dSDamjan Jovanovic }
358*11c03c6dSDamjan Jovanovic 
359*11c03c6dSDamjan Jovanovic 
360*11c03c6dSDamjan Jovanovic }   // namespace csv
361*11c03c6dSDamjan Jovanovic 
362*11c03c6dSDamjan Jovanovic 
363*11c03c6dSDamjan Jovanovic #endif
364