LTP GCOV extension - code coverage report
Current view: directory - src/cpp/prod/tool - SList.h
Test: YAORB-0.2.info
Date: 2006-02-27 Instrumented lines: 17
Code covered: 100.0 % Executed lines: 17

       1                 : //=============================================================================
       2                 : // File <$/src/cpp/prod/tool/SList.h>
       3                 : // This file is part of YaOrb : Yet Another Object Request Broker,
       4                 : // Copyright (c) 2000-2003, Marc Alff.
       5                 : //
       6                 : // This program is free software; you can redistribute it and/or
       7                 : // modify it under the terms of the GNU General Public License
       8                 : // as published by the Free Software Foundation; either version 2
       9                 : // of the License, or (at your option) any later version.
      10                 : //
      11                 : // This program is distributed in the hope that it will be useful,
      12                 : // but WITHOUT ANY WARRANTY; without even the implied warranty of
      13                 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14                 : // GNU General Public License for more details.
      15                 : //
      16                 : // You should have received a copy of the GNU General Public License
      17                 : // along with this program; if not, write to the Free Software
      18                 : // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
      19                 : //
      20                 : //=============================================================================
      21                 : 
      22                 : #ifndef SLIST_H
      23                 : #define SLIST_H
      24                 : 
      25                 : class SListIterator ;
      26                 : 
      27                 : class SListItem
      28                 : {
      29                 :    friend class SList ;
      30                 :    friend class SListIterator ;
      31                 : 
      32                 :    private :
      33                 :       SListItem() ;
      34                 :       SListItem(void *anObj) ;
      35                 :       ~SListItem() ;
      36                 : 
      37                 :    private : // Denied
      38                 :       SListItem(const SListItem&) ;
      39                 :       SListItem& operator=(const SListItem&) ;
      40                 : 
      41                 :    private :
      42                 :       SListItem *_next ;
      43                 :       void *_item ;
      44                 : 
      45                 : } ;
      46                 : 
      47                 : class SList
      48                 : {
      49                 :    friend class SListIterator ;
      50                 : 
      51                 :    public :
      52                 :       SList() ;
      53                 :       SList(void *anObj) ;
      54                 :       ~SList() ;
      55                 : 
      56                 :       int size() const ;
      57                 :       bool isEmpty() const ;
      58                 : 
      59                 :       void addHead(void *anObj) ;
      60                 :       void addTail(void *anObj) ;
      61                 : 
      62                 :       void appendAndClear(SList& aList) ;
      63                 : 
      64                 :       void *head() const ;
      65                 :       void *tail() const ;
      66                 : 
      67                 :       void *removeHead() ;
      68                 :       void *removeTail() ;
      69                 : 
      70                 :       void removeObject(void *anObj) ;
      71                 : 
      72                 :       void clear() ;
      73                 : 
      74                 :       SList& operator=(const SList&) ;
      75                 : 
      76                 :    private : // Denied
      77                 :       SList(const SList&) ;
      78                 : 
      79                 :    private :
      80                 :       SListItem *_head ;
      81                 :       SListItem *_tail ;
      82                 :       int _size ;
      83                 : } ;
      84                 : 
      85                 : class SListIterator
      86                 : {
      87                 :    public :
      88                 :       SListIterator (const SList& aList) ;
      89                 :       virtual ~SListIterator () ;
      90                 : 
      91                 :       bool GetNext() ;
      92                 :       void *GetItem(void) const ;
      93                 : 
      94                 :    private :
      95                 :       const SListItem *_cursor ;
      96                 :       const SListItem *_process ;
      97                 : 
      98                 :    private : // Denied
      99                 :       SListIterator() ;
     100                 :       SListIterator(const SListIterator& ) ;
     101                 :       SListIterator & operator=(const SListIterator& ) ;
     102                 : } ;
     103                 : 
     104                 : template <class T> class TSListIterator ;
     105                 : 
     106                 : template <class T>
     107                 : class TSList
     108                 : {
     109                 :    friend class TSListIterator<T> ;
     110                 : 
     111                 :    private :
     112                 :       SList L ;
     113                 : 
     114                 :    public :
     115           18238 :       TSList () : L()
     116                 :       {}
     117                 : 
     118            4865 :       TSList (T *anObj) : L(anObj)
     119                 :       {}
     120                 : 
     121                 :       ~TSList ()
     122            4429 :       {}
     123                 : 
     124                 :       int size() const
     125           13621 :       { return L.size() ; }
     126                 : 
     127                 :       bool isEmpty() const
     128               3 :       { return L.isEmpty() ; }
     129                 : 
     130                 :       void addHead(T *anObj)
     131                 :       { L.addHead(anObj) ; }
     132                 : 
     133                 :       void addTail(T *anObj)
     134           41106 :       { L.addTail(anObj) ; }
     135                 : 
     136                 :       void appendAndClear(TSList<T>& aList)
     137                 :       { L.appendAndClear(aList.L) ; }
     138                 : 
     139                 :       T *head() const
     140            9356 :       { return (T*) L.head() ; }
     141                 : 
     142                 :       T *tail() const
     143                 :       { return (T*) L.tail() ; }
     144                 : 
     145                 :       T* removeHead()
     146            1498 :       { return (T*) L.removeHead() ; }
     147                 : 
     148                 :       T* removeTail()
     149                 :       { return (T*) L.removeTail() ; }
     150                 : 
     151                 :       void removeObject(T *anObj)
     152             476 :       { L.removeObject(anObj) ; }
     153                 : 
     154                 :       void clear()
     155           22453 :       { L.clear() ; }
     156                 : 
     157                 :       void clearAndDestroy()
     158                 :       {
     159                 :          TSListIterator<T> I(*this) ;
     160           41162 :          while (I.GetNext())
     161                 :          {
     162           24909 :             delete I.GetItem() ;
     163                 :          }
     164                 :          clear() ;
     165                 :       }
     166                 : 
     167                 :       TSList& operator=(const TSList<T>& L2)
     168                 :       {
     169              63 :          L = L2.L ;
     170                 :          return *this ;
     171                 :       }
     172                 : 
     173                 :    private : // Denied
     174                 :       TSList(const TSList<T>&) ;
     175                 : 
     176                 : } ;
     177                 : 
     178                 : template <class T>
     179                 : class TSListIterator
     180                 : {
     181                 :    private :
     182                 :       SListIterator I ;
     183                 : 
     184                 :    public :
     185           63281 :       TSListIterator (const TSList<T> & L) : I(L.L)
     186                 :       {}
     187                 : 
     188                 :       ~TSListIterator ()
     189           20718 :       {}
     190                 : 
     191                 :       bool GetNext()
     192          801622 :       { return I.GetNext() ; }
     193                 : 
     194                 :       T *GetItem()
     195          749231 :       { return (T*) I.GetItem() ; }
     196                 : 
     197                 :    private : // Denied
     198                 :       TSListIterator () ;
     199                 :       TSListIterator (const TSListIterator<T> & ) ;
     200                 :       TSListIterator & operator=(const TSListIterator<T> & ) ;
     201                 : } ;
     202                 : 
     203                 : #endif
     204                 : 

Generated by: LTP GCOV extension version 1.4