LCOV - code coverage report
Current view: directory - cygdrive/c/program files/microsoft visual studio 9.0/vc/include - stack (source / functions) Found Hit Coverage
Test: coverage.lcov Lines: 14 0 0.0 %
Date: 2014-09-25 Functions: 0 0 -

       1                 : // stack standard header

       2                 : #pragma once
       3                 : #ifndef _STACK_
       4                 : #define _STACK_
       5                 : #ifndef RC_INVOKED
       6                 : #include <deque>
       7                 : 
       8                 : #ifdef _MSC_VER
       9                 :  #pragma pack(push,_CRT_PACKING)
      10                 :  #pragma warning(push,3)
      11                 : #endif  /* _MSC_VER */
      12                 : _STD_BEGIN
      13                 : 
      14                 :                 // TEMPLATE CLASS stack
      15                 : template<class _Ty,
      16                 :         class _Container = deque<_Ty> >
      17                 :         class stack
      18                 :         {       // LIFO queue implemented with a container
      19                 : public:
      20                 :         typedef _Container container_type;
      21                 :         typedef typename _Container::value_type value_type;
      22                 :         typedef typename _Container::size_type size_type;
      23                 :         typedef typename _Container::reference reference;
      24                 :         typedef typename _Container::const_reference const_reference;
      25                 : 
      26                 :         stack()
      27                 :                 : c()
      28               0 :                 {       // construct with empty container

      29               0 :                 }

      30                 : 
      31                 :         explicit stack(const _Container& _Cont)
      32                 :                 : c(_Cont)
      33                 :                 {       // construct by copying specified container
      34                 :                 }
      35                 : 
      36                 :         bool empty() const
      37                 :                 {       // test if stack is empty
      38                 :                 return (c.empty());
      39                 :                 }
      40                 : 
      41                 :         size_type size() const
      42               0 :                 {       // test length of stack

      43               0 :                 return (c.size());

      44               0 :                 }

      45                 : 
      46                 :         reference top()
      47               0 :                 {       // return last element of mutable stack

      48               0 :                 return (c.back());

      49               0 :                 }

      50                 : 
      51                 :         const_reference top() const
      52                 :                 {       // return last element of nonmutable stack
      53                 :                 return (c.back());
      54                 :                 }
      55                 : 
      56                 :         void push(const value_type& _Val)
      57               0 :                 {       // insert element at end

      58               0 :                 c.push_back(_Val);

      59               0 :                 }

      60                 : 
      61                 :         void pop()
      62               0 :                 {       // erase last element

      63               0 :                 c.pop_back();

      64               0 :                 }

      65                 : 
      66                 :         const _Container& _Get_container() const
      67                 :                 {       // get reference to container
      68                 :                 return (c);
      69                 :                 }
      70                 : 
      71                 : protected:
      72                 :         _Container c;   // the underlying container
      73                 :         };
      74                 : 
      75                 :                 // stack TEMPLATE FUNCTIONS
      76                 : template<class _Ty,
      77                 :         class _Container> inline
      78                 :         bool operator==(const stack<_Ty, _Container>& _Left,
      79                 :                 const stack<_Ty, _Container>& _Right)
      80                 :         {       // test for stack equality
      81                 :         return (_Left._Get_container() == _Right._Get_container());
      82                 :         }
      83                 : 
      84                 : template<class _Ty,
      85                 :         class _Container> inline
      86                 :         bool operator!=(const stack<_Ty, _Container>& _Left,
      87                 :                 const stack<_Ty, _Container>& _Right)
      88                 :         {       // test for stack inequality
      89                 :         return (!(_Left == _Right));
      90                 :         }
      91                 : 
      92                 : template<class _Ty,
      93                 :         class _Container> inline
      94                 :         bool operator<(const stack<_Ty, _Container>& _Left,
      95                 :                 const stack<_Ty, _Container>& _Right)
      96                 :         {       // test if _Left < _Right for stacks
      97                 :         return (_Left._Get_container() < _Right._Get_container());
      98                 :         }
      99                 : 
     100                 : template<class _Ty,
     101                 :         class _Container> inline
     102                 :         bool operator>(const stack<_Ty, _Container>& _Left,
     103                 :                 const stack<_Ty, _Container>& _Right)
     104                 :         {       // test if _Left > _Right for stacks
     105                 :         return (_Right < _Left);
     106                 :         }
     107                 : 
     108                 : template<class _Ty,
     109                 :         class _Container> inline
     110                 :         bool operator<=(const stack<_Ty, _Container>& _Left,
     111                 :                 const stack<_Ty, _Container>& _Right)
     112                 :         {       // test if _Left <= _Right for stacks
     113                 :         return (!(_Right < _Left));
     114                 :         }
     115                 : 
     116                 : template<class _Ty,
     117                 :         class _Container> inline
     118                 :         bool operator>=(const stack<_Ty, _Container>& _Left,
     119                 :                 const stack<_Ty, _Container>& _Right)
     120                 :         {       // test if _Left >= _Right for stacks
     121                 :         return (!(_Left < _Right));
     122                 :         }
     123                 : _STD_END
     124                 : 
     125                 : #ifdef _MSC_VER
     126                 :  #pragma warning(pop)
     127                 :  #pragma pack(pop)
     128                 : #endif  /* _MSC_VER */
     129                 : 
     130                 : #endif /* RC_INVOKED */
     131                 : #endif /* _STACK_ */
     132                 : 
     133                 : /*
     134                 :  * Copyright (c) 1992-2006 by P.J. Plauger.  ALL RIGHTS RESERVED.
     135                 :  * Consult your license regarding permissions and restrictions.
     136                 :  */
     137                 : 
     138                 : /*
     139                 :  * This file is derived from software bearing the following
     140                 :  * restrictions:
     141                 :  *
     142                 :  * Copyright (c) 1994
     143                 :  * Hewlett-Packard Company
     144                 :  *
     145                 :  * Permission to use, copy, modify, distribute and sell this
     146                 :  * software and its documentation for any purpose is hereby
     147                 :  * granted without fee, provided that the above copyright notice
     148                 :  * appear in all copies and that both that copyright notice and
     149                 :  * this permission notice appear in supporting documentation.
     150                 :  * Hewlett-Packard Company makes no representations about the
     151                 :  * suitability of this software for any purpose. It is provided
     152                 :  * "as is" without express or implied warranty.
     153                 :  V5.02:0009 */

Generated by: LCOV version 1.7