Home | History | Annotate | Download | only in stlport
      1 /*
      2  * Copyright (c) 1998
      3  * Silicon Graphics Computer Systems, Inc.
      4  *
      5  * Copyright (c) 1999
      6  * Boris Fomitchev
      7  *
      8  * This material is provided "as is", with absolutely no warranty expressed
      9  * or implied. Any use is at your own risk.
     10  *
     11  * Permission to use or copy this software for any purpose is hereby granted
     12  * without fee, provided the above notices are retained on all copies.
     13  * Permission to modify the code and to distribute modified code is granted,
     14  * provided the above notices are retained, and a notice that the code was
     15  * modified is included with the above copyright notice.
     16  *
     17  */
     18 
     19 #ifndef _STLP_BITSET
     20 
     21 // This implementation of bitset<> has a second template parameter,
     22 // _WordT, which defaults to unsigned long.  *YOU SHOULD NOT USE
     23 // THIS FEATURE*.  It is experimental, and it may be removed in
     24 // future releases.
     25 
     26 // A bitset of size N, using words of type _WordT, will have
     27 // N % (sizeof(_WordT) * CHAR_BIT) unused bits.  (They are the high-
     28 // order bits in the highest word.)  It is a class invariant
     29 // of class bitset<> that those unused bits are always zero.
     30 
     31 // Most of the actual code isn't contained in bitset<> itself, but in the
     32 // base class _Base_bitset.  The base class works with whole words, not with
     33 // individual bits.  This allows us to specialize _Base_bitset for the
     34 // important special case where the bitset is only a single word.
     35 
     36 // The C++ standard does not define the precise semantics of operator[].
     37 // In this implementation the const version of operator[] is equivalent
     38 // to test(), except that it does no range checking.  The non-const version
     39 // returns a reference to a bit, again without doing any range checking.
     40 
     41 #ifndef _STLP_OUTERMOST_HEADER_ID
     42 #  define _STLP_OUTERMOST_HEADER_ID 0x2
     43 #  include <stl/_prolog.h>
     44 #  define _STLP_BITSET
     45 #endif
     46 
     47 #if (_STLP_OUTERMOST_HEADER_ID == 0x2)
     48 #  ifndef _STLP_INTERNAL_BITSET
     49 #    include <stl/_bitset.h>
     50 #  endif
     51 #endif
     52 
     53 #if (_STLP_OUTERMOST_HEADER_ID != 0x2) || defined (_STLP_IMPORT_VENDOR_STD)
     54 #  if defined (_STLP_HAS_INCLUDE_NEXT)
     55 #    include_next <bitset>
     56 #  else
     57 #    include _STLP_NATIVE_HEADER(bitset)
     58 #  endif
     59 #endif
     60 
     61 #if (_STLP_OUTERMOST_HEADER_ID == 0x2 )
     62 #  include <stl/_epilog.h>
     63 #  undef _STLP_OUTERMOST_HEADER_ID
     64 #endif
     65 
     66 #endif /* _STLP_BITSET */
     67 
     68 // Local Variables:
     69 // mode:C++
     70 // End:
     71