19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1998 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_BITSET 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This implementation of bitset<> has a second template parameter, 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// _WordT, which defaults to unsigned long. *YOU SHOULD NOT USE 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// THIS FEATURE*. It is experimental, and it may be removed in 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// future releases. 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// A bitset of size N, using words of type _WordT, will have 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// N % (sizeof(_WordT) * CHAR_BIT) unused bits. (They are the high- 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// order bits in the highest word.) It is a class invariant 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// of class bitset<> that those unused bits are always zero. 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Most of the actual code isn't contained in bitset<> itself, but in the 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// base class _Base_bitset. The base class works with whole words, not with 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// individual bits. This allows us to specialize _Base_bitset for the 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// important special case where the bitset is only a single word. 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// The C++ standard does not define the precise semantics of operator[]. 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// In this implementation the const version of operator[] is equivalent 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// to test(), except that it does no range checking. The non-const version 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// returns a reference to a bit, again without doing any range checking. 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_OUTERMOST_HEADER_ID 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_OUTERMOST_HEADER_ID 0x2 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_prolog.h> 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define _STLP_BITSET 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if (_STLP_OUTERMOST_HEADER_ID == 0x2) 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# ifndef _STLP_INTERNAL_BITSET 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include <stl/_bitset.h> 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if (_STLP_OUTERMOST_HEADER_ID != 0x2) || defined (_STLP_IMPORT_VENDOR_STD) 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_HAS_INCLUDE_NEXT) 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include_next <bitset> 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# else 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include _STLP_NATIVE_HEADER(bitset) 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if (_STLP_OUTERMOST_HEADER_ID == 0x2 ) 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_epilog.h> 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# undef _STLP_OUTERMOST_HEADER_ID 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_BITSET */ 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 71