From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16236 invoked by alias); 21 May 2003 07:26:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 16114 invoked by uid 71); 21 May 2003 07:26:00 -0000 Resent-Date: 21 May 2003 07:26:00 -0000 Resent-Message-ID: <20030521072600.16112.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, kritika_d@rediffmail.com, archiek@rediffmail.com Resent-Reply-To: gcc-gnats@gcc.gnu.org, hajira_a1@rediffmail.com Received: (qmail 11130 invoked by uid 48); 21 May 2003 07:23:27 -0000 Message-Id: <20030521072327.11129.qmail@sources.redhat.com> Date: Wed, 21 May 2003 07:26:00 -0000 From: hajira_a1@rediffmail.com Reply-To: hajira_a1@rediffmail.com To: gcc-gnats@gcc.gnu.org Cc: kritika_d@rediffmail.com, archiek@rediffmail.com X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) X-GNATS-Notify: kritika_d@rediffmail.com,archiek@rediffmail.com Subject: c++/10898: Unable to compile c++ program containing Rogue Wave usage using gcc 3.2 X-SW-Source: 2003-05/txt/msg02236.txt.bz2 List-Id: >Number: 10898 >Category: c++ >Synopsis: Unable to compile c++ program containing Rogue Wave usage using gcc 3.2 >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed May 21 07:26:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Kritika Dorairaj >Release: gcc 3.2 >Organization: >Environment: HP-UX itanium2 B.11.22 U ia64 3300317291 >Description: >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/plain; name="param.ii" Content-Disposition: inline; filename="param.ii" # 1 "param.C" # 1 "" # 1 "" # 1 "param.C" # 15 "param.C" # 1 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" 1 # 328 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" # 1 "/home/hak/hak/filesx/usr/rogue/rw/tooldefs.h" 1 # 185 "/home/hak/hak/filesx/usr/rogue/rw/tooldefs.h" # 1 "/home/hak/hak/filesx/usr/rogue/rw/defs.h" 1 # 310 "/home/hak/hak/filesx/usr/rogue/rw/defs.h" # 1 "/home/hak/hak/filesx/usr/rogue/rw/compiler.h" 1 # 311 "/home/hak/hak/filesx/usr/rogue/rw/defs.h" 2 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stddef.h" 1 3 4 # 147 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stddef.h" 3 4 typedef long int ptrdiff_t; # 201 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stddef.h" 3 4 typedef long unsigned int size_t; # 315 "/home/hak/hak/filesx/usr/rogue/rw/defs.h" 2 # 328 "/home/hak/hak/filesx/usr/rogue/rw/defs.h" typedef int RWBoolean; # 509 "/home/hak/hak/filesx/usr/rogue/rw/defs.h" typedef unsigned char RWByte; typedef unsigned short RWClassID; typedef unsigned short RWErrNo; typedef long RWoffset; # 523 "/home/hak/hak/filesx/usr/rogue/rw/defs.h" class RWSize_T { public: RWSize_T(size_t n) : N_(n) {;} size_t value() const {return N_;} private: size_t N_; }; class RWCS_T { public: RWCS_T(const char * str) : str_(str) {;} const char* value() const {return str_;} private: const char* str_; }; enum RWUninitialized { rwUninitialized }; enum RWSeverity {RWWARNING, RWDEFAULT, RWFATAL}; const RWErrNo RWSUCCESS = 0; const size_t RWDEFAULT_CAPACITY = 64; const size_t RWDEFAULT_RESIZE = 64; const size_t RWBITSPERBYTE = 8; const size_t RW_NPOS = ~(size_t)0; inline double rwmax(double a, double b) {return a>b? a : b;} inline double rwmin(double a, double b) {return ab? a : b;} inline int rwmin(int a, int b) {return ab? a : b;} inline unsigned rwmin(unsigned a, unsigned b) {return ab? a : b;} inline unsigned long rwmin(unsigned long a, unsigned long b) {return a>3); } # 329 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" 2 # 1 "/home/hak/hak/filesx/usr/rogue/rw/ref.h" 1 # 110 "/home/hak/hak/filesx/usr/rogue/rw/ref.h" class RWMutex; class RWReference { protected: unsigned refs_; public: enum RWReferenceFlag { STATIC_INIT }; RWReference(int initRef = 0) : refs_((unsigned)initRef-1) { } RWReference(RWReferenceFlag) { } unsigned references() const {return refs_+1;} void setRefCount(unsigned r) {refs_ = r-1;} void addReference() {refs_++;} unsigned removeReference() {return refs_--;} }; # 330 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" 2 # 342 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 1 3 4 # 15 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/stdsyms.h" 1 3 4 # 16 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 2 3 4 # 1 "/usr/include/sys/_inttypes.h" 1 3 4 # 104 "/usr/include/sys/_inttypes.h" 3 4 typedef signed char int8_t; typedef unsigned char uint8_t; typedef short int16_t; typedef unsigned short uint16_t; typedef int int32_t; typedef unsigned int uint32_t; typedef int intfast_t; typedef unsigned int uintfast_t; # 132 "/usr/include/sys/_inttypes.h" 3 4 typedef int32_t intmax_t; typedef uint32_t uintmax_t; typedef long intptr_t; typedef unsigned long uintptr_t; # 149 "/usr/include/sys/_inttypes.h" 3 4 typedef char int_least8_t; typedef unsigned char uint_least8_t; typedef int int_fast8_t; typedef unsigned int uint_fast8_t; typedef short int_least16_t; typedef unsigned short uint_least16_t; typedef int int_fast16_t; typedef unsigned int uint_fast16_t; typedef int int_least32_t; typedef unsigned int uint_least32_t; typedef int int_fast32_t; typedef unsigned int uint_fast32_t; # 214 "/usr/include/sys/_inttypes.h" 3 4 typedef uint32_t ptr32_t; # 18 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 2 3 4 # 26 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 extern "C" { # 1 "/usr/include/sys/_null.h" 1 3 4 # 33 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 2 3 4 # 1 "/usr/include/sys/_size_t.h" 1 3 4 # 41 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 2 3 4 #pragma builtin_milli memcmp, strncat, strncmp, memmove, strcpy #pragma builtin_milli strncpy, strcat, strcmp, strchr, strrchr, strstr #pragma builtin strpbrk, strcoll, strxfrm, strtok #pragma extern memcmp, strncat, strncmp, memmove, strcpy, strncpy, strcat #pragma extern strcmp, strcoll, strxfrm, strchr, strpbrk, strrchr, strstr #pragma extern strtok, strerror # 90 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 extern int memcmp(const void *, const void *, size_t); extern char *strncat(char *, const char *, size_t); extern int strncmp(const char *, const char *, size_t); extern void *memmove(void *, const void *, size_t); extern char *strcpy(char *, const char *); extern char *strncpy(char *, const char *, size_t); extern char *strcat(char *, const char *); extern int strcmp(const char *, const char *); extern int strcoll(const char *, const char *); extern size_t strxfrm(char *, const char *, size_t); extern char *strchr(const char *, int); extern char *strpbrk(const char *, const char *); extern char *strrchr(const char *, int); extern char *strstr(const char *, const char *); extern char *strtok(char *, const char *); extern char *strerror(int); # 185 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 #pragma builtin_milli memchr, memcpy, memset, strcspn, strlen #pragma extern memcpy, memchr, memset, strcspn, strspn, strlen # 230 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 extern void *memcpy(void *, const void *, size_t); extern void *memchr(const void *, int, size_t); extern void *memset(void *, int, size_t); extern size_t strcspn(const char *, const char *); extern size_t strspn(const char *, const char *); extern size_t strlen(const char *); # 282 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 #pragma builtin_milli memccpy #pragma extern memccpy # 297 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 extern void *memccpy(void *, const void *, int, size_t); # 323 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 #pragma builtin strdup #pragma extern strdup # 335 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 extern char *strdup(const char *); # 344 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 #pragma builtin strcasecmp, strncasecmp #pragma extern strrstr, strcasecmp, strncasecmp # 365 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 extern char *strrstr(const char *, const char *); extern int strcasecmp(const char *, const char *); extern int strncasecmp(const char *, const char *, size_t); # 376 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/string.h" 3 4 } # 344 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" 2 class RWCRegexp; class RWCString; class RWCSubString; # 374 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" class RWCStringRef : public RWReference { static RWCStringRef* getRep(size_t capac, size_t nchar); void unLink(); size_t length () const {return nchars_;} size_t capacity () const {return capacity_;} char* data () const {return (char*)(this+1);} char& operator[](size_t i) {return ((char*)(this+1))[i];} char operator[](size_t i) const {return ((char*)(this+1))[i];} size_t first (char ) const; size_t first (char,size_t) const; size_t first (const char*) const; size_t first (const char*, size_t) const; unsigned hash ( ) const; unsigned hashFoldCase ( ) const; size_t last (char ) const; size_t last (char,size_t) const; int collate(const char*) const; size_t capacity_; size_t nchars_; friend class RWCString; friend class RWCSubString; }; # 419 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" class RWCSubString { public: RWCSubString(const RWCSubString& sp) : str_(sp.str_), begin_(sp.begin_), extent_(sp.extent_) {;} RWCSubString& operator=(const char*); RWCSubString& operator=(const RWCString&); RWCSubString& operator=(const RWCSubString&); char& operator()(size_t i); char& operator[](size_t i); char operator()(size_t i) const; char operator[](size_t i) const; const char* startData() const; const char* data() const; # 448 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" size_t length() const {return extent_;} size_t start() const {return begin_;} void toLower(); void toUpper(); RWBoolean isNull() const {return begin_==RW_NPOS;} int operator!() const {return begin_==RW_NPOS;} protected: void subStringError(size_t, size_t, size_t) const; void assertElement(size_t i) const; private: RWCSubString(const RWCString & s, size_t start, size_t len); RWCString* str_; size_t begin_; size_t extent_; # 484 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" friend RWBoolean operator==(const RWCSubString& s1, const RWCSubString& s2); friend RWBoolean operator==(const RWCSubString& s1, const RWCString& s2); friend RWBoolean operator==(const RWCSubString& s1, const char* s2); friend class RWCString; }; # 504 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" class RWCString { public: enum stripType {leading = 0x1, trailing = 0x2, both = 0x3}; enum caseCompare {exact, ignoreCase}; enum scopeType {one, all}; RWCString(); RWCString(RWSize_T ic); RWCString(const RWCString& S) { data_ = S.data_; pref()->addReference(); } RWCString(const char * a); RWCString(const char * a, size_t N); RWCString(char c) {initChar(c);} RWCString(unsigned char c) {initChar(char(c));} RWCString(signed char c) {initChar(char(c));} RWCString(char, size_t N); RWCString(const RWCSubString& SS); ~RWCString(); operator const char*() const {return data_;} RWCString& operator=(const char*); RWCString& operator=(const RWCString&); RWCString& operator+=(const char*); RWCString& operator+=(const RWCString& s); char& operator[](size_t); char& operator()(size_t); RWCSubString operator()(size_t start, size_t len); RWCSubString operator()(const RWCRegexp& re); RWCSubString operator()(const RWCRegexp& re, size_t start); RWCSubString subString(const char* pat, size_t start=0, caseCompare=exact); char operator[](size_t) const; char operator()(size_t) const; const RWCSubString operator()(size_t start, size_t len) const; const RWCSubString operator()(const RWCRegexp& pat) const; const RWCSubString operator()(const RWCRegexp& pat, size_t start) const; const RWCSubString subString(const char* pat, size_t start=0, caseCompare=exact) const; const RWCSubString strip(stripType s=trailing, char c=' ') const; RWCString& append(const char* cs); RWCString& append(const char* cs, size_t N); RWCString& append(const RWCString& s); RWCString& append(const RWCString& s, size_t N); RWCString& append(char c, size_t rep=1); RWspace binaryStoreSize() const {return length()+sizeof(size_t);} size_t capacity() const {return pref()->capacity();} size_t capacity(size_t N); int collate(const char* cs) const {return pref()->collate(cs);} int collate(const RWCString& st) const; int compareTo(const char* cs, caseCompare cmp = exact) const; int compareTo(const RWCString& st, caseCompare cmp = exact) const; RWBoolean contains(const char* pat, caseCompare cmp = exact) const; RWBoolean contains(const RWCString& pat, caseCompare cmp = exact) const; RWCString copy() const; const char* data() const {return data_;} size_t first(char c) const {return pref()->first(c);} size_t first(char c, size_t i) const { return pref()->first(c, i); } size_t first(const char* cs) const {return pref()->first(cs);} size_t first(const char* cs, size_t N) const { return pref()->first(cs,N); } unsigned hash(caseCompare cmp = exact) const; size_t index(const char* pat, size_t i=0, caseCompare cmp = exact) const; size_t index(const RWCString& s, size_t i=0, caseCompare cmp = exact) const; size_t index(const char* pat, size_t patlen, size_t i, caseCompare cmp) const; size_t index(const RWCString& s, size_t patlen, size_t i, caseCompare cmp) const; # 617 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" size_t index(const RWCRegexp& pat, size_t i=0) const; size_t index(const RWCRegexp& pat, size_t* ext, size_t i=0) const; RWCString& insert(size_t pos, const char*); RWCString& insert(size_t pos, const char*, size_t extent); RWCString& insert(size_t pos, const RWCString&); RWCString& insert(size_t pos, const RWCString&, size_t extent); RWBoolean isAscii() const; RWBoolean isNull() const {return pref()->nchars_ == 0;} size_t last(char c) const {return pref()->last(c);} size_t last(char c,size_t i) const {return pref()->last(c,i);} size_t length() const {return pref()->nchars_;} size_t mbLength() const; RWCString& prepend(const char*); RWCString& prepend(const char* cs, size_t N); RWCString& prepend(const RWCString& s); RWCString& prepend(const RWCString& s, size_t N); RWCString& prepend(char c, size_t rep=1); istream& readFile(istream&); istream& readLine(istream&, RWBoolean skipWhite = 1); istream& readString(istream&); istream& readToDelim(istream&, char delim='\n'); istream& readToken(istream&); RWCString& remove(size_t pos); RWCString& remove(size_t pos, size_t n); RWCString& replace(size_t pos, size_t n, const char*); RWCString& replace(size_t pos, size_t n, const char*, size_t); RWCString& replace(size_t pos, size_t n, const RWCString&); RWCString& replace(size_t pos, size_t n, const RWCString&, size_t); # 660 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" void resize(size_t N); void restoreFrom(RWvistream&); void restoreFrom(RWFile&); void saveOn(RWvostream& s) const; void saveOn(RWFile& f) const; RWCSubString strip(stripType s=trailing, char c=' '); void toLower(); void toUpper(); static size_t initialCapacity(size_t ic = 15); static size_t maxWaste(size_t mw = 15); static size_t resizeIncrement(size_t ri = 16); static size_t getInitialCapacity() {return initialCapac;} static size_t getResizeIncrement() {return resizeInc;} static size_t getMaxWaste() {return freeboard;} static unsigned hash(const RWCString&); protected: RWCString(const char* a1, size_t N1, const char* a2, size_t N2); void assertElement(size_t) const; void clobber(size_t nc); void cow(); void cow(size_t nc); static size_t adjustCapacity(size_t nc); void initChar(char); private: void clone(); void clone(size_t nc); static size_t initialCapac; static size_t resizeInc; static size_t freeboard; RWCStringRef* pref() const { return (((RWCStringRef*) data_) - 1); } char* data_; # 722 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" friend RWCString operator+(const RWCString& s1, const RWCString& s2); friend RWCString operator+(const RWCString& s, const char* cs); friend RWCString operator+(const char* cs, const RWCString& s); inline friend RWBoolean operator==(const RWCString& s1, const RWCString& s2); friend RWBoolean operator==(const RWCString& s1, const char* s2); friend class RWCSubString; friend class RWCStringRef; }; istream& operator>>(istream& str , RWCString& cstr); ostream& operator<<(ostream& str , const RWCString& cstr); inline RWvistream& operator>>(RWvistream& str, RWCString& cstr) { cstr.restoreFrom(str); return str; } inline RWFile& operator>>(RWFile& file, RWCString& cstr) { cstr.restoreFrom(file); return file; } inline RWvistream& operator>>(RWvistream& str, RWCString*& cstr) { cstr = new RWCString; cstr->restoreFrom(str); return str; } inline RWFile& operator>>(RWFile& file, RWCString*& cstr) { cstr = new RWCString; cstr->restoreFrom(file); return file; } inline RWvostream& operator<<(RWvostream& str, const RWCString& cstr) { cstr.saveOn(str); return str; } inline RWFile& operator<<(RWFile& file, const RWCString& cstr) { cstr.saveOn(file); return file; } RWCString toLower(const RWCString&); RWCString toUpper(const RWCString&); inline unsigned rwhash(const RWCString& s) { return s.hash(); } inline unsigned rwhash(const RWCString* s) { return s->hash(); } RWCString strXForm(const RWCString&); # 773 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" inline void RWCString::cow() { if (pref()->references() > 1) clone(); } inline void RWCString::cow(size_t nc) { if (pref()->references() > 1 || capacity() < nc) clone(nc); } inline RWCString& RWCString::append(const char* cs) { return replace(length(), 0, cs, strlen(cs)); } inline RWCString& RWCString::append(const char* cs, size_t N) { return replace(length(), 0, cs, N); } inline RWCString& RWCString::append(const RWCString& s) { return replace(length(), 0, s.data(), s.length()); } inline RWCString& RWCString::append(const RWCString& s, size_t N) { return replace(length(), 0, s.data(), rwmin(N, s.length())); } inline RWCString& RWCString::operator+=(const char* cs) { return append(cs, strlen(cs)); } inline RWCString& RWCString::operator+=(const RWCString& s) { return append(s.data(),s.length()); } inline int RWCString::collate(const RWCString& st) const { return pref()->collate(st.data()); } inline RWBoolean RWCString::contains(const RWCString& pat, caseCompare cmp) const { return index(pat.data(), pat.length(), (size_t)0, cmp) != RW_NPOS; } inline RWBoolean RWCString::contains(const char* s, caseCompare cmp) const { return index(s, strlen(s), (size_t)0, cmp) != RW_NPOS; } inline size_t RWCString::index(const char* s, size_t i, caseCompare cmp) const { return index(s, strlen(s), i, cmp); } inline size_t RWCString::index(const RWCString& s, size_t i, caseCompare cmp) const { return index(s.data(), s.length(), i, cmp); } inline size_t RWCString::index(const RWCString& pat, size_t patlen, size_t i, caseCompare cmp) const { return index(pat.data(), patlen, i, cmp); } inline RWCString& RWCString::insert(size_t pos, const char* cs) { return replace(pos, 0, cs, strlen(cs)); } inline RWCString& RWCString::insert(size_t pos, const char* cs, size_t N) { return replace(pos, 0, cs, N); } inline RWCString& RWCString::insert(size_t pos, const RWCString& cstr) { return replace(pos, 0, cstr.data(), cstr.length()); } inline RWCString& RWCString::insert(size_t pos, const RWCString& cstr, size_t N) { return replace(pos, 0, cstr.data(), rwmin(N, cstr.length())); } inline RWCString& RWCString::prepend(const char* cs) { return replace(0, 0, cs, strlen(cs)); } inline RWCString& RWCString::prepend(const char* cs, size_t N) { return replace(0, 0, cs, N); } inline RWCString& RWCString::prepend(const RWCString& s) { return replace(0, 0, s.data(), s.length()); } inline RWCString& RWCString::prepend(const RWCString& s, size_t N) { return replace(0, 0, s.data(), rwmin(N, s.length())); } inline RWCString& RWCString::remove(size_t pos) { return replace(pos, length()-pos, 0, 0); } inline RWCString& RWCString::remove(size_t pos, size_t n) { return replace(pos, n, 0, 0); } inline RWCString& RWCString::replace(size_t pos, size_t n, const char* cs) { return replace(pos, n, cs, strlen(cs)); } inline RWCString& RWCString::replace(size_t pos, size_t n, const RWCString& cstr) { return replace(pos, n, cstr.data(), cstr.length()); } inline RWCString& RWCString::replace(size_t pos, size_t n1, const RWCString& cstr, size_t n2) { return replace(pos, n1, cstr.data(), rwmin(cstr.length(),n2)); } inline char& RWCString::operator()(size_t i) { cow(); return data_[i]; } inline char RWCString::operator[](size_t i) const { assertElement(i); return data_[i]; } inline char RWCString::operator()(size_t i) const { return data_[i]; } # 894 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" inline const char* RWCSubString::startData() const { return str_->data() + begin_; } inline const char* RWCSubString::data() const { return str_->data() + begin_; } inline char RWCSubString::operator[](size_t i) const { assertElement(i); return str_->data_[begin_+i]; } inline char RWCSubString::operator()(size_t i) const { return str_->data_[begin_+i]; } inline RWBoolean operator==(const RWCString& s1, const RWCString& s2) { return ((s1.length() == s2.length()) && !memcmp(s1.data(), s2.data(), s1.length())); } inline RWBoolean operator< (const RWCString& s1, const RWCString& s2) { return s1.compareTo(s2)< 0;} inline RWBoolean operator!=(const RWCString& s1, const RWCString& s2) { return !(s1 == s2); } inline RWBoolean operator> (const RWCString& s1, const RWCString& s2) { return s1.compareTo(s2)> 0;} inline RWBoolean operator<=(const RWCString& s1, const RWCString& s2) { return s1.compareTo(s2)<=0;} inline RWBoolean operator>=(const RWCString& s1, const RWCString& s2) { return s1.compareTo(s2)>=0;} inline RWBoolean operator!=(const RWCString& s1, const char* s2) { return !(s1 == s2); } inline RWBoolean operator< (const RWCString& s1, const char* s2) { return s1.compareTo(s2)< 0; } inline RWBoolean operator> (const RWCString& s1, const char* s2) { return s1.compareTo(s2)> 0; } inline RWBoolean operator<=(const RWCString& s1, const char* s2) { return s1.compareTo(s2)<=0; } inline RWBoolean operator>=(const RWCString& s1, const char* s2) { return s1.compareTo(s2)>=0; } inline RWBoolean operator==(const char* s1, const RWCString& s2) { return (s2 == s1); } inline RWBoolean operator!=(const char* s1, const RWCString& s2) { return !(s2 == s1); } inline RWBoolean operator< (const char* s1, const RWCString& s2) { return s2.compareTo(s1)> 0; } inline RWBoolean operator> (const char* s1, const RWCString& s2) { return s2.compareTo(s1)< 0; } inline RWBoolean operator<=(const char* s1, const RWCString& s2) { return s2.compareTo(s1)>=0; } inline RWBoolean operator>=(const char* s1, const RWCString& s2) { return s2.compareTo(s1)<=0; } inline RWBoolean operator==(const RWCString& s1, const RWCSubString& s2) { return (s2 == s1); } inline RWBoolean operator==(const char* s1, const RWCSubString& s2) { return (s2 == s1); } inline RWBoolean operator!=(const RWCSubString& s1, const char* s2) { return !(s1 == s2); } inline RWBoolean operator!=(const RWCSubString& s1, const RWCString& s2) { return !(s1 == s2); } inline RWBoolean operator!=(const RWCSubString& s1, const RWCSubString& s2) { return !(s1 == s2); } inline RWBoolean operator!=(const RWCString& s1, const RWCSubString& s2) { return !(s2 == s1); } inline RWBoolean operator!=(const char* s1, const RWCSubString& s2) { return !(s2 == s1); } # 1 "/home/hak/hak/filesx/usr/rogue/rw/strmshft.h" 1 # 77 "/home/hak/hak/filesx/usr/rogue/rw/strmshft.h" class vostream; class vistream; # 988 "/home/hak/hak/filesx/usr/rogue/rw/cstring.h" 2 class RWpostream; class RWbostream; class RWeostream; inline RWvostream& operator<<(RWpostream& dos, const RWCString& ct) { return (RWvostream&)dos << ct; } inline RWvostream& operator<<(RWbostream& dos, const RWCString& ct) { return (RWvostream&)dos << ct; } inline RWvostream& operator<<(RWeostream& dos, const RWCString& ct) { return (RWvostream&)dos << ct; } # 16 "param.C" 2 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 1 3 4 # 26 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 #pragma builtin_milli abs #pragma extern abs # 44 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 inline int abs(int d) { return (d>0)?d:-d; } # 55 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 extern "C" { #pragma builtin_milli div, ldiv, labs #pragma builtin rand, srand, atoi, exit, free #pragma extern __nl_char_size #pragma extern atof #pragma extern atoi, atol, strtod, strtol, strtoul, rand #pragma extern srand, atexit, exit, getenv, system, div, ldiv, labs #pragma extern mblen, mbtowc, wctomb, mbstowcs, wcstombs, free, qsort #pragma extern strtof # 82 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 extern int __nl_char_size; # 95 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; # 1 "/usr/include/sys/_wchar_t.h" 1 3 4 # 112 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 2 3 4 # 138 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 extern double atof(const char *); extern int atoi(const char *); extern long int atol(const char *); extern double strtod(const char *, char **); extern long int strtol(const char *, char **, int); # 160 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 extern float strtof(const char *, char **); extern unsigned long int strtoul(const char *, char **, int); extern int rand(void); extern void srand(unsigned int); extern int atexit(void (*) (void)); extern void exit(int); extern char *getenv(const char *); extern int system(const char *); extern div_t div(int, int); extern ldiv_t ldiv(long int, long int); extern long int labs(long int); extern int mblen(const char *, size_t); extern int mbtowc(wchar_t *, const char *, size_t); extern int wctomb(char *, wchar_t); extern size_t mbstowcs(wchar_t *, const char *, size_t); extern size_t wcstombs(char *, const wchar_t *, size_t); extern void free(void *); extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *)); # 216 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 #pragma builtin abort, calloc, malloc, realloc #pragma extern bsearch, abort, calloc, malloc, realloc # 229 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 extern void abort(void); extern void *bsearch(const void *, const void *, size_t, size_t, int (*) (const void *, const void *)); extern void *calloc(size_t, size_t); extern void *malloc(size_t); extern void *realloc(void *, size_t); # 290 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 #pragma extern setkey, lcong48 # 301 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 extern void setkey(const char *); extern void lcong48( unsigned short [] ); # 313 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 #pragma extern drand48, erand48, jrand48, lrand48, mrand48, nrand48 #pragma extern srand48, seed48, putenv # 328 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 extern double drand48(void); extern double erand48(unsigned short []); extern long jrand48(unsigned short []); extern long lrand48(void); extern long mrand48(void); extern long nrand48(unsigned short []); extern void srand48(long); extern unsigned short *seed48(unsigned short []); extern int putenv(const char *); # 353 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 #pragma extern clearenv, getopt, getpass, memalign #pragma extern optarg, optind, opterr # 364 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 extern int clearenv(void); extern int getopt(int, char * const [], const char *); extern char *getpass(const char *); extern void *memalign(size_t, size_t); extern char *optarg; extern int optind; extern int opterr; # 1 "/usr/include/sys/wait.h" 1 3 4 # 28 "/usr/include/sys/wait.h" 3 4 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 1 3 4 # 63 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef int mqd_t; typedef int32_t dev_t; typedef uint32_t ino32_t; # 89 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef int psetid_t; # 103 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef unsigned long ino_t; typedef uint16_t mode_t; typedef uint16_t nlink_t; typedef int32_t fpos32_t; # 129 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef long fpos_t; typedef uint32_t fsblkcnt32_t; # 158 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef unsigned long fsblkcnt_t; typedef int32_t off32_t; typedef int32_t sbsize32_t; typedef uint32_t bsize32_t; # 194 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef long off_t; # 205 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef long sbsize_t; typedef unsigned long bsize_t; typedef uint32_t fsfilcnt32_t; # 228 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef unsigned long fsfilcnt_t; typedef int32_t blkcnt32_t; # 250 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef long blkcnt_t; typedef int32_t pid_t; typedef int32_t lwpid_t; typedef int32_t gid_t; typedef int32_t uid_t; typedef int32_t tid_t; typedef long ssize_t; typedef uint16_t __site_t; typedef uint16_t __cnode_t; typedef long time_t; # 323 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef uint32_t clock_t; typedef int32_t key_t; typedef unsigned short __ushort; typedef int32_t __daddr_t; typedef char *__caddr_t; typedef int32_t __swblk_t; typedef __caddr_t caddr_t; typedef int32_t id_t; typedef uint32_t useconds_t; typedef uint32_t rlim32_t; # 383 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef unsigned long rlim_t; typedef __site_t site_t; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned int uint; typedef unsigned short ushort; typedef unsigned char ubit8; typedef unsigned short ubit16; typedef uint32_t ubit32; typedef char sbit8; typedef short sbit16; typedef int32_t sbit32; typedef __swblk_t swblk_t; typedef __daddr_t daddr_t; typedef __cnode_t cnode_t; # 1 "/usr/include/machine/vm/vmtypes.h" 1 3 4 # 47 "/usr/include/machine/vm/vmtypes.h" 3 4 typedef uintptr_t paddr_t; # 59 "/usr/include/machine/vm/vmtypes.h" 3 4 typedef intptr_t page_t; typedef int pgcnt_t[2]; typedef unsigned int upgcnt_t[2]; typedef uintptr_t physpfn_t; typedef uintptr_t iophyspfn_t; typedef uintptr_t pgaddr_t; typedef uint32_t prot_t; # 95 "/usr/include/machine/vm/vmtypes.h" 3 4 typedef int space_t[2]; typedef uint32_t rid_t; # 411 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 2 3 4 typedef unsigned long ulong_t; typedef int16_t cnt_t; typedef uint32_t cdno_t; typedef uint16_t use_t; typedef struct _physadr { intptr_t r[1]; } *physadr; typedef int spu_t; typedef int ldom_t; typedef short cpu_t; typedef struct lkinfo { char *lk_name; int lk_flags; long lk_pad[2]; } lkinfo_t; typedef unsigned long pl_t; typedef int32_t aid_t; # 454 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef pid_t sid_t; # 466 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 # 1 "/usr/include/sys/_fd_macros.h" 1 3 4 # 85 "/usr/include/sys/_fd_macros.h" 3 4 typedef int32_t __fd_mask; # 94 "/usr/include/sys/_fd_macros.h" 3 4 typedef struct fd_set { long fds_bits[(((2048)+(((sizeof(long) * 8))-1))/((sizeof(long) * 8)))]; } fd_set; extern "C" { # 146 "/usr/include/sys/_fd_macros.h" 3 4 } # 467 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 2 3 4 # 475 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 typedef __fd_mask fd_mask; extern "C" { # 514 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/types.h" 3 4 } # 29 "/usr/include/sys/wait.h" 2 3 4 # 66 "/usr/include/sys/wait.h" 3 4 extern "C" { #pragma extern wait, waitpid extern pid_t wait(int *); extern pid_t waitpid(pid_t, int *, int); } # 1 "/usr/include/sys/resource.h" 1 3 4 # 50 "/usr/include/sys/resource.h" 3 4 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 1 3 4 # 37 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 # 1 "/usr/include/sys/sigevent.h" 1 3 4 # 45 "/usr/include/sys/sigevent.h" 3 4 # 1 "/usr/include/sys/stdpad.h" 1 3 4 # 46 "/usr/include/sys/sigevent.h" 2 3 4 typedef union sigval { struct { double __svi_pad1a; uint32_t __svi_pad1b; int __svi_int; } __svi_int_s; struct { double __svi_pad2a; uint32_t __svi_pad2b; void * __svi_ptr; } __svi_ptr_s; # 75 "/usr/include/sys/sigevent.h" 3 4 } sigval_t; # 85 "/usr/include/sys/sigevent.h" 3 4 typedef int pthread_attr_t; typedef struct sigevent { int __sigev_notify; int __sigev_signo; double __sigev_reserved0a; sigval_t __sigev_value; double __sigev_pad1a; uint32_t __sigev_pad1b; void (*__sigev_notify_function)(sigval_t); double __sigev_pad2a; uint32_t __sigev_pad2b; pthread_attr_t *__sigev_notify_attributes; # 126 "/usr/include/sys/sigevent.h" 3 4 double __sigev_reserved[8]; } sigevent_t; enum __sigev_types { __SIGEV_NONE = 1, __SIGEV_SIGNAL ,__SIGEV_THREAD }; # 38 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 2 3 4 # 113 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; # 134 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 struct timespec { time_t tv_sec; long tv_nsec; }; typedef struct timespec timestruc_t; struct itimerspec { struct timespec it_interval; struct timespec it_value; }; typedef enum __clockid_t { CLOCK_INVALID = 0, CLOCK_REALTIME = 1, CLOCK_VIRTUAL = 2, CLOCK_PROFILE = 4, RTTIMER0 = 8, RTTIMER1 = 16 } clockid_t; typedef unsigned long timer_t; # 176 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 struct timeval { time_t tv_sec; long tv_usec; }; struct itimerval { struct timeval it_interval; struct timeval it_value; }; struct timezone { int tz_minuteswest; int tz_dsttime; }; typedef struct __cycles { uint32_t hi; uint32_t lo; } cycles_t; # 217 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 extern "C" { # 230 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 #pragma extern difftime extern double difftime(time_t, time_t); #pragma extern mktime extern time_t mktime(struct tm *); #pragma extern time extern time_t time(time_t *); #pragma extern asctime extern char *asctime(const struct tm *); #pragma extern ctime extern char *ctime(const time_t *); #pragma extern gmtime extern struct tm *gmtime(const time_t *); #pragma extern localtime extern struct tm *localtime(const time_t *); #pragma extern strftime extern size_t strftime(char *, size_t, const char *, const struct tm *); # 493 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 #pragma extern clock # 509 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 extern clock_t clock(void); # 529 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 #pragma extern tzset extern void tzset(void); # 547 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 #pragma extern tzname extern char *tzname[2]; #pragma extern clock_settime, clock_gettime, clock_getres #pragma extern timer_create, timer_delete, timer_settime #pragma extern timer_gettime, timer_getoverrun, nanosleep extern int clock_settime(clockid_t, const struct timespec *); extern int clock_gettime(clockid_t, struct timespec *); extern int clock_getres(clockid_t, struct timespec *); extern int timer_create(clockid_t, struct sigevent *, timer_t *); extern int timer_delete(timer_t); extern int timer_settime(timer_t, int, const struct itimerspec *, struct itimerspec *); extern int timer_gettime(timer_t, struct itimerspec *); extern int timer_getoverrun(timer_t); extern int nanosleep(const struct timespec *, struct timespec *); # 597 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 #pragma extern strptime #pragma extern timezone #pragma extern daylight extern char *strptime(const char *, const char *, struct tm *); # 620 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 extern long timezone; extern int daylight; } # 644 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 extern "C" { #pragma extern getitimer, setitimer, utimes, gettimeofday, select extern int getitimer(int, struct itimerval *); extern int setitimer(int, const struct itimerval *, struct itimerval *); extern int utimes(const char *, const struct timeval[2]); extern int gettimeofday(struct timeval *, void *); extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); # 671 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 } extern "C" { #pragma extern adjtime #pragma extern getdate #pragma extern settimeofday, stime, profil extern int adjtime(const struct timeval *, struct timeval *); extern struct tm *getdate(const char *); # 710 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 extern int settimeofday(const struct timeval *, const struct timezone *); extern int stime(const time_t *); extern void profil(void *, size_t, size_t, int); # 746 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 #pragma extern getdate_err extern int getdate_err; } # 799 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 struct ki_timeval { uint32_t pad1; uint32_t pad2; }; # 821 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/time.h" 3 4 typedef struct ki_timeval kt_t; # 51 "/usr/include/sys/resource.h" 2 3 4 # 59 "/usr/include/sys/resource.h" 3 4 # 1 "/usr/include/sys/_rlimit_body.h" 1 3 4 # 45 "/usr/include/sys/_rlimit_body.h" 3 4 struct rlimit { rlim_t rlim_cur; rlim_t rlim_max; }; # 60 "/usr/include/sys/resource.h" 2 3 4 # 105 "/usr/include/sys/resource.h" 3 4 struct rusage { struct timeval ru_utime; struct timeval ru_stime; long ru_maxrss; long ru_ixrss; long ru_idrss; long ru_isrss; long ru_minflt; long ru_majflt; long ru_nswap; long ru_inblock; long ru_oublock; long ru_ioch; long ru_msgsnd; long ru_msgrcv; long ru_nsignals; long ru_nvcsw; long ru_nivcsw; }; # 146 "/usr/include/sys/resource.h" 3 4 extern "C" { #pragma extern getpriority, getrusage, setpriority #pragma extern getrlimit, setrlimit extern int getpriority (int, id_t); extern int getrusage (int, struct rusage *); extern int setpriority (int, id_t, int); extern int getrlimit (int, struct rlimit *); extern int setrlimit (int, const struct rlimit *); # 200 "/usr/include/sys/resource.h" 3 4 } # 97 "/usr/include/sys/wait.h" 2 3 4 # 107 "/usr/include/sys/wait.h" 3 4 extern "C" { #pragma extern wait3 extern pid_t wait3(int *, int, struct rusage *); # 130 "/usr/include/sys/wait.h" 3 4 } # 1 "/usr/include/sys/signal.h" 1 3 4 # 42 "/usr/include/sys/signal.h" 3 4 # 1 "/usr/include/sys/siginfo.h" 1 3 4 # 110 "/usr/include/sys/siginfo.h" 3 4 typedef struct __siginfo { uint32_t __si_version, __si_size; int si_signo; int si_code; int si_errno; uint32_t __si_reserved0b; double __si_reserved0c; sigval_t si_value; union { struct { double __pad2a; uint32_t __pad2b; pid_t __pid; union { struct { double __pad2c; uint32_t __pad2d; uid_t __uid; } __kill; struct { double __pad2e; uint32_t __pad2f; int __status; } __SIGCLD; } __pdata; } __proc; struct { double __pad5a; uint32_t __pad5b; void *__addr; double __pad5c; uint32_t __pad5d; unsigned int __imm; } __fault; struct { double __pad6a; uint32_t __pad6b; int __fd; double __pad6c; uint32_t __pad6d; long __band; } __file; struct { double __pad7a; uint32_t __pad7b; void *__addr; double __pad7c; uint32_t __pad7d; void *__lockpage; double __pad7e; uint32_t __pad7f; long __dev_id; } __gfault; } __data; double __pad[8]; } siginfo_t; # 153 "/usr/include/sys/siginfo.h" 3 4 # 1 "/usr/include/machine/sys/siginfo.h" 1 3 4 # 50 "/usr/include/machine/sys/siginfo.h" 3 4 enum __si_codes { SI_USER = -1, SI_QUEUE = -2, SI_TIMER = -3, SI_ASYNCIO= -4, SI_MESGQ = -5 }; # 154 "/usr/include/sys/siginfo.h" 2 3 4 # 43 "/usr/include/sys/signal.h" 2 3 4 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/newsig.h" 1 3 4 # 58 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/newsig.h" 3 4 typedef struct __sigset_t { unsigned int sigset[8]; } sigset_t; # 77 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/newsig.h" 3 4 typedef struct __stack { uint32_t __ss_pad0; void *ss_sp; uint32_t __ss_pad1; int ss_flags; uint32_t __ss_pad2; size_t ss_size; double __ss_reserved[5]; } stack_t; # 1 "/usr/include/machine/sys/newsig.h" 1 3 4 # 42 "/usr/include/machine/sys/newsig.h" 3 4 typedef struct { long double __mc_opaque[2976]; } __mcontext_t; typedef __mcontext_t mcontext_t; # 70 "/usr/include/machine/sys/newsig.h" 3 4 typedef struct { # 118 "/usr/include/machine/sys/newsig.h" 3 4 double __uc_misc_reserved[45]; } __uc_misc_t; typedef struct __ucontext { __uc_misc_t __uc_misc; double __uc_reserved[((1024 - sizeof(__uc_misc_t)) / sizeof(double))]; mcontext_t __uc_mcontext; } ucontext_t; # 88 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/sys/newsig.h" 2 3 4 # 44 "/usr/include/sys/signal.h" 2 3 4 # 66 "/usr/include/sys/signal.h" 3 4 typedef unsigned int sig_atomic_t; # 79 "/usr/include/sys/signal.h" 3 4 struct sigaction { union { void (*__sa_sigaction)(int, siginfo_t *, void *); void (*__sa_handler)(int); } __handler; sigset_t sa_mask; int sa_flags; }; # 108 "/usr/include/sys/signal.h" 3 4 typedef int pthread_t; # 135 "/usr/include/sys/signal.h" 3 4 struct sigstack { void *ss_sp; int ss_onstack; }; # 152 "/usr/include/sys/signal.h" 3 4 struct sigvec { void (*sv_handler)(int); int sv_mask; int sv_flags; }; # 168 "/usr/include/sys/signal.h" 3 4 extern "C" { #pragma extern signal, raise extern void (*signal(int, void (*) (int)))(int); extern int raise(int); # 191 "/usr/include/sys/signal.h" 3 4 #pragma extern kill, sigemptyset, sigfillset, sigaddset, sigdelset #pragma extern sigismember, sigaction, sigprocmask, sigsuspend #pragma extern sigpending #pragma extern ___sysconf extern int kill(pid_t, int); extern int sigemptyset(sigset_t *); extern int sigfillset(sigset_t *); extern int sigaddset(sigset_t *, int); extern int sigdelset(sigset_t *, int); extern int sigismember(const sigset_t *, int); extern int sigaction(int, const struct sigaction *, struct sigaction *); extern int sigprocmask(int, const sigset_t *, sigset_t *); extern int sigsuspend(const sigset_t *); extern int sigpending(sigset_t *); extern long ___sysconf(int); # 226 "/usr/include/sys/signal.h" 3 4 #pragma extern sigwait #pragma extern pthread_sigmask, pthread_kill extern int sigwait(const sigset_t *set, int *sig); extern int pthread_sigmask(int how, const sigset_t *set, sigset_t *oset); extern int pthread_kill(pthread_t thread, int sig); # 249 "/usr/include/sys/signal.h" 3 4 #pragma extern sigwaitinfo, sigtimedwait, sigqueue extern int sigwaitinfo(const sigset_t *set, siginfo_t *info); extern int sigtimedwait(const sigset_t *set, siginfo_t * info, const struct timespec *timeout); extern int sigqueue(pid_t pid, int signo, const union sigval value); # 267 "/usr/include/sys/signal.h" 3 4 #pragma extern bsd_signal, killpg, sigaltstack, siginterrupt #pragma extern sigstack extern void (*bsd_signal(int, void(*)(int)))(int); extern int killpg(pid_t, int); extern int sigstack(struct sigstack *, struct sigstack *); extern int sigaltstack(const stack_t *, stack_t *); extern int siginterrupt(int, int); # 293 "/usr/include/sys/signal.h" 3 4 #pragma extern sigset, sighold, sigrelse, sigignore, sigpause extern void (*sigset(int, void (*)(int)))(int); extern int sighold(int); extern int sigrelse(int); extern int sigignore(int); extern int sigpause(int); # 315 "/usr/include/sys/signal.h" 3 4 #pragma extern sigblock, sigsetmask, sigvector, ssignal, sigspace, gsignal extern long sigblock(long); extern long sigsetmask(long); extern int sigvector(int, const struct sigvec *, struct sigvec *); extern int (*ssignal(int, int (*) (int)))(int); extern ssize_t sigspace(ssize_t); extern int gsignal(int); # 348 "/usr/include/sys/signal.h" 3 4 } # 547 "/usr/include/sys/signal.h" 3 4 # 1 "/usr/include/machine/sys/signal.h" 1 3 4 # 59 "/usr/include/machine/sys/signal.h" 3 4 # 1 "/usr/include/machine/sys/sigcontext.h" 1 3 4 # 42 "/usr/include/machine/sys/sigcontext.h" 3 4 struct sigcontext { struct __ucontext __uc; }; # 60 "/usr/include/machine/sys/signal.h" 2 3 4 # 548 "/usr/include/sys/signal.h" 2 3 4 # 574 "/usr/include/sys/signal.h" 3 4 # 1 "/usr/include/machine/sys/frame.h" 1 3 4 # 50 "/usr/include/machine/sys/frame.h" 3 4 typedef struct frame_marker { int __scratch[4]; } frame_marker_t; # 575 "/usr/include/sys/signal.h" 2 3 4 # 138 "/usr/include/sys/wait.h" 2 3 4 # 172 "/usr/include/sys/wait.h" 3 4 typedef enum { P_PID, P_PGID, P_SID, P_UID, P_GID, P_CID, P_ALL, P_LWPID } idtype_t; extern "C" { #pragma extern waitid extern int waitid(idtype_t, id_t, siginfo_t *, int); } # 213 "/usr/include/sys/wait.h" 3 4 union wait { int w_status; struct { unsigned short w_pad; unsigned int w_Retcode:8; unsigned int w_Coredump:1; unsigned int w_Termsig:7; } w_T; struct { unsigned short w_pad; unsigned int w_Stopsig:8; unsigned int w_Stopval:8; } w_S; }; # 248 "/usr/include/sys/wait.h" 3 4 extern "C" { #pragma extern wait4 extern pid_t wait4(pid_t,int *, int, struct rusage *); } # 383 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 2 3 4 #pragma extern a64l, l64a, gcvt, getsubopt, grantpt, ptsname, realpath #pragma extern unlockpt, valloc, initstate, setstate #pragma extern srandom, random #pragma extern mkstemp, mktemp, ttyslot # 406 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 extern int mkstemp(char *); extern char *mktemp(char *); extern int ttyslot(void); # 430 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 extern long a64l(const char *); extern char *l64a(long); #pragma extern fcvt, ecvt extern char *fcvt(double, int, int *, int *); extern char *ecvt(double, int, int *, int *); extern char *gcvt(double, int, char *); extern int getsubopt(char **, char * const *, char **); extern int grantpt(int); extern char *ptsname(int); extern char *realpath(const char *, char *); extern int unlockpt(int); extern void *valloc(size_t); extern char *initstate(unsigned int, char *, size_t); extern char *setstate(const char *); extern void srandom(unsigned int); extern long random(void); # 504 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 struct mallinfo { int32_t arena; int32_t ordblks; int32_t smblks; int32_t hblks; int32_t hblkhd; int32_t usmblks; int32_t fsmblks; int32_t uordblks; int32_t fordblks; int32_t keepcost; }; # 525 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 typedef long double long_double; #pragma extern _ldecvt, _ldfcvt, _ldgcvt, _extecvt, _extfcvt, ltostr #pragma extern ultostr, ltoa, ultoa, mallinfo, mallopt, strtold # 552 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/pwd.h" 1 3 4 # 29 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/pwd.h" 3 4 extern "C" { struct passwd { char *pw_name; char *pw_passwd; uid_t pw_uid; gid_t pw_gid; char *pw_age; char *pw_comment; char *pw_gecos; char *pw_dir; char *pw_shell; int32_t pw_audid; int pw_audflg; }; #pragma extern getpwuid, getpwnam # 73 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/pwd.h" 3 4 extern struct passwd *getpwuid(uid_t); extern struct passwd *getpwnam(const char *); # 98 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/pwd.h" 3 4 #pragma extern endpwent, getpwent, setpwent # 109 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/pwd.h" 3 4 extern void endpwent(void); extern struct passwd *getpwent(void); extern void setpwent(void); # 120 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/pwd.h" 3 4 struct s_passwd { char *pw_name; char *pw_passwd; char *pw_age; int32_t pw_audid; int pw_audflg; }; #pragma extern putpwent, fgetpwent, getspwent, getspwuid, getspwaid #pragma extern getspwnam, fgetspwent, setspwent, endspwent # 148 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/pwd.h" 3 4 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 1 3 4 # 14 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdarg.h" 1 3 4 # 43 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 15 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 2 3 4 # 33 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 extern "C" { # 51 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 typedef struct { int __cnt; unsigned char *__ptr; unsigned char *__base; unsigned short __flag; unsigned char __fileL; unsigned char __fileH; } FILE; typedef struct { int __cnt; unsigned char *__ptr; unsigned char *__base; unsigned short __flag; unsigned char __fileL; unsigned char __fileH; unsigned char *__bufendp; unsigned char *__newbase; unsigned char __smbuf[8 +2*4]; void *__unused; int __filler1; char __filler2[8]; } _FILEX; # 111 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 # 1 "/usr/include/sys/_null.h" 1 3 4 # 112 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 2 3 4 # 144 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 typedef char * __va_list; # 186 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 #pragma extern __iob extern FILE __iob[]; #pragma builtin fclose, fflush, scanf, fscanf, sscanf, fprintf #pragma builtin printf, sprintf, fgetc, fputc #pragma extern remove, tmpnam, fclose, fflush, setbuf, setvbuf, fprintf #pragma extern fscanf, printf, scanf, sprintf, sscanf, fgetc, fgets, fputc #pragma extern fputs, getc, getchar, gets, putc, putchar, puts, ungetc #pragma extern fseek, ftell, rewind, clearerr, feof, ferror, perror # 259 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 extern int remove(const char *); #pragma extern rename extern int rename(const char *, const char *); extern char *tmpnam(char *); extern int fclose(FILE *); extern int fflush(FILE *); extern void setbuf(FILE *, char *); extern int setvbuf(FILE *, char *, int, size_t); extern int fprintf(FILE *, const char *, ...); extern int fscanf(FILE *, const char *,...); extern int printf(const char *,...); extern int scanf(const char *,...); extern int sprintf(char *, const char *,...); extern int sscanf(const char *, const char *,...); extern int fgetc(FILE *); extern char *fgets(char *, int, FILE *); extern int fputc(int, FILE *); extern int fputs(const char *, FILE *); extern int getc(FILE *); extern int getchar(void); extern char *gets(char *); extern int putc(int, FILE *); extern int putchar(int); extern int puts(const char *); extern int ungetc(int, FILE *); #pragma builtin fopen #pragma extern tmpfile, fgetpos, fsetpos, fopen, freopen extern FILE *tmpfile(void); extern int fgetpos(FILE *, fpos_t *); extern int fsetpos(FILE *, const fpos_t *); extern FILE *fopen(const char *, const char *); extern FILE *freopen(const char *, const char *, FILE *); # 310 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 extern int fseek(FILE *, long int, int); extern long int ftell(FILE *); extern void rewind(FILE *); extern void clearerr(FILE *); extern int feof(FILE *); extern int ferror(FILE *); extern void perror(const char *); # 408 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 #pragma extern fread, fwrite # 423 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 extern size_t fread(void *, size_t, size_t, FILE *); extern size_t fwrite(const void *, size_t, size_t, FILE *); # 442 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 #pragma extern __flsbuf, __filbuf # 453 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 extern int __flsbuf(unsigned char, FILE *); extern int __filbuf(FILE *); # 525 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 #pragma extern ctermid, fileno, fdopen # 536 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 extern char *ctermid(char *); extern int fileno(FILE *); extern FILE *fdopen(int, const char *); # 556 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 typedef char * __not_va_list__; # 586 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 #pragma extern optarg, opterr, optind, optopt, getopt, cuserid extern char *optarg; extern int optind; extern int opterr; extern int optopt; # 602 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 extern int getopt(int, char * const [], const char *); extern char *cuserid(char *); # 615 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 #pragma extern getw, putw, pclose, popen, tempnam # 626 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 extern int getw(FILE *); extern int putw(int, FILE *); extern int pclose(FILE *); extern FILE *popen(const char *, const char *); extern char *tempnam(const char *, const char *); # 655 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 #pragma extern vprintf, vfprintf, vsprintf extern int vprintf(const char *, __gnuc_va_list); extern int vfprintf(FILE *, const char *, __gnuc_va_list); extern int vsprintf(char *, const char *, __gnuc_va_list); # 679 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 #pragma builtin snprintf #pragma extern snprintf, vsnprintf, vscanf, vfscanf, vsscanf, flockfile #pragma extern ftrylockfile, funlockfile # 699 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 extern int snprintf(char *, size_t, const char *,...); extern int vsnprintf(char *, size_t, const char *, __gnuc_va_list); extern int vscanf(const char *, __gnuc_va_list); extern int vfscanf(FILE *, const char *, __gnuc_va_list); extern int vsscanf(char *, const char *, __gnuc_va_list); extern void flockfile(FILE *); extern int ftrylockfile(FILE *); extern void funlockfile(FILE *); # 755 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 #pragma extern __bufendtab extern unsigned char *__bufendtab[]; # 920 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdio.h" 3 4 } # 149 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/pwd.h" 2 3 4 extern int putpwent(const struct passwd *, FILE *); extern struct passwd *fgetpwent(FILE *); extern struct s_passwd *getspwent(void); extern struct s_passwd *getspwuid(uid_t); extern struct s_passwd *getspwaid(int32_t); extern struct s_passwd *getspwnam(char *); extern struct s_passwd *fgetspwent(FILE *); extern void setspwent(void); extern void endspwent(void); # 208 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/pwd.h" 3 4 } # 553 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 2 3 4 # 1 "/usr/include/errno.h" 1 3 4 # 36 "/usr/include/errno.h" 3 4 #pragma extern errno extern int errno; # 1 "/usr/include/sys/errno.h" 1 3 4 # 42 "/usr/include/sys/errno.h" 3 4 extern "C" { #pragma extern errno extern int errno; } # 42 "/usr/include/errno.h" 2 3 4 #pragma extern perror, strerror #pragma extern sys_nerr, sys_errlist extern "C" { extern void perror(const char*); extern char *strerror (int); extern int sys_nerr; extern char *sys_errlist[]; } # 557 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 2 3 4 extern char *_ldecvt(long_double, int, int *, int *); extern char *_ldfcvt(long_double, int, int *, int *); extern char *_ldgcvt(long_double, int, char *); extern char *_extecvt(long double, int, int *, int *); extern char *_extfcvt(long double, int, int *, int *); #pragma extern getpw, l3tol, ltol3 extern int getpw(int, char *); extern void l3tol(long *, const char *, int); extern void ltol3(char *, const long *, int); extern char *ltostr(long, int); extern char *ultostr(unsigned long, int); extern char *ltoa(long); extern char *ultoa(unsigned long); extern struct mallinfo mallinfo(void); extern int mallopt(int, int); extern long_double strtold(const char *, char **); # 671 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stdlib.h" 3 4 } # 17 "param.C" 2 # 1 "/usr/local/include/g++-v3/backward/fstream.h" 1 3 # 31 "/usr/local/include/g++-v3/backward/fstream.h" 3 # 1 "/usr/local/include/g++-v3/backward/backward_warning.h" 1 3 # 32 "/usr/local/include/g++-v3/backward/fstream.h" 2 3 # 1 "/usr/local/include/g++-v3/fstream" 1 3 # 44 "/usr/local/include/g++-v3/fstream" 3 # 1 "/usr/local/include/g++-v3/istream" 1 3 # 43 "/usr/local/include/g++-v3/istream" 3 # 1 "/usr/local/include/g++-v3/ios" 1 3 # 43 "/usr/local/include/g++-v3/ios" 3 # 1 "/usr/local/include/g++-v3/iosfwd" 1 3 # 43 "/usr/local/include/g++-v3/iosfwd" 3 # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/c++config.h" 1 3 # 34 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/c++config.h" 3 # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/os_defines.h" 1 3 # 62 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/os_defines.h" 3 namespace std { __extension__ extern "C" long long strtoll (const char *, char **, int) __asm ("__strtoll"); __extension__ extern "C" unsigned long long strtoull (const char *, char **, int) __asm ("__strtoull"); } # 35 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/c++config.h" 2 3 # 45 "/usr/local/include/g++-v3/iosfwd" 2 3 # 1 "/usr/local/include/g++-v3/bits/stringfwd.h" 1 3 # 43 "/usr/local/include/g++-v3/bits/stringfwd.h" 3 namespace std { template struct char_traits; template<> struct char_traits; template< _Alloc> class allocator; template< _CharT, _Traits = char_traits<_CharT>, _Alloc = allocator<_CharT> > class basic_string; typedef basic_string string; typedef basic_string wstring; } # 46 "/usr/local/include/g++-v3/iosfwd" 2 3 # 1 "/usr/local/include/g++-v3/bits/fpos.h" 1 3 # 43 "/usr/local/include/g++-v3/bits/fpos.h" 3 # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/c++io.h" 1 3 # 35 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/c++io.h" 3 # 1 "/usr/local/include/g++-v3/cstdio" 1 3 # 48 "/usr/local/include/g++-v3/cstdio" 3 # 1 "/usr/local/include/g++-v3/cstddef" 1 3 # 47 "/usr/local/include/g++-v3/cstddef" 3 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stddef.h" 1 3 4 # 49 "/usr/local/include/g++-v3/cstddef" 2 3 namespace std { using ::ptrdiff_t; using ::size_t; } # 51 "/usr/local/include/g++-v3/cstdio" 2 3 # 97 "/usr/local/include/g++-v3/cstdio" 3 namespace std { using ::FILE; using ::fpos_t; using ::clearerr; using ::fclose; using ::feof; using ::ferror; using ::fflush; using ::fgetc; using ::fgetpos; using ::fgets; using ::fopen; using ::fprintf; using ::fputc; using ::fputs; using ::fread; using ::freopen; using ::fscanf; using ::fseek; using ::fsetpos; using ::ftell; using ::fwrite; using ::getc; using ::getchar; using ::gets; using ::perror; using ::printf; using ::putc; using ::putchar; using ::puts; using ::remove; using ::rename; using ::rewind; using ::scanf; using ::setbuf; using ::setvbuf; using ::sprintf; using ::sscanf; using ::tmpfile; using ::tmpnam; using ::ungetc; using ::vfprintf; using ::vprintf; using ::vsprintf; } # 36 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/c++io.h" 2 3 # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/gthr.h" 1 3 # 102 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/gthr.h" 3 # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/gthr-single.h" 1 3 # 34 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/gthr-single.h" 3 typedef int __gthread_mutex_t; # 211 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/gthr-single.h" 3 static inline int __gthread_active_p (void) { return 0; } static inline int __gthread_mutex_lock (__gthread_mutex_t * ) { return 0; } static inline int __gthread_mutex_trylock (__gthread_mutex_t * ) { return 0; } static inline int __gthread_mutex_unlock (__gthread_mutex_t * ) { return 0; } # 103 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/gthr.h" 2 3 # 38 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/c++io.h" 2 3 namespace std { typedef long streamoff; typedef ptrdiff_t streamsize; typedef fpos_t __c_streampos; typedef __gthread_mutex_t __c_lock; typedef FILE __c_file_type; struct __ios_flags { typedef short __int_type; static const __int_type _S_boolalpha = 0x0001; static const __int_type _S_dec = 0x0002; static const __int_type _S_fixed = 0x0004; static const __int_type _S_hex = 0x0008; static const __int_type _S_internal = 0x0010; static const __int_type _S_left = 0x0020; static const __int_type _S_oct = 0x0040; static const __int_type _S_right = 0x0080; static const __int_type _S_scientific = 0x0100; static const __int_type _S_showbase = 0x0200; static const __int_type _S_showpoint = 0x0400; static const __int_type _S_showpos = 0x0800; static const __int_type _S_skipws = 0x1000; static const __int_type _S_unitbuf = 0x2000; static const __int_type _S_uppercase = 0x4000; static const __int_type _S_adjustfield = 0x0020 | 0x0080 | 0x0010; static const __int_type _S_basefield = 0x0002 | 0x0040 | 0x0008; static const __int_type _S_floatfield = 0x0100 | 0x0004; static const __int_type _S_badbit = 0x01; static const __int_type _S_eofbit = 0x02; static const __int_type _S_failbit = 0x04; static const __int_type _S_app = 0x01; static const __int_type _S_ate = 0x02; static const __int_type _S_bin = 0x04; static const __int_type _S_in = 0x08; static const __int_type _S_out = 0x10; static const __int_type _S_trunc = 0x20; }; } # 45 "/usr/local/include/g++-v3/bits/fpos.h" 2 3 # 1 "/usr/local/include/g++-v3/cwchar" 1 3 # 48 "/usr/local/include/g++-v3/cwchar" 3 # 1 "/usr/local/include/g++-v3/ctime" 1 3 # 48 "/usr/local/include/g++-v3/ctime" 3 # 1 "/usr/include/time.h" 1 3 4 # 27 "/usr/include/time.h" 3 4 #pragma extern get_expiration_time # 36 "/usr/include/time.h" 3 4 extern int get_expiration_time (struct timespec *,struct timespec *); extern "C" { # 54 "/usr/include/time.h" 3 4 } # 52 "/usr/local/include/g++-v3/ctime" 2 3 # 64 "/usr/local/include/g++-v3/ctime" 3 namespace std { using ::clock_t; using ::time_t; using ::tm; using ::clock; using ::difftime; using ::mktime; using ::time; using ::asctime; using ::ctime; using ::gmtime; using ::localtime; using ::strftime; } # 52 "/usr/local/include/g++-v3/cwchar" 2 3 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 1 3 4 # 24 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 3 4 # 1 "/usr/include/ctype.h" 1 3 4 # 17 "/usr/include/ctype.h" 3 4 extern "C" { #pragma extern isalnum, isalpha, iscntrl, isdigit, isgraph, islower #pragma extern isprint, ispunct, isspace, isupper, isxdigit extern int isalnum(int); extern int isalpha(int); extern int iscntrl(int); extern int isdigit(int); extern int isgraph(int); extern int islower(int); extern int isprint(int); extern int ispunct(int); extern int isspace(int); extern int isupper(int); extern int isxdigit(int); # 75 "/usr/include/ctype.h" 3 4 #pragma extern tolower, toupper # 87 "/usr/include/ctype.h" 3 4 extern int tolower(int); extern int toupper(int); # 100 "/usr/include/ctype.h" 3 4 #pragma extern isascii, toascii # 113 "/usr/include/ctype.h" 3 4 extern int isascii(int); extern int toascii(int); # 130 "/usr/include/ctype.h" 3 4 #pragma extern __tolower, __toupper # 141 "/usr/include/ctype.h" 3 4 extern int __tolower(int); extern int __toupper(int); # 175 "/usr/include/ctype.h" 3 4 #pragma extern isctype, isblank # 192 "/usr/include/ctype.h" 3 4 extern int isctype(int, unsigned int); extern int isblank(int); #pragma builtin _isalnum, _isalpha, _iscntrl, _isdigit, _isgraph, _islower #pragma builtin _isprint, _ispunct, _isspace, _isupper, _isxdigit #pragma extern _isalnum, _isalpha, _iscntrl, _isdigit, _isgraph, _islower #pragma extern _isprint, _ispunct, _isspace, _isupper, _isxdigit #pragma extern __SB_masks extern unsigned int *__SB_masks; extern int _isalnum(int); extern int _isalpha(int); extern int _iscntrl(int); extern int _isdigit(int); extern int _isgraph(int); extern int _islower(int); extern int _isprint(int); extern int _ispunct(int); extern int _isspace(int); extern int _isupper(int); extern int _isxdigit(int); # 280 "/usr/include/ctype.h" 3 4 } # 25 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 2 3 4 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/stddef.h" 1 3 4 # 28 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 2 3 4 # 39 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 3 4 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/limits.h" 1 3 4 # 11 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/limits.h" 3 4 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/syslimits.h" 1 3 4 # 432 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/syslimits.h" 3 4 # 1 "/usr/include/sys/param.h" 1 3 4 # 35 "/usr/include/sys/param.h" 3 4 # 1 "/usr/include/sys/sysmacros.h" 1 3 4 # 36 "/usr/include/sys/param.h" 2 3 4 # 1 "/usr/include/machine/sys/param.h" 1 3 4 # 46 "/usr/include/machine/sys/param.h" 3 4 # 1 "/usr/include/machine/sys/inline.h" 1 3 4 # 13 "/usr/include/machine/sys/inline.h" 3 4 typedef enum { _SZ_B = 1, _SZ_H = 2, _SZ_W = 4, _SZ_D = 8 } _Asm_sz; typedef enum { _SEM_ACQ = 1, _SEM_REL = 2 } _Asm_sem; typedef enum { _FASZ_W = 4, _FASZ_D = 8 } _Asm_fasz; typedef enum { _MBTYPE_REV = 1, _MBTYPE_MIX = 2, _MBTYPE_SHUF = 3, _MBTYPE_ALT = 4, _MBTYPE_BRCST = 5 } _Asm_mbtype; typedef enum { _LDHINT_NONE = 0, _LDHINT_NT1 = 1, _LDHINT_NTA = 2 } _Asm_ldhint; typedef enum { _STHINT_NONE = 0, _STHINT_NTA = 1 } _Asm_sthint; typedef enum { _LFTYPE_NONE = 0, _LFTYPE_FAULT = 1 } _Asm_lftype; typedef enum { _LFHINT_NONE = 0, _LFHINT_NT1 = 1, _LFHINT_NT2 = 2, _LFHINT_NTA = 3 } _Asm_lfhint; typedef enum { _REG_BANK_ZERO = 0, _REG_BANK_ONE = 1 } _Asm_reg_bank; typedef enum { _PC_S = 1, _PC_D = 2, _PC_NONE = 3 } _Asm_pc; typedef enum { _FP_NAT = (1<<8), _FP_QNAN = (1<<7), _FP_SNAN = (1<<6), _FP_POS = (1<<0), _FP_NEG = (1<<1), _FP_ZERO = (1<<2), _FP_UNNORM = (1<<3), _FP_NORM = (1<<4), _FP_INF = (1<<5) } _Asm_fclass_type; typedef enum { _FP_EQ = 1, _FP_LT = 2, _FP_LE = 3, _FP_GT = 4, _FP_GE = 5, _FP_UNORD = 6, _FP_NEQ = 7, _FP_NLT = 8, _FP_NLE = 9, _FP_NGT = 10, _FP_NGE = 11, _FP_ORD = 12 } _Asm_frel; typedef enum { _FX_S = 1, _FX_ST = 2, _FX_U = 3, _FX_UT = 4 } _Asm_fx_type; typedef enum { _FM_NS = 1, _FM_S = 2, _FM_SE = 3 } _Asm_fm_type; typedef enum { _FR_S = 1, _FR_D = 2, _FR_EXP = 3, _FR_SIG = 4 } _Asm_fr_access; typedef enum { _XM_L = 1, _XM_LU = 2, _XM_H = 3, _XM_HU = 4 } _Asm_xm_type; typedef enum { _SF0 = 0, _SF1 = 1, _SF2 = 2, _SF3 = 3 } _Asm_sf; typedef enum { _AREG0, _AREG1, _AREG2, _AREG3, _AREG4, _AREG5, _AREG6, _AREG7, _AREG8, _AREG9, _AREG10, _AREG11, _AREG12, _AREG13, _AREG14, _AREG15, _AREG16, _AREG17, _AREG18, _AREG19, _AREG20, _AREG21, _AREG22, _AREG23, _AREG24, _AREG25, _AREG26, _AREG27, _AREG28, _AREG29, _AREG30, _AREG31, _AREG32, _AREG33, _AREG34, _AREG35, _AREG36, _AREG37, _AREG38, _AREG39, _AREG40, _AREG41, _AREG42, _AREG43, _AREG44, _AREG45, _AREG46, _AREG47, _AREG48, _AREG49, _AREG50, _AREG51, _AREG52, _AREG53, _AREG54, _AREG55, _AREG56, _AREG57, _AREG58, _AREG59, _AREG60, _AREG61, _AREG62, _AREG63, _AREG64, _AREG65, _AREG66, _AREG67, _AREG68, _AREG69, _AREG70, _AREG71, _AREG72, _AREG73, _AREG74, _AREG75, _AREG76, _AREG77, _AREG78, _AREG79, _AREG80, _AREG81, _AREG82, _AREG83, _AREG84, _AREG85, _AREG86, _AREG87, _AREG88, _AREG89, _AREG90, _AREG91, _AREG92, _AREG93, _AREG94, _AREG95, _AREG96, _AREG97, _AREG98, _AREG99, _AREG100, _AREG101, _AREG102, _AREG103, _AREG104, _AREG105, _AREG106, _AREG107, _AREG108, _AREG109, _AREG110, _AREG111, _AREG112, _AREG113, _AREG114, _AREG115, _AREG116, _AREG117, _AREG118, _AREG119, _AREG120, _AREG121, _AREG122, _AREG123, _AREG124, _AREG125, _AREG126, _AREG127, _AREG_KR0 = _AREG0, _AREG_KR1 = _AREG1, _AREG_KR2 = _AREG2, _AREG_KR3 = _AREG3, _AREG_KR4 = _AREG4, _AREG_KR5 = _AREG5, _AREG_KR6 = _AREG6, _AREG_KR7 = _AREG7, _AREG_RSC = _AREG16, _AREG_BSP = _AREG17, _AREG_BSPSTORE = _AREG18, _AREG_RNAT = _AREG19, _AREG_CCV = _AREG32, _AREG_UNAT = _AREG36, _AREG_FPSR = _AREG40, _AREG_ITC = _AREG44, _AREG_PFS = _AREG64, _AREG_LC = _AREG65, _AREG_EC = _AREG66, _AREG_IOBASE = _AREG_KR0, _AREG_TSS = _AREG_KR1, _AREG_TSSD = _AREG_KR2, _AREG_Eflags = _AREG24, _AREG_CSD = _AREG25, _AREG_SSD = _AREG26, _AREG_CFLG = _AREG27, _AREG_FSR = _AREG28, _AREG_FIR = _AREG29, _AREG_FDR = _AREG30 } _Asm_app_reg; typedef enum { _CREG0, _CREG1, _CREG2, _CREG3, _CREG4, _CREG5, _CREG6, _CREG7, _CREG8, _CREG9, _CREG10, _CREG11, _CREG12, _CREG13, _CREG14, _CREG15, _CREG16, _CREG17, _CREG18, _CREG19, _CREG20, _CREG21, _CREG22, _CREG23, _CREG24, _CREG25, _CREG26, _CREG27, _CREG28, _CREG29, _CREG30, _CREG31, _CREG32, _CREG33, _CREG34, _CREG35, _CREG36, _CREG37, _CREG38, _CREG39, _CREG40, _CREG41, _CREG42, _CREG43, _CREG44, _CREG45, _CREG46, _CREG47, _CREG48, _CREG49, _CREG50, _CREG51, _CREG52, _CREG53, _CREG54, _CREG55, _CREG56, _CREG57, _CREG58, _CREG59, _CREG60, _CREG61, _CREG62, _CREG63, _CREG64, _CREG65, _CREG66, _CREG67, _CREG68, _CREG69, _CREG70, _CREG71, _CREG72, _CREG73, _CREG74, _CREG75, _CREG76, _CREG77, _CREG78, _CREG79, _CREG80, _CREG81, _CREG82, _CREG83, _CREG84, _CREG85, _CREG86, _CREG87, _CREG88, _CREG89, _CREG90, _CREG91, _CREG92, _CREG93, _CREG94, _CREG95, _CREG96, _CREG97, _CREG98, _CREG99, _CREG100, _CREG101, _CREG102, _CREG103, _CREG104, _CREG105, _CREG106, _CREG107, _CREG108, _CREG109, _CREG110, _CREG111, _CREG112, _CREG113, _CREG114, _CREG115, _CREG116, _CREG117, _CREG118, _CREG119, _CREG120, _CREG121, _CREG122, _CREG123, _CREG124, _CREG125, _CREG126, _CREG127, _CREG_DCR = _CREG0, _CREG_ITM = _CREG1, _CREG_IVA = _CREG2, _CREG_PTA = _CREG8, _CREG_GPTA = _CREG9, _CREG_IPSR = _CREG16, _CREG_ISR = _CREG17, _CREG_IIP = _CREG19, _CREG_IFA = _CREG20, _CREG_ITIR = _CREG21, _CREG_IIPA = _CREG22, _CREG_IFS = _CREG23, _CREG_IIM = _CREG24, _CREG_IHA = _CREG25, _CREG_LID = _CREG64, _CREG_IVR = _CREG65, _CREG_TPR = _CREG66, _CREG_EOI = _CREG67, _CREG_IRR0 = _CREG68, _CREG_IRR1 = _CREG69, _CREG_IRR2 = _CREG70, _CREG_IRR3 = _CREG71, _CREG_ITV = _CREG72, _CREG_PMV = _CREG73, _CREG_CMCV = _CREG74, _CREG_LRR0 = _CREG80, _CREG_LRR1 = _CREG81 } _Asm_cntl_reg; typedef enum { _NO_FENCE = 0x0, _UP_MEM_FENCE = 0x1, _UP_ALU_FENCE = 0x2, _UP_FLOP_FENCE = 0x4, _UP_SYS_FENCE = 0x8, _UP_CALL_FENCE = 0x10, _UP_BR_FENCE = 0x20, _DOWN_MEM_FENCE = 0x100, _DOWN_ALU_FENCE = 0x200, _DOWN_FLOP_FENCE= 0x400, _DOWN_SYS_FENCE = 0x800, _DOWN_CALL_FENCE= 0x1000, _DOWN_BR_FENCE = 0x2000 } _Asm_fence; # 47 "/usr/include/machine/sys/param.h" 2 3 4 # 38 "/usr/include/sys/param.h" 2 3 4 # 433 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/syslimits.h" 2 3 4 # 12 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/limits.h" 2 3 4 # 40 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 2 3 4 extern "C" { typedef unsigned int wint_t; typedef unsigned int wctype_t; #pragma extern wcscat, wcsncat, wcscpy, wcsncpy, wcslen #pragma extern wcsspn, wcscspn, wcscmp, wcsncmp, wcswcs, wcstok #pragma extern wcscoll, wcsxfrm, wcswidth, iswalnum, iswalpha, iswcntrl #pragma extern iswdigit, iswgraph, iswlower, iswprint, iswpunct, iswspace #pragma extern iswupper, iswxdigit, towlower, towupper, wctype, iswctype #pragma extern fgetwc, fgetws, fputwc, fputws, getwc, getwchar, putwc, putwchar #pragma extern ungetwc, wcstod, wcstol, wcstoul, wcsftime #pragma extern wcwidth #pragma extern getws, putws # 139 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 3 4 extern wchar_t *wcscat (wchar_t *, const wchar_t *); extern wchar_t *wcsncat (wchar_t *, const wchar_t *, size_t); extern wchar_t *wcscpy (wchar_t *, const wchar_t *); extern wchar_t *wcsncpy (wchar_t *, const wchar_t *, size_t); extern size_t wcslen (const wchar_t *); extern size_t wcsspn (const wchar_t *, const wchar_t *); extern size_t wcscspn (const wchar_t *, const wchar_t *); extern int wcscmp (const wchar_t *, const wchar_t *); extern int wcsncmp (const wchar_t *, const wchar_t *, size_t); extern size_t wcsftime (wchar_t *, size_t, const char *, const struct tm *); extern wchar_t *wcstok (wchar_t *, const wchar_t *); # 165 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 3 4 #pragma extern wcschr, wcsrchr, wcspbrk extern wchar_t *wcschr (const wchar_t *, wchar_t); extern wchar_t *wcsrchr (const wchar_t *, wchar_t); extern wchar_t *wcspbrk (const wchar_t *, const wchar_t *); extern wchar_t *wcswcs (const wchar_t *, const wchar_t *); extern int wcscoll (const wchar_t *, const wchar_t *); extern size_t wcsxfrm (wchar_t *, const wchar_t *, size_t); extern int wcwidth (wchar_t); extern int wcswidth (const wchar_t *, size_t); extern int iswalnum (wint_t); extern int iswalpha (wint_t); extern int iswcntrl (wint_t); extern int iswdigit (wint_t); extern int iswgraph (wint_t); extern int iswlower (wint_t); extern int iswprint (wint_t); extern int iswpunct (wint_t); extern int iswspace (wint_t); extern int iswupper (wint_t); extern int iswxdigit (wint_t); extern wint_t towlower (wint_t); extern wint_t towupper (wint_t); extern wctype_t wctype (const char *); extern int iswctype (wint_t, wctype_t); extern wint_t fgetwc (FILE *); extern wchar_t *fgetws (wchar_t *, int, FILE *); # 228 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 3 4 extern wint_t fputwc (wint_t, FILE *); extern wint_t putwc (wint_t, FILE *); extern wint_t putwchar (wint_t); extern int fputws (const wchar_t *, FILE *); extern wint_t getwc (FILE *); extern wint_t getwchar (void); extern wint_t ungetwc (wint_t, FILE *); extern double wcstod (const wchar_t *, wchar_t **); extern long int wcstol (const wchar_t *, wchar_t **, int); extern unsigned long int wcstoul (const wchar_t *, wchar_t **, int); extern wchar_t *getws (wchar_t *); extern int putws (const wchar_t *); # 256 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 3 4 #pragma extern iswblank extern int iswblank (wint_t); # 284 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/wchar.h" 3 4 } # 55 "/usr/local/include/g++-v3/cwchar" 2 3 extern "C" { typedef struct { int __fill[6]; } mbstate_t; } namespace std { using ::mbstate_t; } # 46 "/usr/local/include/g++-v3/bits/fpos.h" 2 3 namespace std { template< _StateT> class fpos { public: typedef _StateT __state_type; private: streamoff _M_off; __state_type _M_st; public: __state_type state() const { return _M_st; } void state(__state_type __st) { _M_st = __st; } fpos(): _M_off(streamoff()), _M_st(__state_type()) { } fpos(streamoff __off, __state_type __st = __state_type()) : _M_off(__off), _M_st(__st) { } operator streamoff() const { return _M_off; } fpos& operator+=(streamoff __off) { _M_off += __off; return *this; } fpos& operator-=(streamoff __off) { _M_off -= __off; return *this; } fpos operator+(streamoff __off) { fpos __t(*this); __t += __off; return __t; } fpos operator-(streamoff __off) { fpos __t(*this); __t -= __off; return __t; } bool operator==(const fpos& __pos) const { return _M_off == __pos._M_off; } bool operator!=(const fpos& __pos) const { return _M_off != __pos._M_off; } streamoff _M_position() const { return _M_off; } void _M_position(streamoff __off) { _M_off = __off; } }; typedef fpos streampos; } # 47 "/usr/local/include/g++-v3/iosfwd" 2 3 # 1 "/usr/local/include/g++-v3/bits/functexcept.h" 1 3 # 34 "/usr/local/include/g++-v3/bits/functexcept.h" 3 # 1 "/usr/local/include/g++-v3/exception_defines.h" 1 3 # 35 "/usr/local/include/g++-v3/bits/functexcept.h" 2 3 namespace std { void __throw_bad_exception(void); void __throw_bad_alloc(void); void __throw_bad_cast(void); void __throw_bad_typeid(void); void __throw_logic_error(const char* __s); void __throw_domain_error(const char* __s); void __throw_invalid_argument(const char* __s); void __throw_length_error(const char* __s); void __throw_out_of_range(const char* __s); void __throw_runtime_error(const char* __s); void __throw_range_error(const char* __s); void __throw_overflow_error(const char* __s); void __throw_underflow_error(const char* __s); void __throw_ios_failure(const char* __s); } # 48 "/usr/local/include/g++-v3/iosfwd" 2 3 namespace std { template< _CharT, _Traits = char_traits<_CharT> > class basic_ios; template< _CharT, _Traits = char_traits<_CharT> > class basic_streambuf; template< _CharT, _Traits = char_traits<_CharT> > class basic_istream; template< _CharT, _Traits = char_traits<_CharT> > class basic_ostream; template< _CharT, _Traits = char_traits<_CharT> > class basic_iostream; template< _CharT, _Traits = char_traits<_CharT>, _Alloc = allocator<_CharT> > class basic_stringbuf; template< _CharT, _Traits = char_traits<_CharT>, _Alloc = allocator<_CharT> > class basic_istringstream; template< _CharT, _Traits = char_traits<_CharT>, _Alloc = allocator<_CharT> > class basic_ostringstream; template< _CharT, _Traits = char_traits<_CharT>, _Alloc = allocator<_CharT> > class basic_stringstream; template< _CharT, _Traits = char_traits<_CharT> > class basic_filebuf; template< _CharT, _Traits = char_traits<_CharT> > class basic_ifstream; template< _CharT, _Traits = char_traits<_CharT> > class basic_ofstream; template< _CharT, _Traits = char_traits<_CharT> > class basic_fstream; template< _CharT, _Traits = char_traits<_CharT> > class istreambuf_iterator; template< _CharT, _Traits = char_traits<_CharT> > class ostreambuf_iterator; class ios_base; typedef basic_ios ios; typedef basic_streambuf streambuf; typedef basic_istream istream; typedef basic_ostream ostream; typedef basic_iostream iostream; typedef basic_stringbuf stringbuf; typedef basic_istringstream istringstream; typedef basic_ostringstream ostringstream; typedef basic_stringstream stringstream; typedef basic_filebuf filebuf; typedef basic_ifstream ifstream; typedef basic_ofstream ofstream; typedef basic_fstream fstream; typedef basic_ios wios; typedef basic_streambuf wstreambuf; typedef basic_istream wistream; typedef basic_ostream wostream; typedef basic_iostream wiostream; typedef basic_stringbuf wstringbuf; typedef basic_istringstream wistringstream; typedef basic_ostringstream wostringstream; typedef basic_stringstream wstringstream; typedef basic_filebuf wfilebuf; typedef basic_ifstream wifstream; typedef basic_ofstream wofstream; typedef basic_fstream wfstream; } # 45 "/usr/local/include/g++-v3/ios" 2 3 # 1 "/usr/local/include/g++-v3/exception" 1 3 # 40 "/usr/local/include/g++-v3/exception" 3 extern "C++" { namespace std { class exception { public: exception() throw() { } virtual ~exception() throw(); virtual const char* what() const throw(); }; class bad_exception : public exception { public: bad_exception() throw() { } virtual ~bad_exception() throw(); }; typedef void (*terminate_handler) (); typedef void (*unexpected_handler) (); terminate_handler set_terminate(terminate_handler) throw(); void terminate() __attribute__ ((__noreturn__)); unexpected_handler set_unexpected(unexpected_handler) throw(); void unexpected() __attribute__ ((__noreturn__)); # 98 "/usr/local/include/g++-v3/exception" 3 bool uncaught_exception() throw(); } namespace __gnu_cxx { void __verbose_terminate_handler (); } } # 46 "/usr/local/include/g++-v3/ios" 2 3 # 1 "/usr/local/include/g++-v3/bits/char_traits.h" 1 3 # 43 "/usr/local/include/g++-v3/bits/char_traits.h" 3 # 1 "/usr/local/include/g++-v3/cstring" 1 3 # 48 "/usr/local/include/g++-v3/cstring" 3 # 77 "/usr/local/include/g++-v3/cstring" 3 namespace std { using ::memcpy; using ::memmove; using ::strcpy; using ::strncpy; using ::strcat; using ::strncat; using ::memcmp; using ::strcmp; using ::strcoll; using ::strncmp; using ::strxfrm; using ::strcspn; using ::strspn; using ::strtok; using ::memset; using ::strerror; using ::strlen; using ::memchr; inline void* memchr(void* __p, int __c, size_t __n) { return memchr(const_cast(__p), __c, __n); } using ::strchr; inline char* strchr(char* __s1, int __n) { return __builtin_strchr(const_cast(__s1), __n); } using ::strpbrk; inline char* strpbrk(char* __s1, const char* __s2) { return __builtin_strpbrk(const_cast(__s1), __s2); } using ::strrchr; inline char* strrchr(char* __s1, int __n) { return __builtin_strrchr(const_cast(__s1), __n); } using ::strstr; inline char* strstr(char* __s1, const char* __s2) { return __builtin_strstr(const_cast(__s1), __s2); } } # 45 "/usr/local/include/g++-v3/bits/char_traits.h" 2 3 namespace std { template struct char_traits { typedef _CharT char_type; typedef unsigned long int_type; typedef streampos pos_type; typedef streamoff off_type; typedef mbstate_t state_type; static void assign(char_type& __c1, const char_type& __c2) { __c1 = __c2; } static bool eq(const char_type& __c1, const char_type& __c2) { return __c1 == __c2; } static bool lt(const char_type& __c1, const char_type& __c2) { return __c1 < __c2; } static int compare(const char_type* __s1, const char_type* __s2, size_t __n) { for (size_t __i = 0; __i < __n; ++__i) if (!eq(__s1[__i], __s2[__i])) return lt(__s1[__i], __s2[__i]) ? -1 : 1; return 0; } static size_t length(const char_type* __s) { const char_type* __p = __s; while (*__p) ++__p; return (__p - __s); } static const char_type* find(const char_type* __s, size_t __n, const char_type& __a) { for (const char_type* __p = __s; size_t(__p - __s) < __n; ++__p) if (*__p == __a) return __p; return 0; } static char_type* move(char_type* __s1, const char_type* __s2, size_t __n) { return (char_type*) memmove(__s1, __s2, __n * sizeof(char_type)); } static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) { return (char_type*) memcpy(__s1, __s2, __n * sizeof(char_type)); } static char_type* assign(char_type* __s, size_t __n, char_type __a) { for (char_type* __p = __s; __p < __s + __n; ++__p) assign(*__p, __a); return __s; } static char_type to_char_type(const int_type& __c) { return char_type(__c); } static int_type to_int_type(const char_type& __c) { return int_type(__c); } static bool eq_int_type(const int_type& __c1, const int_type& __c2) { return __c1 == __c2; } static int_type eof() { return static_cast(-1); } static int_type not_eof(const int_type& __c) { return eq_int_type(__c, eof()) ? int_type(0) : __c; } }; template<> struct char_traits { typedef char char_type; typedef int int_type; typedef streampos pos_type; typedef streamoff off_type; typedef mbstate_t state_type; static void assign(char_type& __c1, const char_type& __c2) { __c1 = __c2; } static bool eq(const char_type& __c1, const char_type& __c2) { return __c1 == __c2; } static bool lt(const char_type& __c1, const char_type& __c2) { return __c1 < __c2; } static int compare(const char_type* __s1, const char_type* __s2, size_t __n) { return memcmp(__s1, __s2, __n); } static size_t length(const char_type* __s) { return strlen(__s); } static const char_type* find(const char_type* __s, size_t __n, const char_type& __a) { return static_cast(memchr(__s, __a, __n)); } static char_type* move(char_type* __s1, const char_type* __s2, size_t __n) { return static_cast(memmove(__s1, __s2, __n)); } static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) { return static_cast(memcpy(__s1, __s2, __n)); } static char_type* assign(char_type* __s, size_t __n, char_type __a) { return static_cast(memset(__s, __a, __n)); } static char_type to_char_type(const int_type& __c) { return static_cast(__c); } static int_type to_int_type(const char_type& __c) { return static_cast(static_cast(__c)); } static bool eq_int_type(const int_type& __c1, const int_type& __c2) { return __c1 == __c2; } static int_type eof() { return static_cast((-1)); } static int_type not_eof(const int_type& __c) { return (__c == eof()) ? 0 : __c; } }; # 269 "/usr/local/include/g++-v3/bits/char_traits.h" 3 template< _CharT, _Traits> struct _Char_traits_match { _CharT _M_c; _Char_traits_match(_CharT const& __c) : _M_c(__c) { } bool operator()(_CharT const& __a) { return _Traits::eq(_M_c, __a); } }; } # 47 "/usr/local/include/g++-v3/ios" 2 3 # 1 "/usr/local/include/g++-v3/bits/localefwd.h" 1 3 # 44 "/usr/local/include/g++-v3/bits/localefwd.h" 3 # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/c++locale.h" 1 3 # 36 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/c++locale.h" 3 # 1 "/usr/local/include/g++-v3/clocale" 1 3 # 48 "/usr/local/include/g++-v3/clocale" 3 # 1 "/usr/include/locale.h" 1 3 4 # 10 "/usr/include/locale.h" 3 4 extern "C" { # 23 "/usr/include/locale.h" 3 4 # 1 "/usr/include/sys/_null.h" 1 3 4 # 24 "/usr/include/locale.h" 2 3 4 struct lconv { char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; }; #pragma extern setlocale, localeconv extern char *setlocale(int, const char *); extern struct lconv *localeconv(void); # 107 "/usr/include/locale.h" 3 4 #pragma extern __locale_names extern char __locale_names[6 +1][255 +1]; # 119 "/usr/include/locale.h" 3 4 struct locale_data { char LC_ALL_D[59]; char LC_COLLATE_D[59]; char LC_CTYPE_D[59]; char LC_MONETARY_D[59]; char LC_NUMERIC_D[59]; char LC_TIME_D[59]; char LC_MESSAGES_D[59]; }; #pragma extern getlocale extern struct locale_data *getlocale(int); # 169 "/usr/include/locale.h" 3 4 #pragma extern __err_string extern char *__err_string; # 188 "/usr/include/locale.h" 3 4 } # 50 "/usr/local/include/g++-v3/clocale" 2 3 namespace std { using ::lconv; using ::setlocale; using ::localeconv; } # 37 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/c++locale.h" 2 3 namespace std { typedef int* __c_locale; } # 47 "/usr/local/include/g++-v3/bits/localefwd.h" 2 3 # 1 "/usr/local/include/g++-v3/climits" 1 3 # 48 "/usr/local/include/g++-v3/climits" 3 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/limits.h" 1 3 4 # 50 "/usr/local/include/g++-v3/climits" 2 3 # 48 "/usr/local/include/g++-v3/bits/localefwd.h" 2 3 # 1 "/usr/local/include/g++-v3/cctype" 1 3 # 47 "/usr/local/include/g++-v3/cctype" 3 # 65 "/usr/local/include/g++-v3/cctype" 3 namespace std { using ::isalnum; using ::isalpha; using ::iscntrl; using ::isdigit; using ::isgraph; using ::islower; using ::isprint; using ::ispunct; using ::isspace; using ::isupper; using ::isxdigit; using ::tolower; using ::toupper; } # 49 "/usr/local/include/g++-v3/bits/localefwd.h" 2 3 # 1 "/usr/local/include/g++-v3/string" 1 3 # 44 "/usr/local/include/g++-v3/string" 3 # 1 "/usr/local/include/g++-v3/memory" 1 3 # 53 "/usr/local/include/g++-v3/memory" 3 # 1 "/usr/local/include/g++-v3/bits/stl_algobase.h" 1 3 # 67 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 # 1 "/usr/local/include/g++-v3/cstdlib" 1 3 # 48 "/usr/local/include/g++-v3/cstdlib" 3 # 84 "/usr/local/include/g++-v3/cstdlib" 3 namespace std { using ::div_t; using ::ldiv_t; using ::abort; using ::abs; using ::atexit; using ::atof; using ::atoi; using ::atol; using ::bsearch; using ::calloc; using ::div; using ::exit; using ::free; using ::getenv; using ::labs; using ::ldiv; using ::malloc; using ::mblen; using ::mbstowcs; using ::mbtowc; using ::qsort; using ::rand; using ::realloc; using ::srand; using ::strtod; using ::strtol; using ::strtoul; using ::system; using ::wcstombs; using ::wctomb; inline long abs(long __i) { return labs(__i); } inline ldiv_t div(long __i, long __j) { return ldiv(__i, __j); } } # 68 "/usr/local/include/g++-v3/bits/stl_algobase.h" 2 3 # 1 "/usr/local/include/g++-v3/new" 1 3 # 44 "/usr/local/include/g++-v3/new" 3 extern "C++" { namespace std { class bad_alloc : public exception { public: bad_alloc() throw() { } virtual ~bad_alloc() throw(); }; struct nothrow_t { }; extern const nothrow_t nothrow; typedef void (*new_handler)(); new_handler set_new_handler(new_handler); } # 79 "/usr/local/include/g++-v3/new" 3 void *operator new(std::size_t) throw (std::bad_alloc); void *operator new[](std::size_t) throw (std::bad_alloc); void operator delete(void *) throw(); void operator delete[](void *) throw(); void *operator new(std::size_t, const std::nothrow_t&) throw(); void *operator new[](std::size_t, const std::nothrow_t&) throw(); void operator delete(void *, const std::nothrow_t&) throw(); void operator delete[](void *, const std::nothrow_t&) throw(); inline void *operator new(std::size_t, void *place) throw() { return place; } inline void *operator new[](std::size_t, void *place) throw() { return place; } } # 70 "/usr/local/include/g++-v3/bits/stl_algobase.h" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_pair.h" 1 3 # 64 "/usr/local/include/g++-v3/bits/stl_pair.h" 3 namespace std { template struct pair { typedef _T1 first_type; typedef _T2 second_type; _T1 first; _T2 second; pair() : first(), second() {} pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) {} template pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {} }; template inline bool operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return __x.first == __y.first && __x.second == __y.second; } template inline bool operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return __x.first < __y.first || (!(__y.first < __x.first) && __x.second < __y.second); } template inline bool operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return !(__x == __y); } template inline bool operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return __y < __x; } template inline bool operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return !(__y < __x); } template inline bool operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { return !(__x < __y); } # 140 "/usr/local/include/g++-v3/bits/stl_pair.h" 3 template inline pair<_T1, _T2> make_pair(_T1 __x, _T2 __y) { return pair<_T1, _T2>(__x, __y); } } # 72 "/usr/local/include/g++-v3/bits/stl_algobase.h" 2 3 # 1 "/usr/local/include/g++-v3/bits/type_traits.h" 1 3 # 53 "/usr/local/include/g++-v3/bits/type_traits.h" 3 # 90 "/usr/local/include/g++-v3/bits/type_traits.h" 3 struct __true_type {}; struct __false_type {}; template struct __type_traits { typedef __true_type this_dummy_member_must_be_first; # 113 "/usr/local/include/g++-v3/bits/type_traits.h" 3 typedef __false_type has_trivial_default_constructor; typedef __false_type has_trivial_copy_constructor; typedef __false_type has_trivial_assignment_operator; typedef __false_type has_trivial_destructor; typedef __false_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template<> struct __type_traits { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template struct __type_traits<_Tp*> { typedef __true_type has_trivial_default_constructor; typedef __true_type has_trivial_copy_constructor; typedef __true_type has_trivial_assignment_operator; typedef __true_type has_trivial_destructor; typedef __true_type is_POD_type; }; template struct _Is_integer { typedef __false_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template<> struct _Is_integer { typedef __true_type _Integral; }; template< _Tp> struct _Is_normal_iterator { typedef __false_type _Normal; }; namespace std { template< _Iterator, _Container> class __normal_iterator; } template< _Iterator, _Container> struct _Is_normal_iterator< std::__normal_iterator<_Iterator, _Container> > { typedef __true_type _Normal; }; # 73 "/usr/local/include/g++-v3/bits/stl_algobase.h" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_iterator_base_types.h" 1 3 # 68 "/usr/local/include/g++-v3/bits/stl_iterator_base_types.h" 3 namespace std { # 80 "/usr/local/include/g++-v3/bits/stl_iterator_base_types.h" 3 struct input_iterator_tag {}; struct output_iterator_tag {}; struct forward_iterator_tag : public input_iterator_tag {}; struct bidirectional_iterator_tag : public forward_iterator_tag {}; struct random_access_iterator_tag : public bidirectional_iterator_tag {}; # 100 "/usr/local/include/g++-v3/bits/stl_iterator_base_types.h" 3 template< _Category, _Tp, _Distance = ptrdiff_t, _Pointer = _Tp*, _Reference = _Tp&> struct iterator { typedef _Category iterator_category; typedef _Tp value_type; typedef _Distance difference_type; typedef _Pointer pointer; typedef _Reference reference; }; template< _Iterator> struct iterator_traits { typedef _Iterator::iterator_category iterator_category; typedef _Iterator::value_type value_type; typedef _Iterator::difference_type difference_type; typedef _Iterator::pointer pointer; typedef _Iterator::reference reference; }; template< _Tp> struct iterator_traits<_Tp*> { typedef random_access_iterator_tag iterator_category; typedef _Tp value_type; typedef ptrdiff_t difference_type; typedef _Tp* pointer; typedef _Tp& reference; }; template< _Tp> struct iterator_traits { typedef random_access_iterator_tag iterator_category; typedef _Tp value_type; typedef ptrdiff_t difference_type; typedef const _Tp* pointer; typedef const _Tp& reference; }; template< _Iter> inline iterator_traits<_Iter>::iterator_category __iterator_category(const _Iter&) { return iterator_traits<_Iter>::iterator_category(); } } # 74 "/usr/local/include/g++-v3/bits/stl_algobase.h" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_iterator_base_funcs.h" 1 3 # 68 "/usr/local/include/g++-v3/bits/stl_iterator_base_funcs.h" 3 # 1 "/usr/local/include/g++-v3/bits/concept_check.h" 1 3 # 39 "/usr/local/include/g++-v3/bits/concept_check.h" 3 # 69 "/usr/local/include/g++-v3/bits/stl_iterator_base_funcs.h" 2 3 namespace std { template< _InputIterator> inline iterator_traits<_InputIterator>::difference_type __distance(_InputIterator __first, _InputIterator __last, input_iterator_tag) { iterator_traits<_InputIterator>::difference_type __n = 0; while (__first != __last) { ++__first; ++__n; } return __n; } template< _RandomAccessIterator> inline iterator_traits<_RandomAccessIterator>::difference_type __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag) { return __last - __first; } # 111 "/usr/local/include/g++-v3/bits/stl_iterator_base_funcs.h" 3 template< _InputIterator> inline iterator_traits<_InputIterator>::difference_type distance(_InputIterator __first, _InputIterator __last) { return __distance(__first, __last, __iterator_category(__first)); } template< _InputIter, _Distance> inline void __advance(_InputIter& __i, _Distance __n, input_iterator_tag) { while (__n--) ++__i; } template< _BidirectionalIterator, _Distance> inline void __advance(_BidirectionalIterator& __i, _Distance __n, bidirectional_iterator_tag) { if (__n > 0) while (__n--) ++__i; else while (__n++) --__i; } template< _RandomAccessIterator, _Distance> inline void __advance(_RandomAccessIterator& __i, _Distance __n, random_access_iterator_tag) { __i += __n; } # 164 "/usr/local/include/g++-v3/bits/stl_iterator_base_funcs.h" 3 template< _InputIterator, _Distance> inline void advance(_InputIterator& __i, _Distance __n) { __advance(__i, __n, __iterator_category(__i)); } } # 75 "/usr/local/include/g++-v3/bits/stl_algobase.h" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_iterator.h" 1 3 # 68 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 namespace std { # 89 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 template< _Iterator> class reverse_iterator : public iterator< iterator_traits<_Iterator>::iterator_category, iterator_traits<_Iterator>::value_type, iterator_traits<_Iterator>::difference_type, iterator_traits<_Iterator>::pointer, iterator_traits<_Iterator>::reference> { protected: _Iterator current; public: typedef _Iterator iterator_type; typedef iterator_traits<_Iterator>::difference_type difference_type; typedef iterator_traits<_Iterator>::reference reference; typedef iterator_traits<_Iterator>::pointer pointer; public: reverse_iterator() { } explicit reverse_iterator(iterator_type __x) : current(__x) { } reverse_iterator(const reverse_iterator& __x) : current(__x.current) { } template< _Iter> reverse_iterator(const reverse_iterator<_Iter>& __x) : current(__x.base()) { } iterator_type base() const { return current; } reference operator*() const { _Iterator __tmp = current; return *--__tmp; } pointer operator->() const { return &(operator*()); } reverse_iterator& operator++() { --current; return *this; } reverse_iterator operator++(int) { reverse_iterator __tmp = *this; --current; return __tmp; } reverse_iterator& operator--() { ++current; return *this; } reverse_iterator operator--(int) { reverse_iterator __tmp = *this; ++current; return __tmp; } reverse_iterator operator+(difference_type __n) const { return reverse_iterator(current - __n); } reverse_iterator& operator+=(difference_type __n) { current -= __n; return *this; } reverse_iterator operator-(difference_type __n) const { return reverse_iterator(current + __n); } reverse_iterator& operator-=(difference_type __n) { current += __n; return *this; } reference operator[](difference_type __n) const { return *(*this + __n); } }; # 269 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 template< _Iterator> inline bool operator==(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return __x.base() == __y.base(); } template< _Iterator> inline bool operator<(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return __y.base() < __x.base(); } template< _Iterator> inline bool operator!=(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return !(__x == __y); } template< _Iterator> inline bool operator>(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return __y < __x; } template< _Iterator> inline bool operator<=(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return !(__y < __x); } template< _Iterator> inline bool operator>=(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return !(__x < __y); } template< _Iterator> inline reverse_iterator<_Iterator>::difference_type operator-(const reverse_iterator<_Iterator>& __x, const reverse_iterator<_Iterator>& __y) { return __y.base() - __x.base(); } template< _Iterator> inline reverse_iterator<_Iterator> operator+( reverse_iterator<_Iterator>::difference_type __n, const reverse_iterator<_Iterator>& __x) { return reverse_iterator<_Iterator>(__x.base() - __n); } # 327 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 template< _Container> class back_insert_iterator : public iterator { protected: _Container* container; public: typedef _Container container_type; explicit back_insert_iterator(_Container& __x) : container(&__x) { } # 353 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 back_insert_iterator& operator=( _Container::const_reference __value) { container->push_back(__value); return *this; } back_insert_iterator& operator*() { return *this; } back_insert_iterator& operator++() { return *this; } back_insert_iterator operator++(int) { return *this; } }; # 384 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 template< _Container> inline back_insert_iterator<_Container> back_inserter(_Container& __x) { return back_insert_iterator<_Container>(__x); } # 397 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 template< _Container> class front_insert_iterator : public iterator { protected: _Container* container; public: typedef _Container container_type; explicit front_insert_iterator(_Container& __x) : container(&__x) { } # 422 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 front_insert_iterator& operator=( _Container::const_reference __value) { container->push_front(__value); return *this; } front_insert_iterator& operator*() { return *this; } front_insert_iterator& operator++() { return *this; } front_insert_iterator operator++(int) { return *this; } }; # 453 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 template< _Container> inline front_insert_iterator<_Container> front_inserter(_Container& __x) { return front_insert_iterator<_Container>(__x); } # 470 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 template< _Container> class insert_iterator : public iterator { protected: _Container* container; _Container::iterator iter; public: typedef _Container container_type; insert_iterator(_Container& __x, _Container::iterator __i) : container(&__x), iter(__i) {} # 512 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 insert_iterator& operator=(const _Container::const_reference __value) { iter = container->insert(iter, __value); ++iter; return *this; } insert_iterator& operator*() { return *this; } insert_iterator& operator++() { return *this; } insert_iterator& operator++(int) { return *this; } }; # 544 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 template< _Container, _Iterator> inline insert_iterator<_Container> inserter(_Container& __x, _Iterator __i) { return insert_iterator<_Container>(__x, _Container::iterator(__i)); } # 559 "/usr/local/include/g++-v3/bits/stl_iterator.h" 3 template< _Iterator, _Container> class __normal_iterator : public iterator< iterator_traits<_Iterator>::iterator_category, iterator_traits<_Iterator>::value_type, iterator_traits<_Iterator>::difference_type, iterator_traits<_Iterator>::pointer, iterator_traits<_Iterator>::reference> { protected: _Iterator _M_current; public: typedef iterator_traits<_Iterator>::difference_type difference_type; typedef iterator_traits<_Iterator>::reference reference; typedef iterator_traits<_Iterator>::pointer pointer; __normal_iterator() : _M_current(_Iterator()) { } explicit __normal_iterator(const _Iterator& __i) : _M_current(__i) { } template< _Iter> inline __normal_iterator(const __normal_iterator<_Iter, _Container>& __i) : _M_current(__i.base()) { } reference operator*() const { return *_M_current; } pointer operator->() const { return _M_current; } __normal_iterator& operator++() { ++_M_current; return *this; } __normal_iterator operator++(int) { return __normal_iterator(_M_current++); } __normal_iterator& operator--() { --_M_current; return *this; } __normal_iterator operator--(int) { return __normal_iterator(_M_current--); } reference operator[](const difference_type& __n) const { return _M_current[__n]; } __normal_iterator& operator+=(const difference_type& __n) { _M_current += __n; return *this; } __normal_iterator operator+(const difference_type& __n) const { return __normal_iterator(_M_current + __n); } __normal_iterator& operator-=(const difference_type& __n) { _M_current -= __n; return *this; } __normal_iterator operator-(const difference_type& __n) const { return __normal_iterator(_M_current - __n); } difference_type operator-(const __normal_iterator& __i) const { return _M_current - __i._M_current; } const _Iterator& base() const { return _M_current; } }; template< _IteratorL, _IteratorR, _Container> inline bool operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return __lhs.base() == __rhs.base(); } template< _IteratorL, _IteratorR, _Container> inline bool operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return !(__lhs == __rhs); } template< _IteratorL, _IteratorR, _Container> inline bool operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return __lhs.base() < __rhs.base(); } template< _IteratorL, _IteratorR, _Container> inline bool operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return __rhs < __lhs; } template< _IteratorL, _IteratorR, _Container> inline bool operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return !(__rhs < __lhs); } template< _IteratorL, _IteratorR, _Container> inline bool operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) { return !(__lhs < __rhs); } template< _Iterator, _Container> inline __normal_iterator<_Iterator, _Container> operator+( __normal_iterator<_Iterator, _Container>::difference_type __n, const __normal_iterator<_Iterator, _Container>& __i) { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } } # 76 "/usr/local/include/g++-v3/bits/stl_algobase.h" 2 3 namespace std { # 91 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _ForwardIter1, _ForwardIter2> inline void iter_swap(_ForwardIter1 __a, _ForwardIter2 __b) { typedef iterator_traits<_ForwardIter1>::value_type _ValueType1; typedef iterator_traits<_ForwardIter2>::value_type _ValueType2; _ValueType1 __tmp = *__a; *__a = *__b; *__b = __tmp; } # 118 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _Tp> inline void swap(_Tp& __a, _Tp& __b) { _Tp __tmp = __a; __a = __b; __b = __tmp; } # 146 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _Tp> inline const _Tp& min(const _Tp& __a, const _Tp& __b) { if (__b < __a) return __b; return __a; } # 166 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _Tp> inline const _Tp& max(const _Tp& __a, const _Tp& __b) { if (__a < __b) return __b; return __a; } # 186 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _Tp, _Compare> inline const _Tp& min(const _Tp& __a, const _Tp& __b, _Compare __comp) { if (__comp(__b, __a)) return __b; return __a; } # 204 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _Tp, _Compare> inline const _Tp& max(const _Tp& __a, const _Tp& __b, _Compare __comp) { if (__comp(__a, __b)) return __b; return __a; } # 221 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _InputIter, _OutputIter> inline _OutputIter __copy(_InputIter __first, _InputIter __last, _OutputIter __result, input_iterator_tag) { for ( ; __first != __last; ++__result, ++__first) *__result = *__first; return __result; } template< _RandomAccessIter, _OutputIter> inline _OutputIter __copy(_RandomAccessIter __first, _RandomAccessIter __last, _OutputIter __result, random_access_iterator_tag) { typedef iterator_traits<_RandomAccessIter>::difference_type _Distance; for (_Distance __n = __last - __first; __n > 0; --__n) { *__result = *__first; ++__first; ++__result; } return __result; } template< _Tp> inline _Tp* __copy_trivial(const _Tp* __first, const _Tp* __last, _Tp* __result) { memmove(__result, __first, sizeof(_Tp) * (__last - __first)); return __result + (__last - __first); } template< _InputIter, _OutputIter> inline _OutputIter __copy_aux2(_InputIter __first, _InputIter __last, _OutputIter __result, __false_type) { return __copy(__first, __last, __result, __iterator_category(__first)); } template< _InputIter, _OutputIter> inline _OutputIter __copy_aux2(_InputIter __first, _InputIter __last, _OutputIter __result, __true_type) { return __copy(__first, __last, __result, __iterator_category(__first)); } template< _Tp> inline _Tp* __copy_aux2(_Tp* __first, _Tp* __last, _Tp* __result, __true_type) { return __copy_trivial(__first, __last, __result); } template< _Tp> inline _Tp* __copy_aux2(const _Tp* __first, const _Tp* __last, _Tp* __result, __true_type) { return __copy_trivial(__first, __last, __result); } template< _InputIter, _OutputIter> inline _OutputIter __copy_ni2(_InputIter __first, _InputIter __last, _OutputIter __result, __true_type) { typedef iterator_traits<_InputIter>::value_type _ValueType; typedef __type_traits<_ValueType>::has_trivial_assignment_operator _Trivial; return _OutputIter(__copy_aux2(__first, __last, __result.base(), _Trivial())); } template< _InputIter, _OutputIter> inline _OutputIter __copy_ni2(_InputIter __first, _InputIter __last, _OutputIter __result, __false_type) { typedef iterator_traits<_InputIter>::value_type _ValueType; typedef __type_traits<_ValueType>::has_trivial_assignment_operator _Trivial; return __copy_aux2(__first, __last, __result, _Trivial()); } template< _InputIter, _OutputIter> inline _OutputIter __copy_ni1(_InputIter __first, _InputIter __last, _OutputIter __result, __true_type) { typedef _Is_normal_iterator<_OutputIter>::_Normal __Normal; return __copy_ni2(__first.base(), __last.base(), __result, __Normal()); } template< _InputIter, _OutputIter> inline _OutputIter __copy_ni1(_InputIter __first, _InputIter __last, _OutputIter __result, __false_type) { typedef _Is_normal_iterator<_OutputIter>::_Normal __Normal; return __copy_ni2(__first, __last, __result, __Normal()); } # 339 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _InputIter, _OutputIter> inline _OutputIter copy(_InputIter __first, _InputIter __last, _OutputIter __result) { typedef _Is_normal_iterator<_InputIter>::_Normal __Normal; return __copy_ni1(__first, __last, __result, __Normal()); } template< _BidirectionalIter1, _BidirectionalIter2> inline _BidirectionalIter2 __copy_backward(_BidirectionalIter1 __first, _BidirectionalIter1 __last, _BidirectionalIter2 __result, bidirectional_iterator_tag) { while (__first != __last) *--__result = *--__last; return __result; } template< _RandomAccessIter, _BidirectionalIter> inline _BidirectionalIter __copy_backward(_RandomAccessIter __first, _RandomAccessIter __last, _BidirectionalIter __result, random_access_iterator_tag) { iterator_traits<_RandomAccessIter>::difference_type __n; for (__n = __last - __first; __n > 0; --__n) *--__result = *--__last; return __result; } template< _BidirectionalIter1, _BidirectionalIter2, _BoolType> struct __copy_backward_dispatch { static _BidirectionalIter2 copy(_BidirectionalIter1 __first, _BidirectionalIter1 __last, _BidirectionalIter2 __result) { return __copy_backward(__first, __last, __result, __iterator_category(__first)); } }; template< _Tp> struct __copy_backward_dispatch<_Tp*, _Tp*, __true_type> { static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) { const ptrdiff_t _Num = __last - __first; memmove(__result - _Num, __first, sizeof(_Tp) * _Num); return __result - _Num; } }; template< _Tp> struct __copy_backward_dispatch { static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) { return __copy_backward_dispatch<_Tp*, _Tp*, __true_type> ::copy(__first, __last, __result); } }; template< _BI1, _BI2> inline _BI2 __copy_backward_aux(_BI1 __first, _BI1 __last, _BI2 __result) { typedef __type_traits< iterator_traits<_BI2>::value_type> ::has_trivial_assignment_operator _Trivial; return __copy_backward_dispatch<_BI1, _BI2, _Trivial> ::copy(__first, __last, __result); } template < _BI1, _BI2> inline _BI2 __copy_backward_output_normal_iterator(_BI1 __first, _BI1 __last, _BI2 __result, __true_type) { return _BI2(__copy_backward_aux(__first, __last, __result.base())); } template < _BI1, _BI2> inline _BI2 __copy_backward_output_normal_iterator(_BI1 __first, _BI1 __last, _BI2 __result, __false_type) { return __copy_backward_aux(__first, __last, __result); } template < _BI1, _BI2> inline _BI2 __copy_backward_input_normal_iterator(_BI1 __first, _BI1 __last, _BI2 __result, __true_type) { typedef _Is_normal_iterator<_BI2>::_Normal __Normal; return __copy_backward_output_normal_iterator(__first.base(), __last.base(), __result, __Normal()); } template < _BI1, _BI2> inline _BI2 __copy_backward_input_normal_iterator(_BI1 __first, _BI1 __last, _BI2 __result, __false_type) { typedef _Is_normal_iterator<_BI2>::_Normal __Normal; return __copy_backward_output_normal_iterator(__first, __last, __result, __Normal()); } # 477 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template < _BI1, _BI2> inline _BI2 copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) { typedef _Is_normal_iterator<_BI1>::_Normal __Normal; return __copy_backward_input_normal_iterator(__first, __last, __result, __Normal()); } # 509 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _ForwardIter, _Tp> void fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __value) { for ( ; __first != __last; ++__first) *__first = __value; } # 531 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _OutputIter, _Size, _Tp> _OutputIter fill_n(_OutputIter __first, _Size __n, const _Tp& __value) { for ( ; __n > 0; --__n, ++__first) *__first = __value; return __first; } inline void fill(unsigned char* __first, unsigned char* __last, const unsigned char& __c) { unsigned char __tmp = __c; memset(__first, __tmp, __last - __first); } inline void fill(signed char* __first, signed char* __last, const signed char& __c) { signed char __tmp = __c; memset(__first, static_cast(__tmp), __last - __first); } inline void fill(char* __first, char* __last, const char& __c) { char __tmp = __c; memset(__first, static_cast(__tmp), __last - __first); } template< _Size> inline unsigned char* fill_n(unsigned char* __first, _Size __n, const unsigned char& __c) { fill(__first, __first + __n, __c); return __first + __n; } template< _Size> inline signed char* fill_n(char* __first, _Size __n, const signed char& __c) { fill(__first, __first + __n, __c); return __first + __n; } template< _Size> inline char* fill_n(char* __first, _Size __n, const char& __c) { fill(__first, __first + __n, __c); return __first + __n; } # 606 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _InputIter1, _InputIter2> pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2) { while (__first1 != __last1 && *__first1 == *__first2) { ++__first1; ++__first2; } return pair<_InputIter1, _InputIter2>(__first1, __first2); } # 640 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _InputIter1, _InputIter2, _BinaryPredicate> pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _BinaryPredicate __binary_pred) { while (__first1 != __last1 && __binary_pred(*__first1, *__first2)) { ++__first1; ++__first2; } return pair<_InputIter1, _InputIter2>(__first1, __first2); } # 668 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _InputIter1, _InputIter2> inline bool equal(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2) { for ( ; __first1 != __last1; ++__first1, ++__first2) if (!(*__first1 == *__first2)) return false; return true; } # 699 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _InputIter1, _InputIter2, _BinaryPredicate> inline bool equal(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _BinaryPredicate __binary_pred) { for ( ; __first1 != __last1; ++__first1, ++__first2) if (!__binary_pred(*__first1, *__first2)) return false; return true; } # 732 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _InputIter1, _InputIter2> bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2) { for ( ; __first1 != __last1 && __first2 != __last2 ; ++__first1, ++__first2) { if (*__first1 < *__first2) return true; if (*__first2 < *__first1) return false; } return __first1 == __last1 && __first2 != __last2; } # 767 "/usr/local/include/g++-v3/bits/stl_algobase.h" 3 template< _InputIter1, _InputIter2, _Compare> bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _Compare __comp) { for ( ; __first1 != __last1 && __first2 != __last2 ; ++__first1, ++__first2) { if (__comp(*__first1, *__first2)) return true; if (__comp(*__first2, *__first1)) return false; } return __first1 == __last1 && __first2 != __last2; } inline bool lexicographical_compare(const unsigned char* __first1, const unsigned char* __last1, const unsigned char* __first2, const unsigned char* __last2) { const size_t __len1 = __last1 - __first1; const size_t __len2 = __last2 - __first2; const int __result = memcmp(__first1, __first2, min(__len1, __len2)); return __result != 0 ? __result < 0 : __len1 < __len2; } inline bool lexicographical_compare(const char* __first1, const char* __last1, const char* __first2, const char* __last2) { return lexicographical_compare((const signed char*) __first1, (const signed char*) __last1, (const signed char*) __first2, (const signed char*) __last2); } } # 55 "/usr/local/include/g++-v3/memory" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_alloc.h" 1 3 # 84 "/usr/local/include/g++-v3/bits/stl_alloc.h" 3 # 1 "/usr/local/include/g++-v3/cassert" 1 3 # 47 "/usr/local/include/g++-v3/cassert" 3 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/assert.h" 1 3 4 # 17 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/assert.h" 3 4 extern "C" { # 31 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/assert.h" 3 4 #pragma extern __assert extern void __assert(const char *, const char *, int); # 55 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/assert.h" 3 4 } # 49 "/usr/local/include/g++-v3/cassert" 2 3 # 85 "/usr/local/include/g++-v3/bits/stl_alloc.h" 2 3 # 1 "/usr/local/include/g++-v3/bits/functexcept.h" 1 3 # 34 "/usr/local/include/g++-v3/bits/functexcept.h" 3 # 1 "/usr/local/include/g++-v3/exception_defines.h" 1 3 # 35 "/usr/local/include/g++-v3/bits/functexcept.h" 2 3 namespace std { void __throw_bad_exception(void); void __throw_bad_alloc(void); void __throw_bad_cast(void); void __throw_bad_typeid(void); void __throw_logic_error(const char* __s); void __throw_domain_error(const char* __s); void __throw_invalid_argument(const char* __s); void __throw_length_error(const char* __s); void __throw_out_of_range(const char* __s); void __throw_runtime_error(const char* __s); void __throw_range_error(const char* __s); void __throw_overflow_error(const char* __s); void __throw_underflow_error(const char* __s); void __throw_ios_failure(const char* __s); } # 86 "/usr/local/include/g++-v3/bits/stl_alloc.h" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_threads.h" 1 3 # 54 "/usr/local/include/g++-v3/bits/stl_threads.h" 3 namespace std { struct _Refcount_Base { typedef size_t _RC_t; volatile _RC_t _M_ref_count; __gthread_mutex_t _M_ref_count_lock; _Refcount_Base(_RC_t __n) : _M_ref_count(__n) { __gthread_mutex_t __tmp = 0; _M_ref_count_lock = __tmp; } void _M_incr() { __gthread_mutex_lock(&_M_ref_count_lock); ++_M_ref_count; __gthread_mutex_unlock(&_M_ref_count_lock); } _RC_t _M_decr() { __gthread_mutex_lock(&_M_ref_count_lock); volatile _RC_t __tmp = --_M_ref_count; __gthread_mutex_unlock(&_M_ref_count_lock); return __tmp; } }; # 109 "/usr/local/include/g++-v3/bits/stl_threads.h" 3 template struct _Swap_lock_struct { static __gthread_mutex_t _S_swap_lock; }; template __gthread_mutex_t _Swap_lock_struct<__dummy>::_S_swap_lock = 0; inline unsigned long _Atomic_swap(unsigned long * __p, unsigned long __q) { __gthread_mutex_lock(&_Swap_lock_struct<0>::_S_swap_lock); unsigned long __result = *__p; *__p = __q; __gthread_mutex_unlock(&_Swap_lock_struct<0>::_S_swap_lock); return __result; } # 151 "/usr/local/include/g++-v3/bits/stl_threads.h" 3 struct _STL_mutex_lock { __gthread_mutex_t _M_lock; void _M_initialize() { # 184 "/usr/local/include/g++-v3/bits/stl_threads.h" 3 } void _M_acquire_lock() { __gthread_mutex_lock(&_M_lock); } void _M_release_lock() { __gthread_mutex_unlock(&_M_lock); } }; # 220 "/usr/local/include/g++-v3/bits/stl_threads.h" 3 struct _STL_auto_lock { _STL_mutex_lock& _M_lock; _STL_auto_lock(_STL_mutex_lock& __lock) : _M_lock(__lock) { _M_lock._M_acquire_lock(); } ~_STL_auto_lock() { _M_lock._M_release_lock(); } private: void operator=(const _STL_auto_lock&); _STL_auto_lock(const _STL_auto_lock&); }; } # 87 "/usr/local/include/g++-v3/bits/stl_alloc.h" 2 3 namespace std { # 98 "/usr/local/include/g++-v3/bits/stl_alloc.h" 3 class __new_alloc { public: static void* allocate(size_t __n) { return ::operator new(__n); } static void deallocate(void* __p, size_t) { ::operator delete(__p); } }; # 121 "/usr/local/include/g++-v3/bits/stl_alloc.h" 3 template class __malloc_alloc_template { private: static void* _S_oom_malloc(size_t); static void* _S_oom_realloc(void*, size_t); static void (* __malloc_alloc_oom_handler)(); public: static void* allocate(size_t __n) { void* __result = malloc(__n); if (0 == __result) __result = _S_oom_malloc(__n); return __result; } static void deallocate(void* __p, size_t ) { free(__p); } static void* reallocate(void* __p, size_t , size_t __new_sz) { void* __result = realloc(__p, __new_sz); if (0 == __result) __result = _S_oom_realloc(__p, __new_sz); return __result; } static void (* __set_malloc_handler(void (*__f)()))() { void (* __old)() = __malloc_alloc_oom_handler; __malloc_alloc_oom_handler = __f; return(__old); } }; template void (* __malloc_alloc_template<__inst>::__malloc_alloc_oom_handler)() = 0; template void* __malloc_alloc_template<__inst>::_S_oom_malloc(size_t __n) { void (* __my_malloc_handler)(); void* __result; for (;;) { __my_malloc_handler = __malloc_alloc_oom_handler; if (0 == __my_malloc_handler) std::__throw_bad_alloc(); (*__my_malloc_handler)(); __result = malloc(__n); if (__result) return(__result); } } template void* __malloc_alloc_template<__inst>::_S_oom_realloc(void* __p, size_t __n) { void (* __my_malloc_handler)(); void* __result; for (;;) { __my_malloc_handler = __malloc_alloc_oom_handler; if (0 == __my_malloc_handler) std::__throw_bad_alloc(); (*__my_malloc_handler)(); __result = realloc(__p, __n); if (__result) return(__result); } } typedef __new_alloc __mem_interface; # 219 "/usr/local/include/g++-v3/bits/stl_alloc.h" 3 template class __simple_alloc { public: static _Tp* allocate(size_t __n) { return 0 == __n ? 0 : (_Tp*) _Alloc::allocate(__n * sizeof (_Tp)); } static _Tp* allocate() { return (_Tp*) _Alloc::allocate(sizeof (_Tp)); } static void deallocate(_Tp* __p, size_t __n) { if (0 != __n) _Alloc::deallocate(__p, __n * sizeof (_Tp)); } static void deallocate(_Tp* __p) { _Alloc::deallocate(__p, sizeof (_Tp)); } }; # 251 "/usr/local/include/g++-v3/bits/stl_alloc.h" 3 template class __debug_alloc { private: enum {_S_extra = 8}; public: static void* allocate(size_t __n) { char* __result = (char*)_Alloc::allocate(__n + (int) _S_extra); *(size_t*)__result = __n; return __result + (int) _S_extra; } static void deallocate(void* __p, size_t __n) { char* __real_p = (char*)__p - (int) _S_extra; ((*(size_t*)__real_p == __n) ? (void)0 : __assert("_EX", "/usr/local/include/g++-v3/bits/stl_alloc.h", 270)); _Alloc::deallocate(__real_p, __n + (int) _S_extra); } static void* reallocate(void* __p, size_t __old_sz, size_t __new_sz) { char* __real_p = (char*)__p - (int) _S_extra; ((*(size_t*)__real_p == __old_sz) ? (void)0 : __assert("_EX", "/usr/local/include/g++-v3/bits/stl_alloc.h", 277)); char* __result = (char*) _Alloc::reallocate(__real_p, __old_sz + (int) _S_extra, __new_sz + (int) _S_extra); *(size_t*)__result = __new_sz; return __result + (int) _S_extra; } }; # 324 "/usr/local/include/g++-v3/bits/stl_alloc.h" 3 template class __default_alloc_template { private: enum {_ALIGN = 8}; enum {_MAX_BYTES = 128}; enum {_NFREELISTS = _MAX_BYTES / _ALIGN}; union _Obj { union _Obj* _M_free_list_link; char _M_client_data[1]; }; static _Obj* volatile _S_free_list[_NFREELISTS]; static char* _S_start_free; static char* _S_end_free; static size_t _S_heap_size; static _STL_mutex_lock _S_node_allocator_lock; static size_t _S_round_up(size_t __bytes) { return (((__bytes) + (size_t) _ALIGN-1) & ~((size_t) _ALIGN - 1)); } static size_t _S_freelist_index(size_t __bytes) { return (((__bytes) + (size_t)_ALIGN-1)/(size_t)_ALIGN - 1); } static void* _S_refill(size_t __n); static char* _S_chunk_alloc(size_t __size, int& __nobjs); class _Lock { public: _Lock() { if (__threads) _S_node_allocator_lock._M_acquire_lock(); } ~_Lock() { if (__threads) _S_node_allocator_lock._M_release_lock(); } } __attribute__ ((__unused__)); friend class _Lock; public: static void* allocate(size_t __n) { void* __ret = 0; if (__n > (size_t) _MAX_BYTES) __ret = __mem_interface::allocate(__n); else { _Obj* volatile* __my_free_list = _S_free_list + _S_freelist_index(__n); _Lock __lock_instance; _Obj* __restrict__ __result = *__my_free_list; if (__result == 0) __ret = _S_refill(_S_round_up(__n)); else { *__my_free_list = __result -> _M_free_list_link; __ret = __result; } } return __ret; }; static void deallocate(void* __p, size_t __n) { if (__n > (size_t) _MAX_BYTES) __mem_interface::deallocate(__p, __n); else { _Obj* volatile* __my_free_list = _S_free_list + _S_freelist_index(__n); _Obj* __q = (_Obj*)__p; _Lock __lock_instance; __q -> _M_free_list_link = *__my_free_list; *__my_free_list = __q; } } static void* reallocate(void* __p, size_t __old_sz, size_t __new_sz); }; template inline bool operator==(const __default_alloc_template<__threads, __inst>&, const __default_alloc_template<__threads, __inst>&) { return true; } template inline bool operator!=(const __default_alloc_template<__threads, __inst>&, const __default_alloc_template<__threads, __inst>&) { return false; } template char* __default_alloc_template<__threads, __inst>::_S_chunk_alloc(size_t __size, int& __nobjs) { char* __result; size_t __total_bytes = __size * __nobjs; size_t __bytes_left = _S_end_free - _S_start_free; if (__bytes_left >= __total_bytes) { __result = _S_start_free; _S_start_free += __total_bytes; return(__result); } else if (__bytes_left >= __size) { __nobjs = (int)(__bytes_left/__size); __total_bytes = __size * __nobjs; __result = _S_start_free; _S_start_free += __total_bytes; return(__result); } else { size_t __bytes_to_get = 2 * __total_bytes + _S_round_up(_S_heap_size >> 4); if (__bytes_left > 0) { _Obj* volatile* __my_free_list = _S_free_list + _S_freelist_index(__bytes_left); ((_Obj*)_S_start_free) -> _M_free_list_link = *__my_free_list; *__my_free_list = (_Obj*)_S_start_free; } _S_start_free = (char*) __mem_interface::allocate(__bytes_to_get); if (0 == _S_start_free) { size_t __i; _Obj* volatile* __my_free_list; _Obj* __p; __i = __size; for (; __i <= (size_t) _MAX_BYTES; __i += (size_t) _ALIGN) { __my_free_list = _S_free_list + _S_freelist_index(__i); __p = *__my_free_list; if (0 != __p) { *__my_free_list = __p -> _M_free_list_link; _S_start_free = (char*)__p; _S_end_free = _S_start_free + __i; return(_S_chunk_alloc(__size, __nobjs)); } } _S_end_free = 0; _S_start_free = (char*)__mem_interface::allocate(__bytes_to_get); } _S_heap_size += __bytes_to_get; _S_end_free = _S_start_free + __bytes_to_get; return(_S_chunk_alloc(__size, __nobjs)); } } template void* __default_alloc_template<__threads, __inst>::_S_refill(size_t __n) { int __nobjs = 20; char* __chunk = _S_chunk_alloc(__n, __nobjs); _Obj* volatile* __my_free_list; _Obj* __result; _Obj* __current_obj; _Obj* __next_obj; int __i; if (1 == __nobjs) return(__chunk); __my_free_list = _S_free_list + _S_freelist_index(__n); __result = (_Obj*)__chunk; *__my_free_list = __next_obj = (_Obj*)(__chunk + __n); for (__i = 1; ; __i++) { __current_obj = __next_obj; __next_obj = (_Obj*)((char*)__next_obj + __n); if (__nobjs - 1 == __i) { __current_obj -> _M_free_list_link = 0; break; } else { __current_obj -> _M_free_list_link = __next_obj; } } return(__result); } template void* __default_alloc_template::reallocate(void* __p, size_t __old_sz, size_t __new_sz) { void* __result; size_t __copy_sz; if (__old_sz > (size_t) _MAX_BYTES && __new_sz > (size_t) _MAX_BYTES) { return(realloc(__p, __new_sz)); } if (_S_round_up(__old_sz) == _S_round_up(__new_sz)) return(__p); __result = allocate(__new_sz); __copy_sz = __new_sz > __old_sz? __old_sz : __new_sz; memcpy(__result, __p, __copy_sz); deallocate(__p, __old_sz); return(__result); } template _STL_mutex_lock __default_alloc_template<__threads, __inst>::_S_node_allocator_lock = { 0 }; template char* __default_alloc_template<__threads, __inst>::_S_start_free = 0; template char* __default_alloc_template<__threads, __inst>::_S_end_free = 0; template size_t __default_alloc_template<__threads, __inst>::_S_heap_size = 0; template __default_alloc_template<__threads, __inst>::_Obj* volatile __default_alloc_template<__threads, __inst>::_S_free_list[_NFREELISTS]; typedef __default_alloc_template __alloc; typedef __default_alloc_template __single_client_alloc; # 613 "/usr/local/include/g++-v3/bits/stl_alloc.h" 3 template class allocator { typedef __alloc _Alloc; public: typedef size_t size_type; typedef ptrdiff_t difference_type; typedef _Tp* pointer; typedef const _Tp* const_pointer; typedef _Tp& reference; typedef const _Tp& const_reference; typedef _Tp value_type; template struct rebind { typedef allocator<_Tp1> other; }; allocator() throw() {} allocator(const allocator&) throw() {} template allocator(const allocator<_Tp1>&) throw() {} ~allocator() throw() {} pointer address(reference __x) const { return &__x; } const_pointer address(const_reference __x) const { return &__x; } _Tp* allocate(size_type __n, const void* = 0) { return __n != 0 ? static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp))) : 0; } void deallocate(pointer __p, size_type __n) { _Alloc::deallocate(__p, __n * sizeof(_Tp)); } size_type max_size() const throw() { return size_t(-1) / sizeof(_Tp); } void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); } void destroy(pointer __p) { __p->~_Tp(); } }; template<> class allocator { public: typedef size_t size_type; typedef ptrdiff_t difference_type; typedef void* pointer; typedef const void* const_pointer; typedef void value_type; template struct rebind { typedef allocator<_Tp1> other; }; }; template inline bool operator==(const allocator<_T1>&, const allocator<_T2>&) { return true; } template inline bool operator!=(const allocator<_T1>&, const allocator<_T2>&) { return false; } # 695 "/usr/local/include/g++-v3/bits/stl_alloc.h" 3 template struct __allocator { _Alloc __underlying_alloc; typedef size_t size_type; typedef ptrdiff_t difference_type; typedef _Tp* pointer; typedef const _Tp* const_pointer; typedef _Tp& reference; typedef const _Tp& const_reference; typedef _Tp value_type; template struct rebind { typedef __allocator<_Tp1, _Alloc> other; }; __allocator() throw() {} __allocator(const __allocator& __a) throw() : __underlying_alloc(__a.__underlying_alloc) {} template __allocator(const __allocator<_Tp1, _Alloc>& __a) throw() : __underlying_alloc(__a.__underlying_alloc) {} ~__allocator() throw() {} pointer address(reference __x) const { return &__x; } const_pointer address(const_reference __x) const { return &__x; } _Tp* allocate(size_type __n, const void* = 0) { return __n != 0 ? static_cast<_Tp*>(__underlying_alloc.allocate(__n * sizeof(_Tp))) : 0; } void deallocate(pointer __p, size_type __n) { __underlying_alloc.deallocate(__p, __n * sizeof(_Tp)); } size_type max_size() const throw() { return size_t(-1) / sizeof(_Tp); } void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); } void destroy(pointer __p) { __p->~_Tp(); } }; template class __allocator { typedef size_t size_type; typedef ptrdiff_t difference_type; typedef void* pointer; typedef const void* const_pointer; typedef void value_type; template struct rebind { typedef __allocator<_Tp1, _Alloc> other; }; }; template inline bool operator==(const __allocator<_Tp, _Alloc>& __a1, const __allocator<_Tp, _Alloc>& __a2) { return __a1.__underlying_alloc == __a2.__underlying_alloc; } template inline bool operator!=(const __allocator<_Tp, _Alloc>& __a1, const __allocator<_Tp, _Alloc>& __a2) { return __a1.__underlying_alloc != __a2.__underlying_alloc; } template inline bool operator==(const __malloc_alloc_template&, const __malloc_alloc_template&) { return true; } template inline bool operator!=(const __malloc_alloc_template<__inst>&, const __malloc_alloc_template<__inst>&) { return false; } template inline bool operator==(const __debug_alloc<_Alloc>&, const __debug_alloc<_Alloc>&) { return true; } template inline bool operator!=(const __debug_alloc<_Alloc>&, const __debug_alloc<_Alloc>&) { return false; } # 840 "/usr/local/include/g++-v3/bits/stl_alloc.h" 3 template struct _Alloc_traits { static const bool _S_instanceless = false; typedef _Allocator::template rebind<_Tp>::other allocator_type; }; template const bool _Alloc_traits<_Tp, _Allocator>::_S_instanceless; template struct _Alloc_traits<_Tp, allocator<_Tp1> > { static const bool _S_instanceless = true; typedef __simple_alloc<_Tp, __alloc> _Alloc_type; typedef allocator<_Tp> allocator_type; }; template struct _Alloc_traits<_Tp, __malloc_alloc_template<__inst> > { static const bool _S_instanceless = true; typedef __simple_alloc<_Tp, __malloc_alloc_template<__inst> > _Alloc_type; typedef __allocator<_Tp, __malloc_alloc_template<__inst> > allocator_type; }; template struct _Alloc_traits<_Tp, __default_alloc_template<__threads, __inst> > { static const bool _S_instanceless = true; typedef __simple_alloc<_Tp, __default_alloc_template<__threads, __inst> > _Alloc_type; typedef __allocator<_Tp, __default_alloc_template<__threads, __inst> > allocator_type; }; template struct _Alloc_traits<_Tp, __debug_alloc<_Alloc> > { static const bool _S_instanceless = true; typedef __simple_alloc<_Tp, __debug_alloc<_Alloc> > _Alloc_type; typedef __allocator<_Tp, __debug_alloc<_Alloc> > allocator_type; }; template struct _Alloc_traits<_Tp, __allocator<_Tp1, __malloc_alloc_template<__inst> > > { static const bool _S_instanceless = true; typedef __simple_alloc<_Tp, __malloc_alloc_template<__inst> > _Alloc_type; typedef __allocator<_Tp, __malloc_alloc_template<__inst> > allocator_type; }; template struct _Alloc_traits<_Tp, __allocator<_Tp1, __default_alloc_template<__thr, __inst> > > { static const bool _S_instanceless = true; typedef __simple_alloc<_Tp, __default_alloc_template<__thr,__inst> > _Alloc_type; typedef __allocator<_Tp, __default_alloc_template<__thr,__inst> > allocator_type; }; template struct _Alloc_traits<_Tp, __allocator<_Tp1, __debug_alloc<_Alloc> > > { static const bool _S_instanceless = true; typedef __simple_alloc<_Tp, __debug_alloc<_Alloc> > _Alloc_type; typedef __allocator<_Tp, __debug_alloc<_Alloc> > allocator_type; }; extern template class allocator; extern template class allocator; } # 56 "/usr/local/include/g++-v3/memory" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_construct.h" 1 3 # 67 "/usr/local/include/g++-v3/bits/stl_construct.h" 3 namespace std { template inline void _Construct(_T1* __p, const _T2& __value) { new (static_cast(__p)) _T1(__value); } template inline void _Construct(_T1* __p) { new (static_cast(__p)) _T1(); } # 98 "/usr/local/include/g++-v3/bits/stl_construct.h" 3 template inline void __destroy_aux(_ForwardIterator __first, _ForwardIterator __last, __false_type) { for ( ; __first != __last; ++__first) _Destroy(&*__first); } # 112 "/usr/local/include/g++-v3/bits/stl_construct.h" 3 template inline void __destroy_aux(_ForwardIterator, _ForwardIterator, __true_type) { } template inline void _Destroy(_Tp* __pointer) { __pointer->~_Tp(); } # 134 "/usr/local/include/g++-v3/bits/stl_construct.h" 3 template inline void _Destroy(_ForwardIterator __first, _ForwardIterator __last) { typedef iterator_traits<_ForwardIterator>::value_type _Value_type; typedef __type_traits<_Value_type>::has_trivial_destructor _Has_trivial_destructor; __destroy_aux(__first, __last, _Has_trivial_destructor()); } } # 57 "/usr/local/include/g++-v3/memory" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_uninitialized.h" 1 3 # 66 "/usr/local/include/g++-v3/bits/stl_uninitialized.h" 3 namespace std { template< _InputIter, _ForwardIter> inline _ForwardIter __uninitialized_copy_aux(_InputIter __first, _InputIter __last, _ForwardIter __result, __true_type) { return copy(__first, __last, __result); } template< _InputIter, _ForwardIter> _ForwardIter __uninitialized_copy_aux(_InputIter __first, _InputIter __last, _ForwardIter __result, __false_type) { _ForwardIter __cur = __result; try { for ( ; __first != __last; ++__first, ++__cur) _Construct(&*__cur, *__first); return __cur; } catch(...) { _Destroy(__result, __cur); throw; } } # 106 "/usr/local/include/g++-v3/bits/stl_uninitialized.h" 3 template< _InputIter, _ForwardIter> inline _ForwardIter uninitialized_copy(_InputIter __first, _InputIter __last, _ForwardIter __result) { typedef iterator_traits<_InputIter>::value_type _ValueType; typedef __type_traits<_ValueType>::is_POD_type _Is_POD; return __uninitialized_copy_aux(__first, __last, __result, _Is_POD()); } inline char* uninitialized_copy(const char* __first, const char* __last, char* __result) { memmove(__result, __first, __last - __first); return __result + (__last - __first); } inline wchar_t* uninitialized_copy(const wchar_t* __first, const wchar_t* __last, wchar_t* __result) { memmove(__result, __first, sizeof(wchar_t) * (__last - __first)); return __result + (__last - __first); } template< _ForwardIter, _Tp> inline void __uninitialized_fill_aux(_ForwardIter __first, _ForwardIter __last, const _Tp& __x, __true_type) { fill(__first, __last, __x); } template< _ForwardIter, _Tp> void __uninitialized_fill_aux(_ForwardIter __first, _ForwardIter __last, const _Tp& __x, __false_type) { _ForwardIter __cur = __first; try { for ( ; __cur != __last; ++__cur) _Construct(&*__cur, __x); } catch(...) { _Destroy(__first, __cur); throw; } } # 164 "/usr/local/include/g++-v3/bits/stl_uninitialized.h" 3 template< _ForwardIter, _Tp> inline void uninitialized_fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __x) { typedef iterator_traits<_ForwardIter>::value_type _ValueType; typedef __type_traits<_ValueType>::is_POD_type _Is_POD; __uninitialized_fill_aux(__first, __last, __x, _Is_POD()); } template< _ForwardIter, _Size, _Tp> inline _ForwardIter __uninitialized_fill_n_aux(_ForwardIter __first, _Size __n, const _Tp& __x, __true_type) { return fill_n(__first, __n, __x); } template< _ForwardIter, _Size, _Tp> _ForwardIter __uninitialized_fill_n_aux(_ForwardIter __first, _Size __n, const _Tp& __x, __false_type) { _ForwardIter __cur = __first; try { for ( ; __n > 0; --__n, ++__cur) _Construct(&*__cur, __x); return __cur; } catch(...) { _Destroy(__first, __cur); throw; } } # 210 "/usr/local/include/g++-v3/bits/stl_uninitialized.h" 3 template< _ForwardIter, _Size, _Tp> inline _ForwardIter uninitialized_fill_n(_ForwardIter __first, _Size __n, const _Tp& __x) { typedef iterator_traits<_ForwardIter>::value_type _ValueType; typedef __type_traits<_ValueType>::is_POD_type _Is_POD; return __uninitialized_fill_n_aux(__first, __n, __x, _Is_POD()); } # 227 "/usr/local/include/g++-v3/bits/stl_uninitialized.h" 3 template< _InputIter1, _InputIter2, _ForwardIter> inline _ForwardIter __uninitialized_copy_copy(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _ForwardIter __result) { _ForwardIter __mid = uninitialized_copy(__first1, __last1, __result); try { return uninitialized_copy(__first2, __last2, __mid); } catch(...) { _Destroy(__result, __mid); throw; } } template< _ForwardIter, _Tp, _InputIter> inline _ForwardIter __uninitialized_fill_copy(_ForwardIter __result, _ForwardIter __mid, const _Tp& __x, _InputIter __first, _InputIter __last) { uninitialized_fill(__result, __mid, __x); try { return uninitialized_copy(__first, __last, __mid); } catch(...) { _Destroy(__result, __mid); throw; } } template< _InputIter, _ForwardIter, _Tp> inline void __uninitialized_copy_fill(_InputIter __first1, _InputIter __last1, _ForwardIter __first2, _ForwardIter __last2, const _Tp& __x) { _ForwardIter __mid2 = uninitialized_copy(__first1, __last1, __first2); try { uninitialized_fill(__mid2, __last2, __x); } catch(...) { _Destroy(__first2, __mid2); throw; } } } # 59 "/usr/local/include/g++-v3/memory" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_raw_storage_iter.h" 1 3 # 64 "/usr/local/include/g++-v3/bits/stl_raw_storage_iter.h" 3 namespace std { template class raw_storage_iterator : public iterator { protected: _ForwardIterator _M_iter; public: explicit raw_storage_iterator(_ForwardIterator __x) : _M_iter(__x) {} raw_storage_iterator& operator*() { return *this; } raw_storage_iterator& operator=(const _Tp& __element) { _Construct(&*_M_iter, __element); return *this; } raw_storage_iterator<_ForwardIterator, _Tp>& operator++() { ++_M_iter; return *this; } raw_storage_iterator<_ForwardIterator, _Tp> operator++(int) { raw_storage_iterator<_ForwardIterator, _Tp> __tmp = *this; ++_M_iter; return __tmp; } }; } # 60 "/usr/local/include/g++-v3/memory" 2 3 namespace std { template pair<_Tp*, ptrdiff_t> __get_temporary_buffer(ptrdiff_t __len, _Tp*) { if (__len > ptrdiff_t(2147483647 / sizeof(_Tp))) __len = 2147483647 / sizeof(_Tp); while (__len > 0) { _Tp* __tmp = (_Tp*) std::malloc((std::size_t)__len * sizeof(_Tp)); if (__tmp != 0) return pair<_Tp*, ptrdiff_t>(__tmp, __len); __len /= 2; } return pair<_Tp*, ptrdiff_t>((_Tp*)0, 0); } # 102 "/usr/local/include/g++-v3/memory" 3 template inline pair<_Tp*, ptrdiff_t> get_temporary_buffer(ptrdiff_t __len) { return __get_temporary_buffer(__len, (_Tp*) 0); } # 114 "/usr/local/include/g++-v3/memory" 3 template void return_temporary_buffer(_Tp* __p) { std::free(__p); } template struct auto_ptr_ref { _Tp1* _M_ptr; auto_ptr_ref(_Tp1* __p) : _M_ptr(__p) {} }; template class auto_ptr { private: _Tp* _M_ptr; public: typedef _Tp element_type; explicit auto_ptr(_Tp* __p = 0) throw() : _M_ptr(__p) {} auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) {} template auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) {} auto_ptr& operator=(auto_ptr& __a) throw() { reset(__a.release()); return *this; } template auto_ptr& operator=(auto_ptr<_Tp1>& __a) throw() { reset(__a.release()); return *this; } ~auto_ptr() { delete _M_ptr; } _Tp& operator*() const throw() { return *_M_ptr; } _Tp* operator->() const throw() { return _M_ptr; } _Tp* get() const throw() { return _M_ptr; } _Tp* release() throw() { _Tp* __tmp = _M_ptr; _M_ptr = 0; return __tmp; } void reset(_Tp* __p = 0) throw() { if (__p != _M_ptr) { delete _M_ptr; _M_ptr = __p; } } public: auto_ptr(auto_ptr_ref<_Tp> __ref) throw() : _M_ptr(__ref._M_ptr) {} auto_ptr& operator=(auto_ptr_ref<_Tp> __ref) throw() { if (__ref._M_ptr != this->get()) { delete _M_ptr; _M_ptr = __ref._M_ptr; } return *this; } template operator auto_ptr_ref<_Tp1>() throw() { return auto_ptr_ref<_Tp>(this->release()); } template operator auto_ptr<_Tp1>() throw() { return auto_ptr<_Tp1>(this->release()); } }; } # 49 "/usr/local/include/g++-v3/string" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_function.h" 1 3 # 64 "/usr/local/include/g++-v3/bits/stl_function.h" 3 namespace std { # 101 "/usr/local/include/g++-v3/bits/stl_function.h" 3 template struct unary_function { typedef _Arg argument_type; typedef _Result result_type; }; template struct binary_function { typedef _Arg1 first_argument_type; typedef _Arg2 second_argument_type; typedef _Result result_type; }; # 127 "/usr/local/include/g++-v3/bits/stl_function.h" 3 template struct plus : public binary_function<_Tp,_Tp,_Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x + __y; } }; template struct minus : public binary_function<_Tp,_Tp,_Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x - __y; } }; template struct multiplies : public binary_function<_Tp,_Tp,_Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x * __y; } }; template struct divides : public binary_function<_Tp,_Tp,_Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x / __y; } }; template struct modulus : public binary_function<_Tp,_Tp,_Tp> { _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x % __y; } }; template struct negate : public unary_function<_Tp,_Tp> { _Tp operator()(const _Tp& __x) const { return -__x; } }; # 173 "/usr/local/include/g++-v3/bits/stl_function.h" 3 template struct equal_to : public binary_function<_Tp,_Tp,bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x == __y; } }; template struct not_equal_to : public binary_function<_Tp,_Tp,bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x != __y; } }; template struct greater : public binary_function<_Tp,_Tp,bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; } }; template struct less : public binary_function<_Tp,_Tp,bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; } }; template struct greater_equal : public binary_function<_Tp,_Tp,bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x >= __y; } }; template struct less_equal : public binary_function<_Tp,_Tp,bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x <= __y; } }; # 222 "/usr/local/include/g++-v3/bits/stl_function.h" 3 template struct logical_and : public binary_function<_Tp,_Tp,bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x && __y; } }; template struct logical_or : public binary_function<_Tp,_Tp,bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x || __y; } }; template struct logical_not : public unary_function<_Tp,bool> { bool operator()(const _Tp& __x) const { return !__x; } }; # 271 "/usr/local/include/g++-v3/bits/stl_function.h" 3 template class unary_negate : public unary_function< _Predicate::argument_type, bool> { protected: _Predicate _M_pred; public: explicit unary_negate(const _Predicate& __x) : _M_pred(__x) {} bool operator()(const _Predicate::argument_type& __x) const { return !_M_pred(__x); } }; template inline unary_negate<_Predicate> not1(const _Predicate& __pred) { return unary_negate<_Predicate>(__pred); } template class binary_negate : public binary_function< _Predicate::first_argument_type, _Predicate::second_argument_type, bool> { protected: _Predicate _M_pred; public: explicit binary_negate(const _Predicate& __x) : _M_pred(__x) {} bool operator()(const _Predicate::first_argument_type& __x, const _Predicate::second_argument_type& __y) const { return !_M_pred(__x, __y); } }; template inline binary_negate<_Predicate> not2(const _Predicate& __pred) { return binary_negate<_Predicate>(__pred); } # 349 "/usr/local/include/g++-v3/bits/stl_function.h" 3 template class binder1st : public unary_function< _Operation::second_argument_type, _Operation::result_type> { protected: _Operation op; _Operation::first_argument_type value; public: binder1st(const _Operation& __x, const _Operation::first_argument_type& __y) : op(__x), value(__y) {} _Operation::result_type operator()(const _Operation::second_argument_type& __x) const { return op(value, __x); } _Operation::result_type operator()( _Operation::second_argument_type& __x) const { return op(value, __x); } }; template inline binder1st<_Operation> bind1st(const _Operation& __fn, const _Tp& __x) { typedef _Operation::first_argument_type _Arg1_type; return binder1st<_Operation>(__fn, _Arg1_type(__x)); } template class binder2nd : public unary_function< _Operation::first_argument_type, _Operation::result_type> { protected: _Operation op; _Operation::second_argument_type value; public: binder2nd(const _Operation& __x, const _Operation::second_argument_type& __y) : op(__x), value(__y) {} _Operation::result_type operator()(const _Operation::first_argument_type& __x) const { return op(__x, value); } _Operation::result_type operator()( _Operation::first_argument_type& __x) const { return op(__x, value); } }; template inline binder2nd<_Operation> bind2nd(const _Operation& __fn, const _Tp& __x) { typedef _Operation::second_argument_type _Arg2_type; return binder2nd<_Operation>(__fn, _Arg2_type(__x)); } # 438 "/usr/local/include/g++-v3/bits/stl_function.h" 3 template class pointer_to_unary_function : public unary_function<_Arg, _Result> { protected: _Result (*_M_ptr)(_Arg); public: pointer_to_unary_function() {} explicit pointer_to_unary_function(_Result (*__x)(_Arg)) : _M_ptr(__x) {} _Result operator()(_Arg __x) const { return _M_ptr(__x); } }; template inline pointer_to_unary_function<_Arg, _Result> ptr_fun(_Result (*__x)(_Arg)) { return pointer_to_unary_function<_Arg, _Result>(__x); } template class pointer_to_binary_function : public binary_function<_Arg1,_Arg2,_Result> { protected: _Result (*_M_ptr)(_Arg1, _Arg2); public: pointer_to_binary_function() {} explicit pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) : _M_ptr(__x) {} _Result operator()(_Arg1 __x, _Arg2 __y) const { return _M_ptr(__x, __y); } }; template inline pointer_to_binary_function<_Arg1,_Arg2,_Result> ptr_fun(_Result (*__x)(_Arg1, _Arg2)) { return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__x); } template struct _Identity : public unary_function<_Tp,_Tp> { _Tp& operator()(_Tp& __x) const { return __x; } const _Tp& operator()(const _Tp& __x) const { return __x; } }; template struct _Select1st : public unary_function<_Pair, _Pair::first_type> { _Pair::first_type& operator()(_Pair& __x) const { return __x.first; } const _Pair::first_type& operator()(const _Pair& __x) const { return __x.first; } }; template struct _Select2nd : public unary_function<_Pair, _Pair::second_type> { _Pair::second_type& operator()(_Pair& __x) const { return __x.second; } const _Pair::second_type& operator()(const _Pair& __x) const { return __x.second; } }; # 528 "/usr/local/include/g++-v3/bits/stl_function.h" 3 template class mem_fun_t : public unary_function<_Tp*,_Ret> { public: explicit mem_fun_t(_Ret (_Tp::*__pf)()) : _M_f(__pf) {} _Ret operator()(_Tp* __p) const { return (__p->*_M_f)(); } private: _Ret (_Tp::*_M_f)(); }; template class const_mem_fun_t : public unary_function { public: explicit const_mem_fun_t(_Ret (_Tp::*__pf)() const) : _M_f(__pf) {} _Ret operator()(const _Tp* __p) const { return (__p->*_M_f)(); } private: _Ret (_Tp::*_M_f)() const; }; template class mem_fun_ref_t : public unary_function<_Tp,_Ret> { public: explicit mem_fun_ref_t(_Ret (_Tp::*__pf)()) : _M_f(__pf) {} _Ret operator()(_Tp& __r) const { return (__r.*_M_f)(); } private: _Ret (_Tp::*_M_f)(); }; template class const_mem_fun_ref_t : public unary_function<_Tp,_Ret> { public: explicit const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) : _M_f(__pf) {} _Ret operator()(const _Tp& __r) const { return (__r.*_M_f)(); } private: _Ret (_Tp::*_M_f)() const; }; template class mem_fun1_t : public binary_function<_Tp*,_Arg,_Ret> { public: explicit mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) : _M_f(__pf) {} _Ret operator()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); } private: _Ret (_Tp::*_M_f)(_Arg); }; template class const_mem_fun1_t : public binary_function { public: explicit const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {} _Ret operator()(const _Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); } private: _Ret (_Tp::*_M_f)(_Arg) const; }; template class mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> { public: explicit mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) : _M_f(__pf) {} _Ret operator()(_Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); } private: _Ret (_Tp::*_M_f)(_Arg); }; template class const_mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> { public: explicit const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {} _Ret operator()(const _Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); } private: _Ret (_Tp::*_M_f)(_Arg) const; }; template class mem_fun_t : public unary_function<_Tp*,void> { public: explicit mem_fun_t(void (_Tp::*__pf)()) : _M_f(__pf) {} void operator()(_Tp* __p) const { (__p->*_M_f)(); } private: void (_Tp::*_M_f)(); }; template class const_mem_fun_t : public unary_function { public: explicit const_mem_fun_t(void (_Tp::*__pf)() const) : _M_f(__pf) {} void operator()(const _Tp* __p) const { (__p->*_M_f)(); } private: void (_Tp::*_M_f)() const; }; template class mem_fun_ref_t : public unary_function<_Tp,void> { public: explicit mem_fun_ref_t(void (_Tp::*__pf)()) : _M_f(__pf) {} void operator()(_Tp& __r) const { (__r.*_M_f)(); } private: void (_Tp::*_M_f)(); }; template class const_mem_fun_ref_t : public unary_function<_Tp,void> { public: explicit const_mem_fun_ref_t(void (_Tp::*__pf)() const) : _M_f(__pf) {} void operator()(const _Tp& __r) const { (__r.*_M_f)(); } private: void (_Tp::*_M_f)() const; }; template class mem_fun1_t : public binary_function<_Tp*,_Arg,void> { public: explicit mem_fun1_t(void (_Tp::*__pf)(_Arg)) : _M_f(__pf) {} void operator()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } private: void (_Tp::*_M_f)(_Arg); }; template class const_mem_fun1_t : public binary_function { public: explicit const_mem_fun1_t(void (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {} void operator()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } private: void (_Tp::*_M_f)(_Arg) const; }; template class mem_fun1_ref_t : public binary_function<_Tp,_Arg,void> { public: explicit mem_fun1_ref_t(void (_Tp::*__pf)(_Arg)) : _M_f(__pf) {} void operator()(_Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); } private: void (_Tp::*_M_f)(_Arg); }; template class const_mem_fun1_ref_t : public binary_function<_Tp,_Arg,void> { public: explicit const_mem_fun1_ref_t(void (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {} void operator()(const _Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); } private: void (_Tp::*_M_f)(_Arg) const; }; template inline mem_fun_t<_Ret,_Tp> mem_fun(_Ret (_Tp::*__f)()) { return mem_fun_t<_Ret,_Tp>(__f); } template inline const_mem_fun_t<_Ret,_Tp> mem_fun(_Ret (_Tp::*__f)() const) { return const_mem_fun_t<_Ret,_Tp>(__f); } template inline mem_fun_ref_t<_Ret,_Tp> mem_fun_ref(_Ret (_Tp::*__f)()) { return mem_fun_ref_t<_Ret,_Tp>(__f); } template inline const_mem_fun_ref_t<_Ret,_Tp> mem_fun_ref(_Ret (_Tp::*__f)() const) { return const_mem_fun_ref_t<_Ret,_Tp>(__f); } template inline mem_fun1_t<_Ret,_Tp,_Arg> mem_fun(_Ret (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Ret,_Tp,_Arg>(__f); } template inline const_mem_fun1_t<_Ret,_Tp,_Arg> mem_fun(_Ret (_Tp::*__f)(_Arg) const) { return const_mem_fun1_t<_Ret,_Tp,_Arg>(__f); } template inline mem_fun1_ref_t<_Ret,_Tp,_Arg> mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) { return mem_fun1_ref_t<_Ret,_Tp,_Arg>(__f); } template inline const_mem_fun1_ref_t<_Ret,_Tp,_Arg> mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Ret,_Tp,_Arg>(__f); } } # 53 "/usr/local/include/g++-v3/string" 2 3 # 1 "/usr/local/include/g++-v3/bits/basic_string.h" 1 3 # 44 "/usr/local/include/g++-v3/bits/basic_string.h" 3 # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/atomicity.h" 1 3 # 33 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/atomicity.h" 3 typedef int _Atomic_word; static inline _Atomic_word __attribute__ ((__unused__)) __exchange_and_add (_Atomic_word* __mem, int __val) { _Atomic_word __result = *__mem; *__mem += __val; return __result; } static inline void __attribute__ ((__unused__)) __atomic_add (_Atomic_word* __mem, int __val) { *__mem += __val; } # 46 "/usr/local/include/g++-v3/bits/basic_string.h" 2 3 namespace std { # 88 "/usr/local/include/g++-v3/bits/basic_string.h" 3 template< _CharT, _Traits, _Alloc> class basic_string { public: typedef _Traits traits_type; typedef _Traits::char_type value_type; typedef _Alloc allocator_type; typedef _Alloc::size_type size_type; typedef _Alloc::difference_type difference_type; typedef _Alloc::reference reference; typedef _Alloc::const_reference const_reference; typedef _Alloc::pointer pointer; typedef _Alloc::const_pointer const_pointer; typedef __normal_iterator iterator; typedef __normal_iterator const_iterator; typedef reverse_iterator const_reverse_iterator; typedef reverse_iterator reverse_iterator; private: # 122 "/usr/local/include/g++-v3/bits/basic_string.h" 3 struct _Rep { typedef _Alloc::template rebind::other _Raw_bytes_alloc; # 140 "/usr/local/include/g++-v3/bits/basic_string.h" 3 static const size_type _S_max_size; static const _CharT _S_terminal; size_type _M_length; size_type _M_capacity; _Atomic_word _M_references; bool _M_is_leaked() const { return _M_references < 0; } bool _M_is_shared() const { return _M_references > 0; } void _M_set_leaked() { _M_references = -1; } void _M_set_sharable() { _M_references = 0; } _CharT* _M_refdata() throw() { return reinterpret_cast<_CharT*> (this + 1); } _CharT& operator[](size_t __s) throw() { return _M_refdata() [__s]; } _CharT* _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2) { return (!_M_is_leaked() && __alloc1 == __alloc2) ? _M_refcopy() : _M_clone(__alloc1); } static _Rep* _S_create(size_t, const _Alloc&); void _M_dispose(const _Alloc& __a) { if (__exchange_and_add(&_M_references, -1) <= 0) _M_destroy(__a); } void _M_destroy(const _Alloc&) throw(); _CharT* _M_refcopy() throw() { __atomic_add(&_M_references, 1); return _M_refdata(); } _CharT* _M_clone(const _Alloc&, size_type __res = 0); }; struct _Alloc_hider : _Alloc { _Alloc_hider(_CharT* __dat, const _Alloc& __a) : _Alloc(__a), _M_p(__dat) { } _CharT* _M_p; }; public: static const size_type npos = static_cast(-1); private: mutable _Alloc_hider _M_dataplus; static size_type _S_empty_rep_storage[(sizeof(_Rep) + sizeof(_CharT) + sizeof(size_type) - 1)/sizeof(size_type)]; _CharT* _M_data() const { return _M_dataplus._M_p; } _CharT* _M_data(_CharT* __p) { return (_M_dataplus._M_p = __p); } _Rep* _M_rep() const { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); } iterator _M_ibegin() const { return iterator(_M_data()); } iterator _M_iend() const { return iterator(_M_data() + this->size()); } void _M_leak() { if (!_M_rep()->_M_is_leaked()) _M_leak_hard(); } iterator _M_check(size_type __pos) const { if (__pos > this->size()) __throw_out_of_range("basic_string::_M_check"); return _M_ibegin() + __pos; } iterator _M_fold(size_type __pos, size_type __off) const { bool __testoff = __off < this->size() - __pos; size_type __newoff = __testoff ? __off : this->size() - __pos; return (_M_ibegin() + __pos + __newoff); } template static void _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) { for (; __k1 != __k2; ++__k1, ++__p) traits_type::assign(*__p, *__k1); } static void _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) { _S_copy_chars(__p, __k1.base(), __k2.base()); } static void _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) { _S_copy_chars(__p, __k1.base(), __k2.base()); } static void _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) { traits_type::copy(__p, __k1, __k2 - __k1); } static void _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) { traits_type::copy(__p, __k1, __k2 - __k1); } void _M_mutate(size_type __pos, size_type __len1, size_type __len2); void _M_leak_hard(); static _Rep& _S_empty_rep() { return *reinterpret_cast<_Rep*>(&_S_empty_rep_storage); } public: inline basic_string(); explicit basic_string(const _Alloc& __a); basic_string(const basic_string& __str); basic_string(const basic_string& __str, size_type __pos, size_type __n = npos); basic_string(const basic_string& __str, size_type __pos, size_type __n, const _Alloc& __a); basic_string(const _CharT* __s, size_type __n, const _Alloc& __a = _Alloc()); basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()); basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()); template basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a = _Alloc()); ~basic_string() { _M_rep()->_M_dispose(this->get_allocator()); } basic_string& operator=(const basic_string& __str) { return this->assign(__str); } basic_string& operator=(const _CharT* __s) { return this->assign(__s); } basic_string& operator=(_CharT __c) { return this->assign(1, __c); } iterator begin() { _M_leak(); return iterator(_M_data()); } const_iterator begin() const { return const_iterator(_M_data()); } iterator end() { _M_leak(); return iterator(_M_data() + this->size()); } const_iterator end() const { return const_iterator(_M_data() + this->size()); } reverse_iterator rbegin() { return reverse_iterator(this->end()); } const_reverse_iterator rbegin() const { return const_reverse_iterator(this->end()); } reverse_iterator rend() { return reverse_iterator(this->begin()); } const_reverse_iterator rend() const { return const_reverse_iterator(this->begin()); } public: size_type size() const { return _M_rep()->_M_length; } size_type length() const { return _M_rep()->_M_length; } size_type max_size() const { return _Rep::_S_max_size; } void resize(size_type __n, _CharT __c); void resize(size_type __n) { this->resize(__n, _CharT()); } size_type capacity() const { return _M_rep()->_M_capacity; } void reserve(size_type __res_arg = 0); void clear() { _M_mutate(0, this->size(), 0); } bool empty() const { return this->size() == 0; } const_reference operator[] (size_type __pos) const { return _M_data()[__pos]; } reference operator[](size_type __pos) { _M_leak(); return _M_data()[__pos]; } const_reference at(size_type __n) const { if (__n >= this->size()) __throw_out_of_range("basic_string::at"); return _M_data()[__n]; } reference at(size_type __n) { if (__n >= size()) __throw_out_of_range("basic_string::at"); _M_leak(); return _M_data()[__n]; } basic_string& operator+=(const basic_string& __str) { return this->append(__str); } basic_string& operator+=(const _CharT* __s) { return this->append(__s); } basic_string& operator+=(_CharT __c) { return this->append(size_type(1), __c); } basic_string& append(const basic_string& __str); basic_string& append(const basic_string& __str, size_type __pos, size_type __n); basic_string& append(const _CharT* __s, size_type __n); basic_string& append(const _CharT* __s) { return this->append(__s, traits_type::length(__s)); } basic_string& append(size_type __n, _CharT __c); template basic_string& append(_InputIterator __first, _InputIterator __last) { return this->replace(_M_iend(), _M_iend(), __first, __last); } void push_back(_CharT __c) { this->replace(_M_iend(), _M_iend(), 1, __c); } basic_string& assign(const basic_string& __str); basic_string& assign(const basic_string& __str, size_type __pos, size_type __n) { const size_type __strsize = __str.size(); if (__pos > __strsize) __throw_out_of_range("basic_string::assign"); const bool __testn = __n < __strsize - __pos; const size_type __newsize = __testn ? __n : __strsize - __pos; return this->assign(__str._M_data() + __pos, __newsize); } basic_string& assign(const _CharT* __s, size_type __n) { if (__n > this->max_size()) __throw_length_error("basic_string::assign"); if (_M_rep()->_M_is_shared() || less()(__s, _M_data()) || less()(_M_data() + this->size(), __s)) return _M_replace_safe(_M_ibegin(), _M_iend(), __s, __s + __n); else { const size_type __pos = __s - _M_data(); if (__pos >= __n) traits_type::copy(_M_data(), __s, __n); else if (__pos) traits_type::move(_M_data(), __s, __n); _M_rep()->_M_length = __n; _M_data()[__n] = _Rep::_S_terminal; return *this; } } basic_string& assign(const _CharT* __s) { return this->assign(__s, traits_type::length(__s)); } basic_string& assign(size_type __n, _CharT __c) { return this->replace(_M_ibegin(), _M_iend(), __n, __c); } template basic_string& assign(_InputIterator __first, _InputIterator __last) { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } void insert(iterator __p, size_type __n, _CharT __c) { this->replace(__p, __p, __n, __c); } template void insert(iterator __p, _InputIterator __beg, _InputIterator __end) { this->replace(__p, __p, __beg, __end); } basic_string& insert(size_type __pos1, const basic_string& __str) { return this->insert(__pos1, __str, 0, __str.size()); } basic_string& insert(size_type __pos1, const basic_string& __str, size_type __pos2, size_type __n) { const size_type __strsize = __str.size(); if (__pos2 > __strsize) __throw_out_of_range("basic_string::insert"); const bool __testn = __n < __strsize - __pos2; const size_type __newsize = __testn ? __n : __strsize - __pos2; return this->insert(__pos1, __str._M_data() + __pos2, __newsize); } basic_string& insert(size_type __pos, const _CharT* __s, size_type __n) { const size_type __size = this->size(); if (__pos > __size) __throw_out_of_range("basic_string::insert"); if (__size > this->max_size() - __n) __throw_length_error("basic_string::insert"); if (_M_rep()->_M_is_shared() || less()(__s, _M_data()) || less()(_M_data() + __size, __s)) return _M_replace_safe(_M_ibegin() + __pos, _M_ibegin() + __pos, __s, __s + __n); else { const size_type __off = __s - _M_data(); _M_mutate(__pos, 0, __n); __s = _M_data() + __off; _CharT* __p = _M_data() + __pos; if (__s + __n <= __p) traits_type::copy(__p, __s, __n); else if (__s >= __p) traits_type::copy(__p, __s + __n, __n); else { traits_type::copy(__p, __s, __p - __s); traits_type::copy(__p + (__p - __s), __p + __n, __n - (__p - __s)); } return *this; } } basic_string& insert(size_type __pos, const _CharT* __s) { return this->insert(__pos, __s, traits_type::length(__s)); } basic_string& insert(size_type __pos, size_type __n, _CharT __c) { this->insert(_M_check(__pos), __n, __c); return *this; } iterator insert(iterator __p, _CharT __c = _CharT()) { size_type __pos = __p - _M_ibegin(); this->insert(_M_check(__pos), size_type(1), __c); _M_rep()->_M_set_leaked(); return this->_M_ibegin() + __pos; } basic_string& erase(size_type __pos = 0, size_type __n = npos) { return this->replace(_M_check(__pos), _M_fold(__pos, __n), _M_data(), _M_data()); } iterator erase(iterator __position) { size_type __i = __position - _M_ibegin(); this->replace(__position, __position + 1, _M_data(), _M_data()); _M_rep()->_M_set_leaked(); return _M_ibegin() + __i; } iterator erase(iterator __first, iterator __last) { size_type __i = __first - _M_ibegin(); this->replace(__first, __last, _M_data(), _M_data()); _M_rep()->_M_set_leaked(); return _M_ibegin() + __i; } basic_string& replace(size_type __pos, size_type __n, const basic_string& __str) { return this->replace(__pos, __n, __str._M_data(), __str.size()); } basic_string& replace(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2); basic_string& replace(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) { const size_type __size = this->size(); if (__pos > __size) __throw_out_of_range("basic_string::replace"); if (__size - __n1 > this->max_size() - __n2) __throw_length_error("basic_string::replace"); const bool __testn1 = __n1 < __size - __pos; const size_type __foldn1 = __testn1 ? __n1 : __size - __pos; if (_M_rep()->_M_is_shared() || less()(__s, _M_data()) || less()(_M_data() + __size, __s)) return _M_replace_safe(_M_ibegin() + __pos, _M_ibegin() + __pos + __foldn1, __s, __s + __n2); else return this->replace(_M_check(__pos), _M_fold(__pos, __n1), __s, __s + __n2); } basic_string& replace(size_type __pos, size_type __n1, const _CharT* __s) { return this->replace(__pos, __n1, __s, traits_type::length(__s)); } basic_string& replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) { return this->replace(_M_check(__pos), _M_fold(__pos, __n1), __n2, __c); } basic_string& replace(iterator __i1, iterator __i2, const basic_string& __str) { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } basic_string& replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n) { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n); } basic_string& replace(iterator __i1, iterator __i2, const _CharT* __s) { return this->replace(__i1, __i2, __s, traits_type::length(__s)); } basic_string& replace(iterator __i1, iterator __i2, size_type __n, _CharT __c); template basic_string& replace(iterator __i1, iterator __i2, _InputIterator __k1, _InputIterator __k2) { return _M_replace(__i1, __i2, __k1, __k2, iterator_traits<_InputIterator>::iterator_category()); } private: template basic_string& _M_replace(iterator __i1, iterator __i2, _InputIterator __k1, _InputIterator __k2, input_iterator_tag); template basic_string& _M_replace_safe(iterator __i1, iterator __i2, _ForwardIterator __k1, _ForwardIterator __k2); template static _CharT* _S_construct_aux(_InIter __beg, _InIter __end, const _Alloc& __a, __false_type) { typedef iterator_traits<_InIter>::iterator_category _Tag; return _S_construct(__beg, __end, __a, _Tag()); } template static _CharT* _S_construct_aux(_InIter __beg, _InIter __end, const _Alloc& __a, __true_type) { return _S_construct(static_cast(__beg), static_cast(__end), __a); } template static _CharT* _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a) { typedef _Is_integer<_InIter>::_Integral _Integral; return _S_construct_aux(__beg, __end, __a, _Integral()); } template static _CharT* _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a, input_iterator_tag); template static _CharT* _S_construct(_FwdIter __beg, _FwdIter __end, const _Alloc& __a, forward_iterator_tag); static _CharT* _S_construct(size_type __req, _CharT __c, const _Alloc& __a); public: size_type copy(_CharT* __s, size_type __n, size_type __pos = 0) const; void swap(basic_string<_CharT, _Traits, _Alloc>& __s); const _CharT* c_str() const { size_type __n = this->size(); traits_type::assign(_M_data()[__n], _Rep::_S_terminal); return _M_data(); } const _CharT* data() const { return _M_data(); } allocator_type get_allocator() const { return _M_dataplus; } size_type find(const _CharT* __s, size_type __pos, size_type __n) const; size_type find(const basic_string& __str, size_type __pos = 0) const { return this->find(__str.data(), __pos, __str.size()); } size_type find(const _CharT* __s, size_type __pos = 0) const { return this->find(__s, __pos, traits_type::length(__s)); } size_type find(_CharT __c, size_type __pos = 0) const; size_type rfind(const basic_string& __str, size_type __pos = npos) const { return this->rfind(__str.data(), __pos, __str.size()); } size_type rfind(const _CharT* __s, size_type __pos, size_type __n) const; size_type rfind(const _CharT* __s, size_type __pos = npos) const { return this->rfind(__s, __pos, traits_type::length(__s)); } size_type rfind(_CharT __c, size_type __pos = npos) const; size_type find_first_of(const basic_string& __str, size_type __pos = 0) const { return this->find_first_of(__str.data(), __pos, __str.size()); } size_type find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; size_type find_first_of(const _CharT* __s, size_type __pos = 0) const { return this->find_first_of(__s, __pos, traits_type::length(__s)); } size_type find_first_of(_CharT __c, size_type __pos = 0) const { return this->find(__c, __pos); } size_type find_last_of(const basic_string& __str, size_type __pos = npos) const { return this->find_last_of(__str.data(), __pos, __str.size()); } size_type find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; size_type find_last_of(const _CharT* __s, size_type __pos = npos) const { return this->find_last_of(__s, __pos, traits_type::length(__s)); } size_type find_last_of(_CharT __c, size_type __pos = npos) const { return this->rfind(__c, __pos); } size_type find_first_not_of(const basic_string& __str, size_type __pos = 0) const { return this->find_first_not_of(__str.data(), __pos, __str.size()); } size_type find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const; size_type find_first_not_of(const _CharT* __s, size_type __pos = 0) const { return this->find_first_not_of(__s, __pos, traits_type::length(__s)); } size_type find_first_not_of(_CharT __c, size_type __pos = 0) const; size_type find_last_not_of(const basic_string& __str, size_type __pos = npos) const { return this->find_last_not_of(__str.data(), __pos, __str.size()); } size_type find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const; size_type find_last_not_of(const _CharT* __s, size_type __pos = npos) const { return this->find_last_not_of(__s, __pos, traits_type::length(__s)); } size_type find_last_not_of(_CharT __c, size_type __pos = npos) const; basic_string substr(size_type __pos = 0, size_type __n = npos) const { if (__pos > this->size()) __throw_out_of_range("basic_string::substr"); return basic_string(*this, __pos, __n); } int compare(const basic_string& __str) const { size_type __size = this->size(); size_type __osize = __str.size(); size_type __len = min(__size, __osize); int __r = traits_type::compare(_M_data(), __str.data(), __len); if (!__r) __r = __size - __osize; return __r; } int compare(size_type __pos, size_type __n, const basic_string& __str) const; int compare(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2) const; int compare(const _CharT* __s) const; int compare(size_type __pos, size_type __n1, const _CharT* __s) const; int compare(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) const; }; template< _CharT, _Traits, _Alloc> inline basic_string<_CharT, _Traits, _Alloc>:: basic_string() : _M_dataplus(_S_empty_rep()._M_refcopy(), _Alloc()) { } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc> operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { basic_string<_CharT, _Traits, _Alloc> __str(__lhs); __str.append(__rhs); return __str; } template< _CharT, _Traits, _Alloc> basic_string<_CharT,_Traits,_Alloc> operator+(const _CharT* __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); template< _CharT, _Traits, _Alloc> basic_string<_CharT,_Traits,_Alloc> operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); template< _CharT, _Traits, _Alloc> inline basic_string<_CharT, _Traits, _Alloc> operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { basic_string<_CharT, _Traits, _Alloc> __str(__lhs); __str.append(__rhs); return __str; } template< _CharT, _Traits, _Alloc> inline basic_string<_CharT, _Traits, _Alloc> operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) { typedef basic_string<_CharT, _Traits, _Alloc> __string_type; typedef __string_type::size_type __size_type; __string_type __str(__lhs); __str.append(__size_type(1), __rhs); return __str; } template< _CharT, _Traits, _Alloc> inline bool operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __lhs.compare(__rhs) == 0; } template< _CharT, _Traits, _Alloc> inline bool operator==(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) == 0; } template< _CharT, _Traits, _Alloc> inline bool operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) == 0; } template< _CharT, _Traits, _Alloc> inline bool operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) != 0; } template< _CharT, _Traits, _Alloc> inline bool operator!=(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) != 0; } template< _CharT, _Traits, _Alloc> inline bool operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) != 0; } template< _CharT, _Traits, _Alloc> inline bool operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __lhs.compare(__rhs) < 0; } template< _CharT, _Traits, _Alloc> inline bool operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) < 0; } template< _CharT, _Traits, _Alloc> inline bool operator<(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) > 0; } template< _CharT, _Traits, _Alloc> inline bool operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __lhs.compare(__rhs) > 0; } template< _CharT, _Traits, _Alloc> inline bool operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) > 0; } template< _CharT, _Traits, _Alloc> inline bool operator>(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) < 0; } template< _CharT, _Traits, _Alloc> inline bool operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __lhs.compare(__rhs) <= 0; } template< _CharT, _Traits, _Alloc> inline bool operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) <= 0; } template< _CharT, _Traits, _Alloc> inline bool operator<=(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) >= 0; } template< _CharT, _Traits, _Alloc> inline bool operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __lhs.compare(__rhs) >= 0; } template< _CharT, _Traits, _Alloc> inline bool operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const _CharT* __rhs) { return __lhs.compare(__rhs) >= 0; } template< _CharT, _Traits, _Alloc> inline bool operator>=(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { return __rhs.compare(__lhs) <= 0; } template< _CharT, _Traits, _Alloc> inline void swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, basic_string<_CharT, _Traits, _Alloc>& __rhs) { __lhs.swap(__rhs); } template< _CharT, _Traits, _Alloc> basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __is, basic_string<_CharT, _Traits, _Alloc>& __str); template< _CharT, _Traits, _Alloc> basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const basic_string<_CharT, _Traits, _Alloc>& __str); template< _CharT, _Traits, _Alloc> basic_istream<_CharT,_Traits>& getline(basic_istream<_CharT, _Traits>& __is, basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); template< _CharT, _Traits, _Alloc> inline basic_istream<_CharT,_Traits>& getline(basic_istream<_CharT, _Traits>& __is, basic_string<_CharT, _Traits, _Alloc>& __str); } # 54 "/usr/local/include/g++-v3/string" 2 3 # 1 "/usr/local/include/g++-v3/algorithm" 1 3 # 65 "/usr/local/include/g++-v3/algorithm" 3 # 1 "/usr/local/include/g++-v3/bits/stl_algo.h" 1 3 # 64 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 # 1 "/usr/local/include/g++-v3/bits/stl_heap.h" 1 3 # 63 "/usr/local/include/g++-v3/bits/stl_heap.h" 3 namespace std { template< _RandomAccessIterator, _Distance, _Tp> void __push_heap(_RandomAccessIterator __first, _Distance __holeIndex, _Distance __topIndex, _Tp __value) { _Distance __parent = (__holeIndex - 1) / 2; while (__holeIndex > __topIndex && *(__first + __parent) < __value) { *(__first + __holeIndex) = *(__first + __parent); __holeIndex = __parent; __parent = (__holeIndex - 1) / 2; } *(__first + __holeIndex) = __value; } template< _RandomAccessIterator> inline void push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { typedef iterator_traits<_RandomAccessIterator>::value_type _ValueType; typedef iterator_traits<_RandomAccessIterator>::difference_type _DistanceType; __push_heap(__first, _DistanceType((__last - __first) - 1), _DistanceType(0), _ValueType(*(__last - 1))); } template< _RandomAccessIterator, _Distance, _Tp, _Compare> void __push_heap(_RandomAccessIterator __first, _Distance __holeIndex, _Distance __topIndex, _Tp __value, _Compare __comp) { _Distance __parent = (__holeIndex - 1) / 2; while (__holeIndex > __topIndex && __comp(*(__first + __parent), __value)) { *(__first + __holeIndex) = *(__first + __parent); __holeIndex = __parent; __parent = (__holeIndex - 1) / 2; } *(__first + __holeIndex) = __value; } template< _RandomAccessIterator, _Compare> inline void push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { typedef iterator_traits<_RandomAccessIterator>::value_type _ValueType; typedef iterator_traits<_RandomAccessIterator>::difference_type _DistanceType; __push_heap(__first, _DistanceType((__last - __first) - 1), _DistanceType(0), _ValueType(*(__last - 1)), __comp); } template< _RandomAccessIterator, _Distance, _Tp> void __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, _Distance __len, _Tp __value) { _Distance __topIndex = __holeIndex; _Distance __secondChild = 2 * __holeIndex + 2; while (__secondChild < __len) { if (*(__first + __secondChild) < *(__first + (__secondChild - 1))) __secondChild--; *(__first + __holeIndex) = *(__first + __secondChild); __holeIndex = __secondChild; __secondChild = 2 * (__secondChild + 1); } if (__secondChild == __len) { *(__first + __holeIndex) = *(__first + (__secondChild - 1)); __holeIndex = __secondChild - 1; } __push_heap(__first, __holeIndex, __topIndex, __value); } template< _RandomAccessIterator, _Tp> inline void __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _RandomAccessIterator __result, _Tp __value) { typedef iterator_traits<_RandomAccessIterator>::difference_type _Distance; *__result = *__first; __adjust_heap(__first, _Distance(0), _Distance(__last - __first), __value); } template< _RandomAccessIterator> inline void pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { typedef iterator_traits<_RandomAccessIterator>::value_type _ValueType; __pop_heap(__first, __last - 1, __last - 1, _ValueType(*(__last - 1))); } template< _RandomAccessIterator, _Distance, _Tp, _Compare> void __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, _Distance __len, _Tp __value, _Compare __comp) { _Distance __topIndex = __holeIndex; _Distance __secondChild = 2 * __holeIndex + 2; while (__secondChild < __len) { if (__comp(*(__first + __secondChild), *(__first + (__secondChild - 1)))) __secondChild--; *(__first + __holeIndex) = *(__first + __secondChild); __holeIndex = __secondChild; __secondChild = 2 * (__secondChild + 1); } if (__secondChild == __len) { *(__first + __holeIndex) = *(__first + (__secondChild - 1)); __holeIndex = __secondChild - 1; } __push_heap(__first, __holeIndex, __topIndex, __value, __comp); } template< _RandomAccessIterator, _Tp, _Compare> inline void __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _RandomAccessIterator __result, _Tp __value, _Compare __comp) { typedef iterator_traits<_RandomAccessIterator>::difference_type _Distance; *__result = *__first; __adjust_heap(__first, _Distance(0), _Distance(__last - __first), __value, __comp); } template< _RandomAccessIterator, _Compare> inline void pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { typedef iterator_traits<_RandomAccessIterator>::value_type _ValueType; __pop_heap(__first, __last - 1, __last - 1, _ValueType(*(__last - 1)), __comp); } template< _RandomAccessIterator> void make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { typedef iterator_traits<_RandomAccessIterator>::value_type _ValueType; typedef iterator_traits<_RandomAccessIterator>::difference_type _DistanceType; if (__last - __first < 2) return; _DistanceType __len = __last - __first; _DistanceType __parent = (__len - 2)/2; while (true) { __adjust_heap(__first, __parent, __len, _ValueType(*(__first + __parent))); if (__parent == 0) return; __parent--; } } template< _RandomAccessIterator, _Compare> inline void make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { typedef iterator_traits<_RandomAccessIterator>::value_type _ValueType; typedef iterator_traits<_RandomAccessIterator>::difference_type _DistanceType; if (__last - __first < 2) return; _DistanceType __len = __last - __first; _DistanceType __parent = (__len - 2)/2; while (true) { __adjust_heap(__first, __parent, __len, _ValueType(*(__first + __parent)), __comp); if (__parent == 0) return; __parent--; } } template< _RandomAccessIterator> void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { while (__last - __first > 1) pop_heap(__first, __last--); } template< _RandomAccessIterator, _Compare> void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { while (__last - __first > 1) pop_heap(__first, __last--, __comp); } } # 65 "/usr/local/include/g++-v3/bits/stl_algo.h" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_tempbuf.h" 1 3 # 64 "/usr/local/include/g++-v3/bits/stl_tempbuf.h" 3 namespace std { # 74 "/usr/local/include/g++-v3/bits/stl_tempbuf.h" 3 template class _Temporary_buffer { ptrdiff_t _M_original_len; ptrdiff_t _M_len; _Tp* _M_buffer; void _M_allocate_buffer() { _M_original_len = _M_len; _M_buffer = 0; if (_M_len > (ptrdiff_t)(2147483647 / sizeof(_Tp))) _M_len = 2147483647 / sizeof(_Tp); while (_M_len > 0) { _M_buffer = (_Tp*) malloc(_M_len * sizeof(_Tp)); if (_M_buffer) break; _M_len /= 2; } } void _M_initialize_buffer(const _Tp&, __true_type) {} void _M_initialize_buffer(const _Tp& val, __false_type) { uninitialized_fill_n(_M_buffer, _M_len, val); } public: ptrdiff_t size() const { return _M_len; } ptrdiff_t requested_size() const { return _M_original_len; } _Tp* begin() { return _M_buffer; } _Tp* end() { return _M_buffer + _M_len; } _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) { typedef __type_traits<_Tp>::has_trivial_default_constructor _Trivial; try { _M_len = distance(__first, __last); _M_allocate_buffer(); if (_M_len > 0) _M_initialize_buffer(*__first, _Trivial()); } catch(...) { free(_M_buffer); _M_buffer = 0; _M_len = 0; throw; } } ~_Temporary_buffer() { _Destroy(_M_buffer, _M_buffer + _M_len); free(_M_buffer); } private: _Temporary_buffer(const _Temporary_buffer&) {} void operator=(const _Temporary_buffer&) {} }; } # 66 "/usr/local/include/g++-v3/bits/stl_algo.h" 2 3 namespace std { # 84 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _Tp> inline const _Tp& __median(const _Tp& __a, const _Tp& __b, const _Tp& __c) { if (__a < __b) if (__b < __c) return __b; else if (__a < __c) return __c; else return __a; else if (__a < __c) return __a; else if (__b < __c) return __c; else return __b; } # 118 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _Tp, _Compare> inline const _Tp& __median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp) { if (__comp(__a, __b)) if (__comp(__b, __c)) return __b; else if (__comp(__a, __c)) return __c; else return __a; else if (__comp(__a, __c)) return __a; else if (__comp(__b, __c)) return __c; else return __b; } # 150 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _Function> _Function for_each(_InputIter __first, _InputIter __last, _Function __f) { for ( ; __first != __last; ++__first) __f(*__first); return __f; } template< _InputIter, _Tp> inline _InputIter find(_InputIter __first, _InputIter __last, const _Tp& __val, input_iterator_tag) { while (__first != __last && !(*__first == __val)) ++__first; return __first; } template< _InputIter, _Predicate> inline _InputIter find_if(_InputIter __first, _InputIter __last, _Predicate __pred, input_iterator_tag) { while (__first != __last && !__pred(*__first)) ++__first; return __first; } template< _RandomAccessIter, _Tp> _RandomAccessIter find(_RandomAccessIter __first, _RandomAccessIter __last, const _Tp& __val, random_access_iterator_tag) { iterator_traits<_RandomAccessIter>::difference_type __trip_count = (__last - __first) >> 2; for ( ; __trip_count > 0 ; --__trip_count) { if (*__first == __val) return __first; ++__first; if (*__first == __val) return __first; ++__first; if (*__first == __val) return __first; ++__first; if (*__first == __val) return __first; ++__first; } switch(__last - __first) { case 3: if (*__first == __val) return __first; ++__first; case 2: if (*__first == __val) return __first; ++__first; case 1: if (*__first == __val) return __first; ++__first; case 0: default: return __last; } } template< _RandomAccessIter, _Predicate> _RandomAccessIter find_if(_RandomAccessIter __first, _RandomAccessIter __last, _Predicate __pred, random_access_iterator_tag) { iterator_traits<_RandomAccessIter>::difference_type __trip_count = (__last - __first) >> 2; for ( ; __trip_count > 0 ; --__trip_count) { if (__pred(*__first)) return __first; ++__first; if (__pred(*__first)) return __first; ++__first; if (__pred(*__first)) return __first; ++__first; if (__pred(*__first)) return __first; ++__first; } switch(__last - __first) { case 3: if (__pred(*__first)) return __first; ++__first; case 2: if (__pred(*__first)) return __first; ++__first; case 1: if (__pred(*__first)) return __first; ++__first; case 0: default: return __last; } } # 289 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _Tp> inline _InputIter find(_InputIter __first, _InputIter __last, const _Tp& __val) { return find(__first, __last, __val, __iterator_category(__first)); } # 309 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _Predicate> inline _InputIter find_if(_InputIter __first, _InputIter __last, _Predicate __pred) { return find_if(__first, __last, __pred, __iterator_category(__first)); } # 329 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter> _ForwardIter adjacent_find(_ForwardIter __first, _ForwardIter __last) { if (__first == __last) return __last; _ForwardIter __next = __first; while(++__next != __last) { if (*__first == *__next) return __first; __first = __next; } return __last; } # 358 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _BinaryPredicate> _ForwardIter adjacent_find(_ForwardIter __first, _ForwardIter __last, _BinaryPredicate __binary_pred) { if (__first == __last) return __last; _ForwardIter __next = __first; while(++__next != __last) { if (__binary_pred(*__first, *__next)) return __first; __first = __next; } return __last; } # 387 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _Tp> iterator_traits<_InputIter>::difference_type count(_InputIter __first, _InputIter __last, const _Tp& __value) { iterator_traits<_InputIter>::difference_type __n = 0; for ( ; __first != __last; ++__first) if (*__first == __value) ++__n; return __n; } # 411 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _Predicate> iterator_traits<_InputIter>::difference_type count_if(_InputIter __first, _InputIter __last, _Predicate __pred) { iterator_traits<_InputIter>::difference_type __n = 0; for ( ; __first != __last; ++__first) if (__pred(*__first)) ++__n; return __n; } # 450 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter1, _ForwardIter2> _ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2, _ForwardIter2 __last2) { if (__first1 == __last1 || __first2 == __last2) return __first1; _ForwardIter2 __tmp(__first2); ++__tmp; if (__tmp == __last2) return find(__first1, __last1, *__first2); _ForwardIter2 __p1, __p; __p1 = __first2; ++__p1; _ForwardIter1 __current = __first1; while (__first1 != __last1) { __first1 = find(__first1, __last1, *__first2); if (__first1 == __last1) return __last1; __p = __p1; __current = __first1; if (++__current == __last1) return __last1; while (*__current == *__p) { if (++__p == __last2) return __first1; if (++__current == __last1) return __last1; } ++__first1; } return __first1; } # 522 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter1, _ForwardIter2, _BinaryPred> _ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2, _ForwardIter2 __last2, _BinaryPred __predicate) { if (__first1 == __last1 || __first2 == __last2) return __first1; _ForwardIter2 __tmp(__first2); ++__tmp; if (__tmp == __last2) { while (__first1 != __last1 && !__predicate(*__first1, *__first2)) ++__first1; return __first1; } _ForwardIter2 __p1, __p; __p1 = __first2; ++__p1; _ForwardIter1 __current = __first1; while (__first1 != __last1) { while (__first1 != __last1) { if (__predicate(*__first1, *__first2)) break; ++__first1; } while (__first1 != __last1 && !__predicate(*__first1, *__first2)) ++__first1; if (__first1 == __last1) return __last1; __p = __p1; __current = __first1; if (++__current == __last1) return __last1; while (__predicate(*__current, *__p)) { if (++__p == __last2) return __first1; if (++__current == __last1) return __last1; } ++__first1; } return __first1; } # 596 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _Integer, _Tp> _ForwardIter search_n(_ForwardIter __first, _ForwardIter __last, _Integer __count, const _Tp& __val) { if (__count <= 0) return __first; else { __first = find(__first, __last, __val); while (__first != __last) { _Integer __n = __count - 1; _ForwardIter __i = __first; ++__i; while (__i != __last && __n != 0 && *__i == __val) { ++__i; --__n; } if (__n == 0) return __first; else __first = find(__i, __last, __val); } return __last; } } # 643 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _Integer, _Tp, _BinaryPred> _ForwardIter search_n(_ForwardIter __first, _ForwardIter __last, _Integer __count, const _Tp& __val, _BinaryPred __binary_pred) { if (__count <= 0) return __first; else { while (__first != __last) { if (__binary_pred(*__first, __val)) break; ++__first; } while (__first != __last) { _Integer __n = __count - 1; _ForwardIter __i = __first; ++__i; while (__i != __last && __n != 0 && __binary_pred(*__i, __val)) { ++__i; --__n; } if (__n == 0) return __first; else { while (__i != __last) { if (__binary_pred(*__i, __val)) break; ++__i; } __first = __i; } } return __last; } } # 697 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter1, _ForwardIter2> _ForwardIter2 swap_ranges(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2) { for ( ; __first1 != __last1; ++__first1, ++__first2) iter_swap(__first1, __first2); return __first2; } # 732 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _OutputIter, _UnaryOperation> _OutputIter transform(_InputIter __first, _InputIter __last, _OutputIter __result, _UnaryOperation __unary_op) { for ( ; __first != __last; ++__first, ++__result) *__result = __unary_op(*__first); return __result; } # 765 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter1, _InputIter2, _OutputIter, _BinaryOperation> _OutputIter transform(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _OutputIter __result, _BinaryOperation __binary_op) { for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result) *__result = __binary_op(*__first1, *__first2); return __result; } # 796 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _Tp> void replace(_ForwardIter __first, _ForwardIter __last, const _Tp& __old_value, const _Tp& __new_value) { for ( ; __first != __last; ++__first) if (*__first == __old_value) *__first = __new_value; } # 825 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _Predicate, _Tp> void replace_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred, const _Tp& __new_value) { for ( ; __first != __last; ++__first) if (__pred(*__first)) *__first = __new_value; } # 856 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _OutputIter, _Tp> _OutputIter replace_copy(_InputIter __first, _InputIter __last, _OutputIter __result, const _Tp& __old_value, const _Tp& __new_value) { for ( ; __first != __last; ++__first, ++__result) *__result = *__first == __old_value ? __new_value : *__first; return __result; } # 888 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _OutputIter, _Predicate, _Tp> _OutputIter replace_copy_if(_InputIter __first, _InputIter __last, _OutputIter __result, _Predicate __pred, const _Tp& __new_value) { for ( ; __first != __last; ++__first, ++__result) *__result = __pred(*__first) ? __new_value : *__first; return __result; } # 918 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _Generator> void generate(_ForwardIter __first, _ForwardIter __last, _Generator __gen) { for ( ; __first != __last; ++__first) *__first = __gen(); } # 942 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _OutputIter, _Size, _Generator> _OutputIter generate_n(_OutputIter __first, _Size __n, _Generator __gen) { for ( ; __n > 0; --__n, ++__first) *__first = __gen(); return __first; } # 969 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _OutputIter, _Tp> _OutputIter remove_copy(_InputIter __first, _InputIter __last, _OutputIter __result, const _Tp& __value) { for ( ; __first != __last; ++__first) if (!(*__first == __value)) { *__result = *__first; ++__result; } return __result; } # 1003 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _OutputIter, _Predicate> _OutputIter remove_copy_if(_InputIter __first, _InputIter __last, _OutputIter __result, _Predicate __pred) { for ( ; __first != __last; ++__first) if (!__pred(*__first)) { *__result = *__first; ++__result; } return __result; } # 1039 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _Tp> _ForwardIter remove(_ForwardIter __first, _ForwardIter __last, const _Tp& __value) { __first = find(__first, __last, __value); _ForwardIter __i = __first; return __first == __last ? __first : remove_copy(++__i, __last, __first, __value); } # 1073 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _Predicate> _ForwardIter remove_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) { __first = find_if(__first, __last, __pred); _ForwardIter __i = __first; return __first == __last ? __first : remove_copy_if(++__i, __last, __first, __pred); } template< _InputIter, _OutputIter> _OutputIter __unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result, output_iterator_tag) { iterator_traits<_InputIter>::value_type __value = *__first; *__result = __value; while (++__first != __last) if (!(__value == *__first)) { __value = *__first; *++__result = __value; } return ++__result; } template< _InputIter, _ForwardIter> _ForwardIter __unique_copy(_InputIter __first, _InputIter __last, _ForwardIter __result, forward_iterator_tag) { *__result = *__first; while (++__first != __last) if (!(*__result == *__first)) *++__result = *__first; return ++__result; } # 1143 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _OutputIter> inline _OutputIter unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result) { typedef iterator_traits<_OutputIter>::iterator_category _IterType; if (__first == __last) return __result; return __unique_copy(__first, __last, __result, _IterType()); } # 1168 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _OutputIter, _BinaryPredicate> _OutputIter __unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result, _BinaryPredicate __binary_pred, output_iterator_tag) { iterator_traits<_InputIter>::value_type __value = *__first; *__result = __value; while (++__first != __last) if (!__binary_pred(__value, *__first)) { __value = *__first; *++__result = __value; } return ++__result; } # 1197 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _ForwardIter, _BinaryPredicate> _ForwardIter __unique_copy(_InputIter __first, _InputIter __last, _ForwardIter __result, _BinaryPredicate __binary_pred, forward_iterator_tag) { *__result = *__first; while (++__first != __last) if (!__binary_pred(*__result, *__first)) *++__result = *__first; return ++__result; } # 1230 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _OutputIter, _BinaryPredicate> inline _OutputIter unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result, _BinaryPredicate __binary_pred) { typedef iterator_traits<_OutputIter>::iterator_category _IterType; if (__first == __last) return __result; return __unique_copy(__first, __last, __result, __binary_pred, _IterType()); } # 1261 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter> _ForwardIter unique(_ForwardIter __first, _ForwardIter __last) { __first = adjacent_find(__first, __last); return unique_copy(__first, __last, __first); } # 1288 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _BinaryPredicate> _ForwardIter unique(_ForwardIter __first, _ForwardIter __last, _BinaryPredicate __binary_pred) { __first = adjacent_find(__first, __last, __binary_pred); return unique_copy(__first, __last, __first, __binary_pred); } template< _BidirectionalIter> void __reverse(_BidirectionalIter __first, _BidirectionalIter __last, bidirectional_iterator_tag) { while (true) if (__first == __last || __first == --__last) return; else iter_swap(__first++, __last); } template< _RandomAccessIter> void __reverse(_RandomAccessIter __first, _RandomAccessIter __last, random_access_iterator_tag) { while (__first < __last) iter_swap(__first++, --__last); } # 1347 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _BidirectionalIter> inline void reverse(_BidirectionalIter __first, _BidirectionalIter __last) { __reverse(__first, __last, __iterator_category(__first)); } # 1372 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _BidirectionalIter, _OutputIter> _OutputIter reverse_copy(_BidirectionalIter __first, _BidirectionalIter __last, _OutputIter __result) { while (__first != __last) { --__last; *__result = *__last; ++__result; } return __result; } template< _EuclideanRingElement> _EuclideanRingElement __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) { while (__n != 0) { _EuclideanRingElement __t = __m % __n; __m = __n; __n = __t; } return __m; } template< _ForwardIter> void __rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last, forward_iterator_tag) { if ((__first == __middle) || (__last == __middle)) return; _ForwardIter __first2 = __middle; do { swap(*__first++, *__first2++); if (__first == __middle) __middle = __first2; } while (__first2 != __last); __first2 = __middle; while (__first2 != __last) { swap(*__first++, *__first2++); if (__first == __middle) __middle = __first2; else if (__first2 == __last) __first2 = __middle; } } template< _BidirectionalIter> void __rotate(_BidirectionalIter __first, _BidirectionalIter __middle, _BidirectionalIter __last, bidirectional_iterator_tag) { if ((__first == __middle) || (__last == __middle)) return; __reverse(__first, __middle, bidirectional_iterator_tag()); __reverse(__middle, __last, bidirectional_iterator_tag()); while (__first != __middle && __middle != __last) swap (*__first++, *--__last); if (__first == __middle) { __reverse(__middle, __last, bidirectional_iterator_tag()); } else { __reverse(__first, __middle, bidirectional_iterator_tag()); } } template< _RandomAccessIter> void __rotate(_RandomAccessIter __first, _RandomAccessIter __middle, _RandomAccessIter __last, random_access_iterator_tag) { if ((__first == __middle) || (__last == __middle)) return; typedef iterator_traits<_RandomAccessIter>::difference_type _Distance; typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; _Distance __n = __last - __first; _Distance __k = __middle - __first; _Distance __l = __n - __k; if (__k == __l) { swap_ranges(__first, __middle, __middle); return; } _Distance __d = __gcd(__n, __k); for (_Distance __i = 0; __i < __d; __i++) { _ValueType __tmp = *__first; _RandomAccessIter __p = __first; if (__k < __l) { for (_Distance __j = 0; __j < __l/__d; __j++) { if (__p > __first + __l) { *__p = *(__p - __l); __p -= __l; } *__p = *(__p + __k); __p += __k; } } else { for (_Distance __j = 0; __j < __k/__d - 1; __j ++) { if (__p < __last - __k) { *__p = *(__p + __k); __p += __k; } *__p = * (__p - __l); __p -= __l; } } *__p = __tmp; ++__first; } } # 1549 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter> inline void rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last) { typedef iterator_traits<_ForwardIter>::iterator_category _IterType; __rotate(__first, __middle, __last, _IterType()); } # 1570 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _OutputIter> _OutputIter rotate_copy(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last, _OutputIter __result) { return copy(__first, __middle, copy(__middle, __last, __result)); } # 1593 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _Distance> inline _Distance __random_number(_Distance __n) { return lrand48() % __n; } # 1613 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _RandomAccessIter> inline void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last) { if (__first == __last) return; for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i) iter_swap(__i, __first + __random_number((__i - __first) + 1)); } # 1635 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _RandomAccessIter, _RandomNumberGenerator> void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last, _RandomNumberGenerator& __rand) { if (__first == __last) return; for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i) iter_swap(__i, __first + __rand((__i - __first) + 1)); } template< _ForwardIter, _Predicate> _ForwardIter __partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred, forward_iterator_tag) { if (__first == __last) return __first; while (__pred(*__first)) if (++__first == __last) return __first; _ForwardIter __next = __first; while (++__next != __last) if (__pred(*__next)) { swap(*__first, *__next); ++__first; } return __first; } template< _BidirectionalIter, _Predicate> _BidirectionalIter __partition(_BidirectionalIter __first, _BidirectionalIter __last, _Predicate __pred, bidirectional_iterator_tag) { while (true) { while (true) if (__first == __last) return __first; else if (__pred(*__first)) ++__first; else break; --__last; while (true) if (__first == __last) return __first; else if (!__pred(*__last)) --__last; else break; iter_swap(__first, __last); ++__first; } } # 1718 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _Predicate> inline _ForwardIter partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) { return __partition(__first, __last, __pred, __iterator_category(__first)); } template< _ForwardIter, _Predicate, _Distance> _ForwardIter __inplace_stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred, _Distance __len) { if (__len == 1) return __pred(*__first) ? __last : __first; _ForwardIter __middle = __first; advance(__middle, __len / 2); _ForwardIter __begin = __inplace_stable_partition(__first, __middle, __pred, __len / 2); _ForwardIter __end = __inplace_stable_partition(__middle, __last, __pred, __len - __len / 2); rotate(__begin, __middle, __end); advance(__begin, distance(__middle, __end)); return __begin; } template< _ForwardIter, _Pointer, _Predicate, _Distance> _ForwardIter __stable_partition_adaptive(_ForwardIter __first, _ForwardIter __last, _Predicate __pred, _Distance __len, _Pointer __buffer, _Distance __buffer_size) { if (__len <= __buffer_size) { _ForwardIter __result1 = __first; _Pointer __result2 = __buffer; for ( ; __first != __last ; ++__first) if (__pred(*__first)) { *__result1 = *__first; ++__result1; } else { *__result2 = *__first; ++__result2; } copy(__buffer, __result2, __result1); return __result1; } else { _ForwardIter __middle = __first; advance(__middle, __len / 2); _ForwardIter __begin = __stable_partition_adaptive(__first, __middle, __pred, __len / 2, __buffer, __buffer_size); _ForwardIter __end = __stable_partition_adaptive( __middle, __last, __pred, __len - __len / 2, __buffer, __buffer_size); rotate(__begin, __middle, __end); advance(__begin, distance(__middle, __end)); return __begin; } } # 1811 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter, _Predicate> _ForwardIter stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) { if (__first == __last) return __first; else { typedef iterator_traits<_ForwardIter>::value_type _ValueType; typedef iterator_traits<_ForwardIter>::difference_type _DistanceType; _Temporary_buffer<_ForwardIter, _ValueType> __buf(__first, __last); if (__buf.size() > 0) return __stable_partition_adaptive(__first, __last, __pred, _DistanceType(__buf.requested_size()), __buf.begin(), __buf.size()); else return __inplace_stable_partition(__first, __last, __pred, _DistanceType(__buf.requested_size())); } } template< _RandomAccessIter, _Tp> _RandomAccessIter __unguarded_partition(_RandomAccessIter __first, _RandomAccessIter __last, _Tp __pivot) { while (true) { while (*__first < __pivot) ++__first; --__last; while (__pivot < *__last) --__last; if (!(__first < __last)) return __first; iter_swap(__first, __last); ++__first; } } template< _RandomAccessIter, _Tp, _Compare> _RandomAccessIter __unguarded_partition(_RandomAccessIter __first, _RandomAccessIter __last, _Tp __pivot, _Compare __comp) { while (true) { while (__comp(*__first, __pivot)) ++__first; --__last; while (__comp(__pivot, *__last)) --__last; if (!(__first < __last)) return __first; iter_swap(__first, __last); ++__first; } } # 1892 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 enum { _M_threshold = 16 }; template< _RandomAccessIter, _Tp> void __unguarded_linear_insert(_RandomAccessIter __last, _Tp __val) { _RandomAccessIter __next = __last; --__next; while (__val < *__next) { *__last = *__next; __last = __next; --__next; } *__last = __val; } template< _RandomAccessIter, _Tp, _Compare> void __unguarded_linear_insert(_RandomAccessIter __last, _Tp __val, _Compare __comp) { _RandomAccessIter __next = __last; --__next; while (__comp(__val, *__next)) { *__last = *__next; __last = __next; --__next; } *__last = __val; } template< _RandomAccessIter> void __insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last) { if (__first == __last) return; for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i) { iterator_traits<_RandomAccessIter>::value_type __val = *__i; if (__val < *__first) { copy_backward(__first, __i, __i + 1); *__first = __val; } else __unguarded_linear_insert(__i, __val); } } template< _RandomAccessIter, _Compare> void __insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp) { if (__first == __last) return; for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i) { iterator_traits<_RandomAccessIter>::value_type __val = *__i; if (__comp(__val, *__first)) { copy_backward(__first, __i, __i + 1); *__first = __val; } else __unguarded_linear_insert(__i, __val, __comp); } } template< _RandomAccessIter> inline void __unguarded_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; for (_RandomAccessIter __i = __first; __i != __last; ++__i) __unguarded_linear_insert(__i, _ValueType(*__i)); } template< _RandomAccessIter, _Compare> inline void __unguarded_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; for (_RandomAccessIter __i = __first; __i != __last; ++__i) __unguarded_linear_insert(__i, _ValueType(*__i), __comp); } template< _RandomAccessIter> void __final_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last) { if (__last - __first > _M_threshold) { __insertion_sort(__first, __first + _M_threshold); __unguarded_insertion_sort(__first + _M_threshold, __last); } else __insertion_sort(__first, __last); } template< _RandomAccessIter, _Compare> void __final_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp) { if (__last - __first > _M_threshold) { __insertion_sort(__first, __first + _M_threshold, __comp); __unguarded_insertion_sort(__first + _M_threshold, __last, __comp); } else __insertion_sort(__first, __last, __comp); } template< _Size> inline _Size __lg(_Size __n) { _Size __k; for (__k = 0; __n != 1; __n >>= 1) ++__k; return __k; } template< _RandomAccessIter, _Size> void __introsort_loop(_RandomAccessIter __first, _RandomAccessIter __last, _Size __depth_limit) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; while (__last - __first > _M_threshold) { if (__depth_limit == 0) { partial_sort(__first, __last, __last); return; } --__depth_limit; _RandomAccessIter __cut = __unguarded_partition(__first, __last, _ValueType(__median(*__first, *(__first + (__last - __first)/2), *(__last - 1)))); __introsort_loop(__cut, __last, __depth_limit); __last = __cut; } } template< _RandomAccessIter, _Size, _Compare> void __introsort_loop(_RandomAccessIter __first, _RandomAccessIter __last, _Size __depth_limit, _Compare __comp) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; while (__last - __first > _M_threshold) { if (__depth_limit == 0) { partial_sort(__first, __last, __last, __comp); return; } --__depth_limit; _RandomAccessIter __cut = __unguarded_partition(__first, __last, _ValueType(__median(*__first, *(__first + (__last - __first)/2), *(__last - 1), __comp)), __comp); __introsort_loop(__cut, __last, __depth_limit, __comp); __last = __cut; } } # 2124 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _RandomAccessIter> inline void sort(_RandomAccessIter __first, _RandomAccessIter __last) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; if (__first != __last) { __introsort_loop(__first, __last, __lg(__last - __first) * 2); __final_insertion_sort(__first, __last); } } # 2150 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _RandomAccessIter, _Compare> inline void sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; if (__first != __last) { __introsort_loop(__first, __last, __lg(__last - __first) * 2, __comp); __final_insertion_sort(__first, __last, __comp); } } template< _RandomAccessIter> void __inplace_stable_sort(_RandomAccessIter __first, _RandomAccessIter __last) { if (__last - __first < 15) { __insertion_sort(__first, __last); return; } _RandomAccessIter __middle = __first + (__last - __first) / 2; __inplace_stable_sort(__first, __middle); __inplace_stable_sort(__middle, __last); __merge_without_buffer(__first, __middle, __last, __middle - __first, __last - __middle); } template< _RandomAccessIter, _Compare> void __inplace_stable_sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp) { if (__last - __first < 15) { __insertion_sort(__first, __last, __comp); return; } _RandomAccessIter __middle = __first + (__last - __first) / 2; __inplace_stable_sort(__first, __middle, __comp); __inplace_stable_sort(__middle, __last, __comp); __merge_without_buffer(__first, __middle, __last, __middle - __first, __last - __middle, __comp); } template< _RandomAccessIter1, _RandomAccessIter2, _Distance> void __merge_sort_loop(_RandomAccessIter1 __first, _RandomAccessIter1 __last, _RandomAccessIter2 __result, _Distance __step_size) { _Distance __two_step = 2 * __step_size; while (__last - __first >= __two_step) { __result = merge(__first, __first + __step_size, __first + __step_size, __first + __two_step, __result); __first += __two_step; } __step_size = min(_Distance(__last - __first), __step_size); merge(__first, __first + __step_size, __first + __step_size, __last, __result); } template< _RandomAccessIter1, _RandomAccessIter2, _Distance, _Compare> void __merge_sort_loop(_RandomAccessIter1 __first, _RandomAccessIter1 __last, _RandomAccessIter2 __result, _Distance __step_size, _Compare __comp) { _Distance __two_step = 2 * __step_size; while (__last - __first >= __two_step) { __result = merge(__first, __first + __step_size, __first + __step_size, __first + __two_step, __result, __comp); __first += __two_step; } __step_size = min(_Distance(__last - __first), __step_size); merge(__first, __first + __step_size, __first + __step_size, __last, __result, __comp); } enum { _M_chunk_size = 7 }; template< _RandomAccessIter, _Distance> void __chunk_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last, _Distance __chunk_size) { while (__last - __first >= __chunk_size) { __insertion_sort(__first, __first + __chunk_size); __first += __chunk_size; } __insertion_sort(__first, __last); } template< _RandomAccessIter, _Distance, _Compare> void __chunk_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last, _Distance __chunk_size, _Compare __comp) { while (__last - __first >= __chunk_size) { __insertion_sort(__first, __first + __chunk_size, __comp); __first += __chunk_size; } __insertion_sort(__first, __last, __comp); } template< _RandomAccessIter, _Pointer> void __merge_sort_with_buffer(_RandomAccessIter __first, _RandomAccessIter __last, _Pointer __buffer) { typedef iterator_traits<_RandomAccessIter>::difference_type _Distance; _Distance __len = __last - __first; _Pointer __buffer_last = __buffer + __len; _Distance __step_size = _M_chunk_size; __chunk_insertion_sort(__first, __last, __step_size); while (__step_size < __len) { __merge_sort_loop(__first, __last, __buffer, __step_size); __step_size *= 2; __merge_sort_loop(__buffer, __buffer_last, __first, __step_size); __step_size *= 2; } } template< _RandomAccessIter, _Pointer, _Compare> void __merge_sort_with_buffer(_RandomAccessIter __first, _RandomAccessIter __last, _Pointer __buffer, _Compare __comp) { typedef iterator_traits<_RandomAccessIter>::difference_type _Distance; _Distance __len = __last - __first; _Pointer __buffer_last = __buffer + __len; _Distance __step_size = _M_chunk_size; __chunk_insertion_sort(__first, __last, __step_size, __comp); while (__step_size < __len) { __merge_sort_loop(__first, __last, __buffer, __step_size, __comp); __step_size *= 2; __merge_sort_loop(__buffer, __buffer_last, __first, __step_size, __comp); __step_size *= 2; } } template< _RandomAccessIter, _Pointer, _Distance> void __stable_sort_adaptive(_RandomAccessIter __first, _RandomAccessIter __last, _Pointer __buffer, _Distance __buffer_size) { _Distance __len = (__last - __first + 1) / 2; _RandomAccessIter __middle = __first + __len; if (__len > __buffer_size) { __stable_sort_adaptive(__first, __middle, __buffer, __buffer_size); __stable_sort_adaptive(__middle, __last, __buffer, __buffer_size); } else { __merge_sort_with_buffer(__first, __middle, __buffer); __merge_sort_with_buffer(__middle, __last, __buffer); } __merge_adaptive(__first, __middle, __last, _Distance(__middle - __first), _Distance(__last - __middle), __buffer, __buffer_size); } template< _RandomAccessIter, _Pointer, _Distance, _Compare> void __stable_sort_adaptive(_RandomAccessIter __first, _RandomAccessIter __last, _Pointer __buffer, _Distance __buffer_size, _Compare __comp) { _Distance __len = (__last - __first + 1) / 2; _RandomAccessIter __middle = __first + __len; if (__len > __buffer_size) { __stable_sort_adaptive(__first, __middle, __buffer, __buffer_size, __comp); __stable_sort_adaptive(__middle, __last, __buffer, __buffer_size, __comp); } else { __merge_sort_with_buffer(__first, __middle, __buffer, __comp); __merge_sort_with_buffer(__middle, __last, __buffer, __comp); } __merge_adaptive(__first, __middle, __last, _Distance(__middle - __first), _Distance(__last - __middle), __buffer, __buffer_size, __comp); } # 2375 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _RandomAccessIter> inline void stable_sort(_RandomAccessIter __first, _RandomAccessIter __last) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; typedef iterator_traits<_RandomAccessIter>::difference_type _DistanceType; _Temporary_buffer<_RandomAccessIter, _ValueType> buf(__first, __last); if (buf.begin() == 0) __inplace_stable_sort(__first, __last); else __stable_sort_adaptive(__first, __last, buf.begin(), _DistanceType(buf.size())); } # 2403 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _RandomAccessIter, _Compare> inline void stable_sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; typedef iterator_traits<_RandomAccessIter>::difference_type _DistanceType; _Temporary_buffer<_RandomAccessIter, _ValueType> buf(__first, __last); if (buf.begin() == 0) __inplace_stable_sort(__first, __last, __comp); else __stable_sort_adaptive(__first, __last, buf.begin(), _DistanceType(buf.size()), __comp); } # 2433 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _RandomAccessIter> void partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle, _RandomAccessIter __last) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; make_heap(__first, __middle); for (_RandomAccessIter __i = __middle; __i < __last; ++__i) if (*__i < *__first) __pop_heap(__first, __middle, __i, _ValueType(*__i)); sort_heap(__first, __middle); } # 2463 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _RandomAccessIter, _Compare> void partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle, _RandomAccessIter __last, _Compare __comp) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; make_heap(__first, __middle, __comp); for (_RandomAccessIter __i = __middle; __i < __last; ++__i) if (__comp(*__i, *__first)) __pop_heap(__first, __middle, __i, _ValueType(*__i), __comp); sort_heap(__first, __middle, __comp); } # 2495 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _RandomAccessIter> _RandomAccessIter partial_sort_copy(_InputIter __first, _InputIter __last, _RandomAccessIter __result_first, _RandomAccessIter __result_last) { typedef iterator_traits<_InputIter>::value_type _InputValueType; typedef iterator_traits<_RandomAccessIter>::value_type _OutputValueType; typedef iterator_traits<_RandomAccessIter>::difference_type _DistanceType; if (__result_first == __result_last) return __result_last; _RandomAccessIter __result_real_last = __result_first; while(__first != __last && __result_real_last != __result_last) { *__result_real_last = *__first; ++__result_real_last; ++__first; } make_heap(__result_first, __result_real_last); while (__first != __last) { if (*__first < *__result_first) __adjust_heap(__result_first, _DistanceType(0), _DistanceType(__result_real_last - __result_first), _InputValueType(*__first)); ++__first; } sort_heap(__result_first, __result_real_last); return __result_real_last; } # 2541 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _InputIter, _RandomAccessIter, _Compare> _RandomAccessIter partial_sort_copy(_InputIter __first, _InputIter __last, _RandomAccessIter __result_first, _RandomAccessIter __result_last, _Compare __comp) { typedef iterator_traits<_InputIter>::value_type _InputValueType; typedef iterator_traits<_RandomAccessIter>::value_type _OutputValueType; typedef iterator_traits<_RandomAccessIter>::difference_type _DistanceType; if (__result_first == __result_last) return __result_last; _RandomAccessIter __result_real_last = __result_first; while(__first != __last && __result_real_last != __result_last) { *__result_real_last = *__first; ++__result_real_last; ++__first; } make_heap(__result_first, __result_real_last, __comp); while (__first != __last) { if (__comp(*__first, *__result_first)) __adjust_heap(__result_first, _DistanceType(0), _DistanceType(__result_real_last - __result_first), _InputValueType(*__first), __comp); ++__first; } sort_heap(__result_first, __result_real_last, __comp); return __result_real_last; } # 2588 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _RandomAccessIter> void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, _RandomAccessIter __last) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; while (__last - __first > 3) { _RandomAccessIter __cut = __unguarded_partition(__first, __last, _ValueType(__median(*__first, *(__first + (__last - __first)/2), *(__last - 1)))); if (__cut <= __nth) __first = __cut; else __last = __cut; } __insertion_sort(__first, __last); } # 2624 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _RandomAccessIter, _Compare> void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, _RandomAccessIter __last, _Compare __comp) { typedef iterator_traits<_RandomAccessIter>::value_type _ValueType; while (__last - __first > 3) { _RandomAccessIter __cut = __unguarded_partition(__first, __last, _ValueType(__median(*__first, *(__first + (__last - __first)/2), *(__last - 1), __comp)), __comp); if (__cut <= __nth) __first = __cut; else __last = __cut; } __insertion_sort(__first, __last, __comp); } template< _ForwardIter, _Tp> _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { typedef iterator_traits<_ForwardIter>::value_type _ValueType; typedef iterator_traits<_ForwardIter>::difference_type _DistanceType; _DistanceType __len = distance(__first, __last); _DistanceType __half; _ForwardIter __middle; while (__len > 0) { __half = __len >> 1; __middle = __first; advance(__middle, __half); if (*__middle < __val) { __first = __middle; ++__first; __len = __len - __half - 1; } else __len = __half; } return __first; } template< _ForwardIter, _Tp, _Compare> _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, _Compare __comp) { typedef iterator_traits<_ForwardIter>::value_type _ValueType; typedef iterator_traits<_ForwardIter>::difference_type _DistanceType; _DistanceType __len = distance(__first, __last); _DistanceType __half; _ForwardIter __middle; while (__len > 0) { __half = __len >> 1; __middle = __first; advance(__middle, __half); if (__comp(*__middle, __val)) { __first = __middle; ++__first; __len = __len - __half - 1; } else __len = __half; } return __first; } template< _ForwardIter, _Tp> _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { typedef iterator_traits<_ForwardIter>::value_type _ValueType; typedef iterator_traits<_ForwardIter>::difference_type _DistanceType; _DistanceType __len = distance(__first, __last); _DistanceType __half; _ForwardIter __middle; while (__len > 0) { __half = __len >> 1; __middle = __first; advance(__middle, __half); if (__val < *__middle) __len = __half; else { __first = __middle; ++__first; __len = __len - __half - 1; } } return __first; } template< _ForwardIter, _Tp, _Compare> _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, _Compare __comp) { typedef iterator_traits<_ForwardIter>::value_type _ValueType; typedef iterator_traits<_ForwardIter>::difference_type _DistanceType; _DistanceType __len = distance(__first, __last); _DistanceType __half; _ForwardIter __middle; while (__len > 0) { __half = __len >> 1; __middle = __first; advance(__middle, __half); if (__comp(__val, *__middle)) __len = __half; else { __first = __middle; ++__first; __len = __len - __half - 1; } } return __first; } template< _ForwardIter, _Tp> pair<_ForwardIter, _ForwardIter> equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { typedef iterator_traits<_ForwardIter>::value_type _ValueType; typedef iterator_traits<_ForwardIter>::difference_type _DistanceType; _DistanceType __len = distance(__first, __last); _DistanceType __half; _ForwardIter __middle, __left, __right; while (__len > 0) { __half = __len >> 1; __middle = __first; advance(__middle, __half); if (*__middle < __val) { __first = __middle; ++__first; __len = __len - __half - 1; } else if (__val < *__middle) __len = __half; else { __left = lower_bound(__first, __middle, __val); advance(__first, __len); __right = upper_bound(++__middle, __first, __val); return pair<_ForwardIter, _ForwardIter>(__left, __right); } } return pair<_ForwardIter, _ForwardIter>(__first, __first); } template< _ForwardIter, _Tp, _Compare> pair<_ForwardIter, _ForwardIter> equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, _Compare __comp) { typedef iterator_traits<_ForwardIter>::value_type _ValueType; typedef iterator_traits<_ForwardIter>::difference_type _DistanceType; _DistanceType __len = distance(__first, __last); _DistanceType __half; _ForwardIter __middle, __left, __right; while (__len > 0) { __half = __len >> 1; __middle = __first; advance(__middle, __half); if (__comp(*__middle, __val)) { __first = __middle; ++__first; __len = __len - __half - 1; } else if (__comp(__val, *__middle)) __len = __half; else { __left = lower_bound(__first, __middle, __val, __comp); advance(__first, __len); __right = upper_bound(++__middle, __first, __val, __comp); return pair<_ForwardIter, _ForwardIter>(__left, __right); } } return pair<_ForwardIter, _ForwardIter>(__first, __first); } template< _ForwardIter, _Tp> bool binary_search(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { _ForwardIter __i = lower_bound(__first, __last, __val); return __i != __last && !(__val < *__i); } template< _ForwardIter, _Tp, _Compare> bool binary_search(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, _Compare __comp) { _ForwardIter __i = lower_bound(__first, __last, __val, __comp); return __i != __last && !__comp(__val, *__i); } template< _InputIter1, _InputIter2, _OutputIter> _OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result) { while (__first1 != __last1 && __first2 != __last2) { if (*__first2 < *__first1) { *__result = *__first2; ++__first2; } else { *__result = *__first1; ++__first1; } ++__result; } return copy(__first2, __last2, copy(__first1, __last1, __result)); } template< _InputIter1, _InputIter2, _OutputIter, _Compare> _OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result, _Compare __comp) { while (__first1 != __last1 && __first2 != __last2) { if (__comp(*__first2, *__first1)) { *__result = *__first2; ++__first2; } else { *__result = *__first1; ++__first1; } ++__result; } return copy(__first2, __last2, copy(__first1, __last1, __result)); } template< _BidirectionalIter, _Distance> void __merge_without_buffer(_BidirectionalIter __first, _BidirectionalIter __middle, _BidirectionalIter __last, _Distance __len1, _Distance __len2) { if (__len1 == 0 || __len2 == 0) return; if (__len1 + __len2 == 2) { if (*__middle < *__first) iter_swap(__first, __middle); return; } _BidirectionalIter __first_cut = __first; _BidirectionalIter __second_cut = __middle; _Distance __len11 = 0; _Distance __len22 = 0; if (__len1 > __len2) { __len11 = __len1 / 2; advance(__first_cut, __len11); __second_cut = lower_bound(__middle, __last, *__first_cut); __len22 = distance(__middle, __second_cut); } else { __len22 = __len2 / 2; advance(__second_cut, __len22); __first_cut = upper_bound(__first, __middle, *__second_cut); __len11 = distance(__first, __first_cut); } rotate(__first_cut, __middle, __second_cut); _BidirectionalIter __new_middle = __first_cut; advance(__new_middle, distance(__middle, __second_cut)); __merge_without_buffer(__first, __first_cut, __new_middle, __len11, __len22); __merge_without_buffer(__new_middle, __second_cut, __last, __len1 - __len11, __len2 - __len22); } template< _BidirectionalIter, _Distance, _Compare> void __merge_without_buffer(_BidirectionalIter __first, _BidirectionalIter __middle, _BidirectionalIter __last, _Distance __len1, _Distance __len2, _Compare __comp) { if (__len1 == 0 || __len2 == 0) return; if (__len1 + __len2 == 2) { if (__comp(*__middle, *__first)) iter_swap(__first, __middle); return; } _BidirectionalIter __first_cut = __first; _BidirectionalIter __second_cut = __middle; _Distance __len11 = 0; _Distance __len22 = 0; if (__len1 > __len2) { __len11 = __len1 / 2; advance(__first_cut, __len11); __second_cut = lower_bound(__middle, __last, *__first_cut, __comp); __len22 = distance(__middle, __second_cut); } else { __len22 = __len2 / 2; advance(__second_cut, __len22); __first_cut = upper_bound(__first, __middle, *__second_cut, __comp); __len11 = distance(__first, __first_cut); } rotate(__first_cut, __middle, __second_cut); _BidirectionalIter __new_middle = __first_cut; advance(__new_middle, distance(__middle, __second_cut)); __merge_without_buffer(__first, __first_cut, __new_middle, __len11, __len22, __comp); __merge_without_buffer(__new_middle, __second_cut, __last, __len1 - __len11, __len2 - __len22, __comp); } template< _BidirectionalIter1, _BidirectionalIter2, _Distance> _BidirectionalIter1 __rotate_adaptive(_BidirectionalIter1 __first, _BidirectionalIter1 __middle, _BidirectionalIter1 __last, _Distance __len1, _Distance __len2, _BidirectionalIter2 __buffer, _Distance __buffer_size) { _BidirectionalIter2 __buffer_end; if (__len1 > __len2 && __len2 <= __buffer_size) { __buffer_end = copy(__middle, __last, __buffer); copy_backward(__first, __middle, __last); return copy(__buffer, __buffer_end, __first); } else if (__len1 <= __buffer_size) { __buffer_end = copy(__first, __middle, __buffer); copy(__middle, __last, __first); return copy_backward(__buffer, __buffer_end, __last); } else { rotate(__first, __middle, __last); advance(__first, distance(__middle, __last)); return __first; } } template< _BidirectionalIter1, _BidirectionalIter2, _BidirectionalIter3> _BidirectionalIter3 __merge_backward(_BidirectionalIter1 __first1, _BidirectionalIter1 __last1, _BidirectionalIter2 __first2, _BidirectionalIter2 __last2, _BidirectionalIter3 __result) { if (__first1 == __last1) return copy_backward(__first2, __last2, __result); if (__first2 == __last2) return copy_backward(__first1, __last1, __result); --__last1; --__last2; while (true) { if (*__last2 < *__last1) { *--__result = *__last1; if (__first1 == __last1) return copy_backward(__first2, ++__last2, __result); --__last1; } else { *--__result = *__last2; if (__first2 == __last2) return copy_backward(__first1, ++__last1, __result); --__last2; } } } template< _BidirectionalIter1, _BidirectionalIter2, _BidirectionalIter3, _Compare> _BidirectionalIter3 __merge_backward(_BidirectionalIter1 __first1, _BidirectionalIter1 __last1, _BidirectionalIter2 __first2, _BidirectionalIter2 __last2, _BidirectionalIter3 __result, _Compare __comp) { if (__first1 == __last1) return copy_backward(__first2, __last2, __result); if (__first2 == __last2) return copy_backward(__first1, __last1, __result); --__last1; --__last2; while (true) { if (__comp(*__last2, *__last1)) { *--__result = *__last1; if (__first1 == __last1) return copy_backward(__first2, ++__last2, __result); --__last1; } else { *--__result = *__last2; if (__first2 == __last2) return copy_backward(__first1, ++__last1, __result); --__last2; } } } template< _BidirectionalIter, _Distance, _Pointer> void __merge_adaptive(_BidirectionalIter __first, _BidirectionalIter __middle, _BidirectionalIter __last, _Distance __len1, _Distance __len2, _Pointer __buffer, _Distance __buffer_size) { if (__len1 <= __len2 && __len1 <= __buffer_size) { _Pointer __buffer_end = copy(__first, __middle, __buffer); merge(__buffer, __buffer_end, __middle, __last, __first); } else if (__len2 <= __buffer_size) { _Pointer __buffer_end = copy(__middle, __last, __buffer); __merge_backward(__first, __middle, __buffer, __buffer_end, __last); } else { _BidirectionalIter __first_cut = __first; _BidirectionalIter __second_cut = __middle; _Distance __len11 = 0; _Distance __len22 = 0; if (__len1 > __len2) { __len11 = __len1 / 2; advance(__first_cut, __len11); __second_cut = lower_bound(__middle, __last, *__first_cut); __len22 = distance(__middle, __second_cut); } else { __len22 = __len2 / 2; advance(__second_cut, __len22); __first_cut = upper_bound(__first, __middle, *__second_cut); __len11 = distance(__first, __first_cut); } _BidirectionalIter __new_middle = __rotate_adaptive(__first_cut, __middle, __second_cut, __len1 - __len11, __len22, __buffer, __buffer_size); __merge_adaptive(__first, __first_cut, __new_middle, __len11, __len22, __buffer, __buffer_size); __merge_adaptive(__new_middle, __second_cut, __last, __len1 - __len11, __len2 - __len22, __buffer, __buffer_size); } } template< _BidirectionalIter, _Distance, _Pointer, _Compare> void __merge_adaptive(_BidirectionalIter __first, _BidirectionalIter __middle, _BidirectionalIter __last, _Distance __len1, _Distance __len2, _Pointer __buffer, _Distance __buffer_size, _Compare __comp) { if (__len1 <= __len2 && __len1 <= __buffer_size) { _Pointer __buffer_end = copy(__first, __middle, __buffer); merge(__buffer, __buffer_end, __middle, __last, __first, __comp); } else if (__len2 <= __buffer_size) { _Pointer __buffer_end = copy(__middle, __last, __buffer); __merge_backward(__first, __middle, __buffer, __buffer_end, __last, __comp); } else { _BidirectionalIter __first_cut = __first; _BidirectionalIter __second_cut = __middle; _Distance __len11 = 0; _Distance __len22 = 0; if (__len1 > __len2) { __len11 = __len1 / 2; advance(__first_cut, __len11); __second_cut = lower_bound(__middle, __last, *__first_cut, __comp); __len22 = distance(__middle, __second_cut); } else { __len22 = __len2 / 2; advance(__second_cut, __len22); __first_cut = upper_bound(__first, __middle, *__second_cut, __comp); __len11 = distance(__first, __first_cut); } _BidirectionalIter __new_middle = __rotate_adaptive(__first_cut, __middle, __second_cut, __len1 - __len11, __len22, __buffer, __buffer_size); __merge_adaptive(__first, __first_cut, __new_middle, __len11, __len22, __buffer, __buffer_size, __comp); __merge_adaptive(__new_middle, __second_cut, __last, __len1 - __len11, __len2 - __len22, __buffer, __buffer_size, __comp); } } template< _BidirectionalIter> void inplace_merge(_BidirectionalIter __first, _BidirectionalIter __middle, _BidirectionalIter __last) { typedef iterator_traits<_BidirectionalIter>::value_type _ValueType; typedef iterator_traits<_BidirectionalIter>::difference_type _DistanceType; if (__first == __middle || __middle == __last) return; _DistanceType __len1 = distance(__first, __middle); _DistanceType __len2 = distance(__middle, __last); _Temporary_buffer<_BidirectionalIter, _ValueType> __buf(__first, __last); if (__buf.begin() == 0) __merge_without_buffer(__first, __middle, __last, __len1, __len2); else __merge_adaptive(__first, __middle, __last, __len1, __len2, __buf.begin(), _DistanceType(__buf.size())); } template< _BidirectionalIter, _Compare> void inplace_merge(_BidirectionalIter __first, _BidirectionalIter __middle, _BidirectionalIter __last, _Compare __comp) { typedef iterator_traits<_BidirectionalIter>::value_type _ValueType; typedef iterator_traits<_BidirectionalIter>::difference_type _DistanceType; if (__first == __middle || __middle == __last) return; _DistanceType __len1 = distance(__first, __middle); _DistanceType __len2 = distance(__middle, __last); _Temporary_buffer<_BidirectionalIter, _ValueType> __buf(__first, __last); if (__buf.begin() == 0) __merge_without_buffer(__first, __middle, __last, __len1, __len2, __comp); else __merge_adaptive(__first, __middle, __last, __len1, __len2, __buf.begin(), _DistanceType(__buf.size()), __comp); } template< _InputIter1, _InputIter2> bool includes(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2) { while (__first1 != __last1 && __first2 != __last2) if (*__first2 < *__first1) return false; else if(*__first1 < *__first2) ++__first1; else ++__first1, ++__first2; return __first2 == __last2; } template< _InputIter1, _InputIter2, _Compare> bool includes(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _Compare __comp) { while (__first1 != __last1 && __first2 != __last2) if (__comp(*__first2, *__first1)) return false; else if(__comp(*__first1, *__first2)) ++__first1; else ++__first1, ++__first2; return __first2 == __last2; } template< _InputIter1, _InputIter2, _OutputIter> _OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result) { while (__first1 != __last1 && __first2 != __last2) { if (*__first1 < *__first2) { *__result = *__first1; ++__first1; } else if (*__first2 < *__first1) { *__result = *__first2; ++__first2; } else { *__result = *__first1; ++__first1; ++__first2; } ++__result; } return copy(__first2, __last2, copy(__first1, __last1, __result)); } template< _InputIter1, _InputIter2, _OutputIter, _Compare> _OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result, _Compare __comp) { while (__first1 != __last1 && __first2 != __last2) { if (__comp(*__first1, *__first2)) { *__result = *__first1; ++__first1; } else if (__comp(*__first2, *__first1)) { *__result = *__first2; ++__first2; } else { *__result = *__first1; ++__first1; ++__first2; } ++__result; } return copy(__first2, __last2, copy(__first1, __last1, __result)); } template< _InputIter1, _InputIter2, _OutputIter> _OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result) { while (__first1 != __last1 && __first2 != __last2) if (*__first1 < *__first2) ++__first1; else if (*__first2 < *__first1) ++__first2; else { *__result = *__first1; ++__first1; ++__first2; ++__result; } return __result; } template< _InputIter1, _InputIter2, _OutputIter, _Compare> _OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result, _Compare __comp) { while (__first1 != __last1 && __first2 != __last2) if (__comp(*__first1, *__first2)) ++__first1; else if (__comp(*__first2, *__first1)) ++__first2; else { *__result = *__first1; ++__first1; ++__first2; ++__result; } return __result; } template< _InputIter1, _InputIter2, _OutputIter> _OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result) { while (__first1 != __last1 && __first2 != __last2) if (*__first1 < *__first2) { *__result = *__first1; ++__first1; ++__result; } else if (*__first2 < *__first1) ++__first2; else { ++__first1; ++__first2; } return copy(__first1, __last1, __result); } template< _InputIter1, _InputIter2, _OutputIter, _Compare> _OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result, _Compare __comp) { while (__first1 != __last1 && __first2 != __last2) if (__comp(*__first1, *__first2)) { *__result = *__first1; ++__first1; ++__result; } else if (__comp(*__first2, *__first1)) ++__first2; else { ++__first1; ++__first2; } return copy(__first1, __last1, __result); } template< _InputIter1, _InputIter2, _OutputIter> _OutputIter set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result) { while (__first1 != __last1 && __first2 != __last2) if (*__first1 < *__first2) { *__result = *__first1; ++__first1; ++__result; } else if (*__first2 < *__first1) { *__result = *__first2; ++__first2; ++__result; } else { ++__first1; ++__first2; } return copy(__first2, __last2, copy(__first1, __last1, __result)); } template< _InputIter1, _InputIter2, _OutputIter, _Compare> _OutputIter set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result, _Compare __comp) { while (__first1 != __last1 && __first2 != __last2) if (__comp(*__first1, *__first2)) { *__result = *__first1; ++__first1; ++__result; } else if (__comp(*__first2, *__first1)) { *__result = *__first2; ++__first2; ++__result; } else { ++__first1; ++__first2; } return copy(__first2, __last2, copy(__first1, __last1, __result)); } template< _ForwardIter> _ForwardIter max_element(_ForwardIter __first, _ForwardIter __last) { if (__first == __last) return __first; _ForwardIter __result = __first; while (++__first != __last) if (*__result < *__first) __result = __first; return __result; } template< _ForwardIter, _Compare> _ForwardIter max_element(_ForwardIter __first, _ForwardIter __last, _Compare __comp) { if (__first == __last) return __first; _ForwardIter __result = __first; while (++__first != __last) if (__comp(*__result, *__first)) __result = __first; return __result; } template< _ForwardIter> _ForwardIter min_element(_ForwardIter __first, _ForwardIter __last) { if (__first == __last) return __first; _ForwardIter __result = __first; while (++__first != __last) if (*__first < *__result) __result = __first; return __result; } template< _ForwardIter, _Compare> _ForwardIter min_element(_ForwardIter __first, _ForwardIter __last, _Compare __comp) { if (__first == __last) return __first; _ForwardIter __result = __first; while (++__first != __last) if (__comp(*__first, *__result)) __result = __first; return __result; } template< _BidirectionalIter> bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last) { if (__first == __last) return false; _BidirectionalIter __i = __first; ++__i; if (__i == __last) return false; __i = __last; --__i; for(;;) { _BidirectionalIter __ii = __i; --__i; if (*__i < *__ii) { _BidirectionalIter __j = __last; while (!(*__i < *--__j)) {} iter_swap(__i, __j); reverse(__ii, __last); return true; } if (__i == __first) { reverse(__first, __last); return false; } } } template< _BidirectionalIter, _Compare> bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last, _Compare __comp) { if (__first == __last) return false; _BidirectionalIter __i = __first; ++__i; if (__i == __last) return false; __i = __last; --__i; for(;;) { _BidirectionalIter __ii = __i; --__i; if (__comp(*__i, *__ii)) { _BidirectionalIter __j = __last; while (!__comp(*__i, *--__j)) {} iter_swap(__i, __j); reverse(__ii, __last); return true; } if (__i == __first) { reverse(__first, __last); return false; } } } template< _BidirectionalIter> bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last) { if (__first == __last) return false; _BidirectionalIter __i = __first; ++__i; if (__i == __last) return false; __i = __last; --__i; for(;;) { _BidirectionalIter __ii = __i; --__i; if (*__ii < *__i) { _BidirectionalIter __j = __last; while (!(*--__j < *__i)) {} iter_swap(__i, __j); reverse(__ii, __last); return true; } if (__i == __first) { reverse(__first, __last); return false; } } } template< _BidirectionalIter, _Compare> bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last, _Compare __comp) { if (__first == __last) return false; _BidirectionalIter __i = __first; ++__i; if (__i == __last) return false; __i = __last; --__i; for(;;) { _BidirectionalIter __ii = __i; --__i; if (__comp(*__ii, *__i)) { _BidirectionalIter __j = __last; while (!__comp(*--__j, *__i)) {} iter_swap(__i, __j); reverse(__ii, __last); return true; } if (__i == __first) { reverse(__first, __last); return false; } } } template< _InputIter, _ForwardIter> _InputIter find_first_of(_InputIter __first1, _InputIter __last1, _ForwardIter __first2, _ForwardIter __last2) { for ( ; __first1 != __last1; ++__first1) for (_ForwardIter __iter = __first2; __iter != __last2; ++__iter) if (*__first1 == *__iter) return __first1; return __last1; } template< _InputIter, _ForwardIter, _BinaryPredicate> _InputIter find_first_of(_InputIter __first1, _InputIter __last1, _ForwardIter __first2, _ForwardIter __last2, _BinaryPredicate __comp) { for ( ; __first1 != __last1; ++__first1) for (_ForwardIter __iter = __first2; __iter != __last2; ++__iter) if (__comp(*__first1, *__iter)) return __first1; return __last1; } # 3891 "/usr/local/include/g++-v3/bits/stl_algo.h" 3 template< _ForwardIter1, _ForwardIter2> _ForwardIter1 __find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2, _ForwardIter2 __last2, forward_iterator_tag, forward_iterator_tag) { if (__first2 == __last2) return __last1; else { _ForwardIter1 __result = __last1; while (1) { _ForwardIter1 __new_result = search(__first1, __last1, __first2, __last2); if (__new_result == __last1) return __result; else { __result = __new_result; __first1 = __new_result; ++__first1; } } } } template< _ForwardIter1, _ForwardIter2, _BinaryPredicate> _ForwardIter1 __find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2, _ForwardIter2 __last2, forward_iterator_tag, forward_iterator_tag, _BinaryPredicate __comp) { if (__first2 == __last2) return __last1; else { _ForwardIter1 __result = __last1; while (1) { _ForwardIter1 __new_result = search(__first1, __last1, __first2, __last2, __comp); if (__new_result == __last1) return __result; else { __result = __new_result; __first1 = __new_result; ++__first1; } } } } template< _BidirectionalIter1, _BidirectionalIter2> _BidirectionalIter1 __find_end(_BidirectionalIter1 __first1, _BidirectionalIter1 __last1, _BidirectionalIter2 __first2, _BidirectionalIter2 __last2, bidirectional_iterator_tag, bidirectional_iterator_tag) { typedef reverse_iterator<_BidirectionalIter1> _RevIter1; typedef reverse_iterator<_BidirectionalIter2> _RevIter2; _RevIter1 __rlast1(__first1); _RevIter2 __rlast2(__first2); _RevIter1 __rresult = search(_RevIter1(__last1), __rlast1, _RevIter2(__last2), __rlast2); if (__rresult == __rlast1) return __last1; else { _BidirectionalIter1 __result = __rresult.base(); advance(__result, -distance(__first2, __last2)); return __result; } } template< _BidirectionalIter1, _BidirectionalIter2, _BinaryPredicate> _BidirectionalIter1 __find_end(_BidirectionalIter1 __first1, _BidirectionalIter1 __last1, _BidirectionalIter2 __first2, _BidirectionalIter2 __last2, bidirectional_iterator_tag, bidirectional_iterator_tag, _BinaryPredicate __comp) { typedef reverse_iterator<_BidirectionalIter1> _RevIter1; typedef reverse_iterator<_BidirectionalIter2> _RevIter2; _RevIter1 __rlast1(__first1); _RevIter2 __rlast2(__first2); _RevIter1 __rresult = search(_RevIter1(__last1), __rlast1, _RevIter2(__last2), __rlast2, __comp); if (__rresult == __rlast1) return __last1; else { _BidirectionalIter1 __result = __rresult.base(); advance(__result, -distance(__first2, __last2)); return __result; } } template< _ForwardIter1, _ForwardIter2> inline _ForwardIter1 find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2, _ForwardIter2 __last2) { return __find_end(__first1, __last1, __first2, __last2, __iterator_category(__first1), __iterator_category(__first2)); } template< _ForwardIter1, _ForwardIter2, _BinaryPredicate> inline _ForwardIter1 find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2, _ForwardIter2 __last2, _BinaryPredicate __comp) { return __find_end(__first1, __last1, __first2, __last2, __iterator_category(__first1), __iterator_category(__first2), __comp); } } # 70 "/usr/local/include/g++-v3/algorithm" 2 3 # 57 "/usr/local/include/g++-v3/string" 2 3 # 1 "/usr/local/include/g++-v3/bits/basic_string.tcc" 1 3 # 45 "/usr/local/include/g++-v3/bits/basic_string.tcc" 3 namespace std { template< _CharT, _Traits, _Alloc> const basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: _Rep::_S_max_size = (((npos - sizeof(_Rep))/sizeof(_CharT)) - 1) / 4; template< _CharT, _Traits, _Alloc> const _CharT basic_string<_CharT, _Traits, _Alloc>:: _Rep::_S_terminal = _CharT(); template< _CharT, _Traits, _Alloc> const basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>::npos; template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>::_S_empty_rep_storage[ (sizeof(_Rep) + sizeof(_CharT) + sizeof(size_type) - 1)/sizeof(size_type)]; template< _CharT, _Traits, _Alloc> template< _InIter> _CharT* basic_string<_CharT, _Traits, _Alloc>:: _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a, input_iterator_tag) { if (__beg == __end && __a == _Alloc()) return _S_empty_rep()._M_refcopy(); _CharT __buf[100]; size_type __i = 0; while (__beg != __end && __i < sizeof(__buf) / sizeof(_CharT)) { __buf[__i++] = *__beg; ++__beg; } _Rep* __r = _Rep::_S_create(__i, __a); traits_type::copy(__r->_M_refdata(), __buf, __i); __r->_M_length = __i; try { for (;;) { _CharT* __p = __r->_M_refdata() + __r->_M_length; _CharT* __last = __r->_M_refdata() + __r->_M_capacity; for (;;) { if (__beg == __end) { __r->_M_length = __p - __r->_M_refdata(); *__p = _Rep::_S_terminal; return __r->_M_refdata(); } if (__p == __last) break; *__p++ = *__beg; ++__beg; } size_type __len = __p - __r->_M_refdata(); _Rep* __another = _Rep::_S_create(__len + 1, __a); traits_type::copy(__another->_M_refdata(), __r->_M_refdata(), __len); __r->_M_destroy(__a); __r = __another; __r->_M_length = __len; } } catch(...) { __r->_M_destroy(__a); throw; } return 0; } template< _CharT, _Traits, _Alloc> template _CharT* basic_string<_CharT, _Traits, _Alloc>:: _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a, forward_iterator_tag) { size_type __dnew = static_cast(distance(__beg, __end)); if (__builtin_expect(__beg == _InIter(0), 0)) __throw_logic_error("attempt to create string with null pointer"); if (__beg == __end && __a == _Alloc()) return _S_empty_rep()._M_refcopy(); _Rep* __r = _Rep::_S_create(__dnew, __a); try { _S_copy_chars(__r->_M_refdata(), __beg, __end); } catch(...) { __r->_M_destroy(__a); throw; } __r->_M_length = __dnew; __r->_M_refdata()[__dnew] = _Rep::_S_terminal; return __r->_M_refdata(); } template< _CharT, _Traits, _Alloc> _CharT* basic_string<_CharT, _Traits, _Alloc>:: _S_construct(size_type __n, _CharT __c, const _Alloc& __a) { if (__n == 0 && __a == _Alloc()) return _S_empty_rep()._M_refcopy(); _Rep* __r = _Rep::_S_create(__n, __a); try { if (__n) traits_type::assign(__r->_M_refdata(), __n, __c); } catch(...) { __r->_M_destroy(__a); throw; } __r->_M_length = __n; __r->_M_refdata()[__n] = _Rep::_S_terminal; return __r->_M_refdata(); } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>:: basic_string(const basic_string& __str) : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(), __str.get_allocator()), __str.get_allocator()) { } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>:: basic_string(const _Alloc& __a) : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a) { } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>:: basic_string(const basic_string& __str, size_type __pos, size_type __n) : _M_dataplus(_S_construct(__str._M_check(__pos), __str._M_fold(__pos, __n), _Alloc()), _Alloc()) { } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>:: basic_string(const basic_string& __str, size_type __pos, size_type __n, const _Alloc& __a) : _M_dataplus(_S_construct(__str._M_check(__pos), __str._M_fold(__pos, __n), __a), __a) { } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>:: basic_string(const _CharT* __s, size_type __n, const _Alloc& __a) : _M_dataplus(_S_construct(__s, __s + __n, __a), __a) { } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>:: basic_string(const _CharT* __s, const _Alloc& __a) : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) : 0, __a), __a) { } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>:: basic_string(size_type __n, _CharT __c, const _Alloc& __a) : _M_dataplus(_S_construct(__n, __c, __a), __a) { } template< _CharT, _Traits, _Alloc> template< _InputIter> basic_string<_CharT, _Traits, _Alloc>:: basic_string(_InputIter __beg, _InputIter __end, const _Alloc& __a) : _M_dataplus(_S_construct(__beg, __end, __a), __a) { } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>::assign(const basic_string& __str) { if (_M_rep() != __str._M_rep()) { allocator_type __a = this->get_allocator(); _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator()); _M_rep()->_M_dispose(__a); _M_data(__tmp); } return *this; } template< _CharT, _Traits, _Alloc> void basic_string<_CharT, _Traits, _Alloc>::_Rep:: _M_destroy(const _Alloc& __a) throw () { size_type __size = sizeof(_Rep) + (_M_capacity + 1) * sizeof(_CharT); _Raw_bytes_alloc(__a).deallocate(reinterpret_cast(this), __size); } template< _CharT, _Traits, _Alloc> void basic_string<_CharT, _Traits, _Alloc>::_M_leak_hard() { if (_M_rep()->_M_is_shared()) _M_mutate(0, 0, 0); _M_rep()->_M_set_leaked(); } template< _CharT, _Traits, _Alloc> void basic_string<_CharT, _Traits, _Alloc>:: _M_mutate(size_type __pos, size_type __len1, size_type __len2) { size_type __old_size = this->size(); const size_type __new_size = __old_size + __len2 - __len1; const _CharT* __src = _M_data() + __pos + __len1; const size_type __how_much = __old_size - __pos - __len1; if (_M_rep()->_M_is_shared() || __new_size > capacity()) { allocator_type __a = get_allocator(); const size_type __pagesize = 4096; const size_type __malloc_header_size = 4 * sizeof (void*); const size_type __page_capacity = (__pagesize - __malloc_header_size - sizeof(_Rep) - sizeof(_CharT)) / sizeof(_CharT); _Rep* __r; if (__new_size > capacity() && __new_size > __page_capacity) __r = _Rep::_S_create(__new_size > 2*capacity() ? __new_size : 2*capacity(), __a); else __r = _Rep::_S_create(__new_size, __a); try { if (__pos) traits_type::copy(__r->_M_refdata(), _M_data(), __pos); if (__how_much) traits_type::copy(__r->_M_refdata() + __pos + __len2, __src, __how_much); } catch(...) { __r->_M_dispose(get_allocator()); throw; } _M_rep()->_M_dispose(__a); _M_data(__r->_M_refdata()); } else if (__how_much && __len1 != __len2) { traits_type::move(_M_data() + __pos + __len2, __src, __how_much); } _M_rep()->_M_set_sharable(); _M_rep()->_M_length = __new_size; _M_data()[__new_size] = _Rep::_S_terminal; } template< _CharT, _Traits, _Alloc> void basic_string<_CharT, _Traits, _Alloc>::reserve(size_type __res) { if (__res > this->capacity() || _M_rep()->_M_is_shared()) { if (__res > this->max_size()) __throw_length_error("basic_string::reserve"); if (__res < this->size()) __res = this->size(); allocator_type __a = get_allocator(); _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size()); _M_rep()->_M_dispose(__a); _M_data(__tmp); } } template< _CharT, _Traits, _Alloc> void basic_string<_CharT, _Traits, _Alloc>::swap(basic_string& __s) { if (_M_rep()->_M_is_leaked()) _M_rep()->_M_set_sharable(); if (__s._M_rep()->_M_is_leaked()) __s._M_rep()->_M_set_sharable(); if (this->get_allocator() == __s.get_allocator()) { _CharT* __tmp = _M_data(); _M_data(__s._M_data()); __s._M_data(__tmp); } else { basic_string __tmp1(_M_ibegin(), _M_iend(), __s.get_allocator()); basic_string __tmp2(__s._M_ibegin(), __s._M_iend(), this->get_allocator()); *this = __tmp2; __s = __tmp1; } } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::_Rep* basic_string<_CharT, _Traits, _Alloc>::_Rep:: _S_create(size_t __capacity, const _Alloc& __alloc) { typedef basic_string<_CharT, _Traits, _Alloc> __string_type; if (__capacity > _S_max_size) __throw_length_error("basic_string::_S_create"); size_t __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); # 421 "/usr/local/include/g++-v3/bits/basic_string.tcc" 3 const size_t __pagesize = 4096; const size_t __subpagesize = 128; const size_t __malloc_header_size = 4 * sizeof (void*); if ((__size + __malloc_header_size) > __pagesize) { size_t __extra = (__pagesize - ((__size + __malloc_header_size) % __pagesize)) % __pagesize; __capacity += __extra / sizeof(_CharT); __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); } else if (__size > __subpagesize) { size_t __extra = (__subpagesize - ((__size + __malloc_header_size) % __subpagesize)) % __subpagesize; __capacity += __extra / sizeof(_CharT); __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); } void* __place = _Raw_bytes_alloc(__alloc).allocate(__size); _Rep *__p = new (__place) _Rep; __p->_M_capacity = __capacity; __p->_M_set_sharable(); __p->_M_length = 0; return __p; } template< _CharT, _Traits, _Alloc> _CharT* basic_string<_CharT, _Traits, _Alloc>::_Rep:: _M_clone(const _Alloc& __alloc, size_type __res) { const size_type __requested_cap = _M_length + __res; const size_type __pagesize = 4096; const size_type __malloc_header_size = 4 * sizeof (void*); const size_type __page_capacity = (__pagesize - __malloc_header_size - sizeof(_Rep) - sizeof(_CharT)) / sizeof(_CharT); _Rep* __r; if (__requested_cap > _M_capacity && __requested_cap > __page_capacity) __r = _Rep::_S_create(__requested_cap > 2*_M_capacity ? __requested_cap : 2*_M_capacity, __alloc); else __r = _Rep::_S_create(__requested_cap, __alloc); if (_M_length) { try { traits_type::copy(__r->_M_refdata(), _M_refdata(), _M_length); } catch(...) { __r->_M_destroy(__alloc); throw; } } __r->_M_length = _M_length; return __r->_M_refdata(); } template< _CharT, _Traits, _Alloc> void basic_string<_CharT, _Traits, _Alloc>::resize(size_type __n, _CharT __c) { if (__n > max_size()) __throw_length_error("basic_string::resize"); size_type __size = this->size(); if (__size < __n) this->append(__n - __size, __c); else if (__n < __size) this->erase(__n); } # 508 "/usr/local/include/g++-v3/bits/basic_string.tcc" 3 template< _CharT, _Traits, _Alloc> template< _InputIter> basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: _M_replace(iterator __i1, iterator __i2, _InputIter __k1, _InputIter __k2, input_iterator_tag) { basic_string __s(__k1, __k2); return _M_replace_safe(__i1, __i2, __s._M_ibegin(), __s._M_iend()); } template< _CharT, _Traits, _Alloc> template< _ForwardIter> basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: _M_replace_safe(iterator __i1, iterator __i2, _ForwardIter __k1, _ForwardIter __k2) { size_type __dnew = static_cast(distance(__k1, __k2)); size_type __dold = __i2 - __i1; size_type __dmax = this->max_size(); if (__dmax <= __dnew) __throw_length_error("basic_string::_M_replace"); size_type __off = __i1 - _M_ibegin(); _M_mutate(__off, __dold, __dnew); if (__dnew) _S_copy_chars(_M_data() + __off, __k1, __k2); return *this; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: replace(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2) { const size_type __strsize = __str.size(); if (__pos2 > __strsize) __throw_out_of_range("basic_string::replace"); const bool __testn2 = __n2 < __strsize - __pos2; const size_type __foldn2 = __testn2 ? __n2 : __strsize - __pos2; return this->replace(__pos1, __n1, __str._M_data() + __pos2, __foldn2); } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: append(const basic_string& __str) { size_type __size = __str.size(); size_type __len = __size + this->size(); if (__len > this->capacity()) this->reserve(__len); return _M_replace_safe(_M_iend(), _M_iend(), __str._M_ibegin(), __str._M_iend()); } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: append(const basic_string& __str, size_type __pos, size_type __n) { size_type __len = min(__str.size() - __pos, __n) + this->size(); if (__len > this->capacity()) this->reserve(__len); return _M_replace_safe(_M_iend(), _M_iend(), __str._M_check(__pos), __str._M_fold(__pos, __n)); } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: append(const _CharT* __s, size_type __n) { size_type __len = __n + this->size(); if (__len > this->capacity()) this->reserve(__len); return _M_replace_safe(_M_iend(), _M_iend(), __s, __s + __n); } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: append(size_type __n, _CharT __c) { size_type __len = __n + this->size(); if (__len > this->capacity()) this->reserve(__len); return this->replace(_M_iend(), _M_iend(), __n, __c); } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc> operator+(const _CharT* __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { typedef basic_string<_CharT, _Traits, _Alloc> __string_type; typedef __string_type::size_type __size_type; __size_type __len = _Traits::length(__lhs); __string_type __str; __str.reserve(__len + __rhs.size()); __str.append(__lhs, __lhs + __len); __str.append(__rhs); return __str; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc> operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs) { typedef basic_string<_CharT, _Traits, _Alloc> __string_type; typedef __string_type::size_type __size_type; __string_type __str; __size_type __len = __rhs.size(); __str.reserve(__len + 1); __str.append(__size_type(1), __lhs); __str.append(__rhs); return __str; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>& basic_string<_CharT, _Traits, _Alloc>:: replace(iterator __i1, iterator __i2, size_type __n2, _CharT __c) { size_type __n1 = __i2 - __i1; size_type __off1 = __i1 - _M_ibegin(); if (max_size() - (this->size() - __n1) <= __n2) __throw_length_error("basic_string::replace"); _M_mutate (__off1, __n1, __n2); if (__n2) traits_type::assign(_M_data() + __off1, __n2, __c); return *this; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: copy(_CharT* __s, size_type __n, size_type __pos) const { if (__pos > this->size()) __throw_out_of_range("basic_string::copy"); if (__n > this->size() - __pos) __n = this->size() - __pos; traits_type::copy(__s, _M_data() + __pos, __n); return __n; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find(const _CharT* __s, size_type __pos, size_type __n) const { size_type __size = this->size(); size_t __xpos = __pos; const _CharT* __data = _M_data(); for (; __xpos + __n <= __size; ++__xpos) if (traits_type::compare(__data + __xpos, __s, __n) == 0) return __xpos; return npos; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find(_CharT __c, size_type __pos) const { size_type __size = this->size(); size_type __ret = npos; if (__pos < __size) { const _CharT* __data = _M_data(); size_type __n = __size - __pos; const _CharT* __p = traits_type::find(__data + __pos, __n, __c); if (__p) __ret = __p - __data; } return __ret; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: rfind(const _CharT* __s, size_type __pos, size_type __n) const { size_type __size = this->size(); if (__n <= __size) { __pos = std::min(__size - __n, __pos); const _CharT* __data = _M_data(); do { if (traits_type::compare(__data + __pos, __s, __n) == 0) return __pos; } while (__pos-- > 0); } return npos; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: rfind(_CharT __c, size_type __pos) const { size_type __size = this->size(); if (__size) { size_t __xpos = __size - 1; if (__xpos > __pos) __xpos = __pos; for (++__xpos; __xpos-- > 0; ) if (traits_type::eq(_M_data()[__xpos], __c)) return __xpos; } return npos; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const { for (; __n && __pos < this->size(); ++__pos) { const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); if (__p) return __pos; } return npos; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const { size_type __size = this->size(); if (__size && __n) { if (--__size > __pos) __size = __pos; do { if (traits_type::find(__s, __n, _M_data()[__size])) return __size; } while (__size-- != 0); } return npos; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const { size_t __xpos = __pos; for (; __xpos < this->size(); ++__xpos) if (!traits_type::find(__s, __n, _M_data()[__xpos])) return __xpos; return npos; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_first_not_of(_CharT __c, size_type __pos) const { size_t __xpos = __pos; for (; __xpos < this->size(); ++__xpos) if (!traits_type::eq(_M_data()[__xpos], __c)) return __xpos; return npos; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const { size_type __size = this->size(); if (__size) { if (--__size > __pos) __size = __pos; do { if (!traits_type::find(__s, __n, _M_data()[__size])) return __size; } while (__size--); } return npos; } template< _CharT, _Traits, _Alloc> basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>:: find_last_not_of(_CharT __c, size_type __pos) const { size_type __size = this->size(); if (__size) { if (--__size > __pos) __size = __pos; do { if (!traits_type::eq(_M_data()[__size], __c)) return __size; } while (__size--); } return npos; } template< _CharT, _Traits, _Alloc> int basic_string<_CharT, _Traits, _Alloc>:: compare(size_type __pos, size_type __n, const basic_string& __str) const { size_type __size = this->size(); size_type __osize = __str.size(); if (__pos > __size) __throw_out_of_range("basic_string::compare"); size_type __rsize= min(__size - __pos, __n); size_type __len = min(__rsize, __osize); int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); if (!__r) __r = __rsize - __osize; return __r; } template< _CharT, _Traits, _Alloc> int basic_string<_CharT, _Traits, _Alloc>:: compare(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2) const { size_type __size = this->size(); size_type __osize = __str.size(); if (__pos1 > __size || __pos2 > __osize) __throw_out_of_range("basic_string::compare"); size_type __rsize = min(__size - __pos1, __n1); size_type __rosize = min(__osize - __pos2, __n2); size_type __len = min(__rsize, __rosize); int __r = traits_type::compare(_M_data() + __pos1, __str.data() + __pos2, __len); if (!__r) __r = __rsize - __rosize; return __r; } template< _CharT, _Traits, _Alloc> int basic_string<_CharT, _Traits, _Alloc>:: compare(const _CharT* __s) const { size_type __size = this->size(); int __r = traits_type::compare(_M_data(), __s, __size); if (!__r) __r = __size - traits_type::length(__s); return __r; } template< _CharT, _Traits, _Alloc> int basic_string <_CharT, _Traits, _Alloc>:: compare(size_type __pos, size_type __n1, const _CharT* __s) const { size_type __size = this->size(); if (__pos > __size) __throw_out_of_range("basic_string::compare"); size_type __osize = traits_type::length(__s); size_type __rsize = min(__size - __pos, __n1); size_type __len = min(__rsize, __osize); int __r = traits_type::compare(_M_data() + __pos, __s, __len); if (!__r) __r = __rsize - __osize; return __r; } template< _CharT, _Traits, _Alloc> int basic_string <_CharT, _Traits, _Alloc>:: compare(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) const { size_type __size = this->size(); if (__pos > __size) __throw_out_of_range("basic_string::compare"); size_type __osize = min(traits_type::length(__s), __n2); size_type __rsize = min(__size - __pos, __n1); size_type __len = min(__rsize, __osize); int __r = traits_type::compare(_M_data() + __pos, __s, __len); if (!__r) __r = __rsize - __osize; return __r; } template void _S_string_copy(const basic_string<_CharT, _Traits, _Alloc>& __str, _CharT* __buf, _Alloc::size_type __bufsiz) { typedef _Alloc::size_type size_type; size_type __strsize = __str.size(); size_type __bytes = min(__strsize, __bufsiz - 1); _Traits::copy(__buf, __str.data(), __bytes); __buf[__bytes] = _CharT(); } extern template class basic_string; extern template basic_istream& operator>>(basic_istream&, string&); extern template basic_ostream& operator<<(basic_ostream&, const string&); extern template basic_istream& getline(basic_istream&, string&, char); extern template basic_istream& getline(basic_istream&, string&); extern template class basic_string; extern template basic_istream& operator>>(basic_istream&, wstring&); extern template basic_ostream& operator<<(basic_ostream&, const wstring&); extern template basic_istream& getline(basic_istream&, wstring&, wchar_t); extern template basic_istream& getline(basic_istream&, wstring&); } # 58 "/usr/local/include/g++-v3/string" 2 3 # 50 "/usr/local/include/g++-v3/bits/localefwd.h" 2 3 # 1 "/usr/local/include/g++-v3/bits/functexcept.h" 1 3 # 34 "/usr/local/include/g++-v3/bits/functexcept.h" 3 # 1 "/usr/local/include/g++-v3/exception_defines.h" 1 3 # 35 "/usr/local/include/g++-v3/bits/functexcept.h" 2 3 namespace std { void __throw_bad_exception(void); void __throw_bad_alloc(void); void __throw_bad_cast(void); void __throw_bad_typeid(void); void __throw_logic_error(const char* __s); void __throw_domain_error(const char* __s); void __throw_invalid_argument(const char* __s); void __throw_length_error(const char* __s); void __throw_out_of_range(const char* __s); void __throw_runtime_error(const char* __s); void __throw_range_error(const char* __s); void __throw_overflow_error(const char* __s); void __throw_underflow_error(const char* __s); void __throw_ios_failure(const char* __s); } # 51 "/usr/local/include/g++-v3/bits/localefwd.h" 2 3 namespace std { # 64 "/usr/local/include/g++-v3/bits/localefwd.h" 3 template< _Tp, _Alloc> class vector; class locale; template< _CharT> inline bool isspace(_CharT, const locale&); template< _CharT> inline bool isprint(_CharT, const locale&); template< _CharT> inline bool iscntrl(_CharT, const locale&); template< _CharT> inline bool isupper(_CharT, const locale&); template< _CharT> inline bool islower(_CharT, const locale&); template< _CharT> inline bool isalpha(_CharT, const locale&); template< _CharT> inline bool isdigit(_CharT, const locale&); template< _CharT> inline bool ispunct(_CharT, const locale&); template< _CharT> inline bool isxdigit(_CharT, const locale&); template< _CharT> inline bool isalnum(_CharT, const locale&); template< _CharT> inline bool isgraph(_CharT, const locale&); template< _CharT> inline _CharT toupper(_CharT, const locale&); template< _CharT> inline _CharT tolower(_CharT, const locale&); class ctype_base; template< _CharT> class ctype; template<> class ctype; template< _CharT> class ctype_byname; class codecvt_base; class __enc_traits; template< _InternT, _ExternT, _StateT> class codecvt; template<> class codecvt; template< _InternT, _ExternT, _StateT> class codecvt_byname; template< _CharT, _InIter = istreambuf_iterator<_CharT> > class num_get; template< _CharT, _OutIter = ostreambuf_iterator<_CharT> > class num_put; template< _CharT> class numpunct; template< _CharT> class numpunct_byname; template< _CharT> class collate; template< _CharT> class collate_byname; class time_base; template< _CharT, _InIter = istreambuf_iterator<_CharT> > class time_get; template< _CharT, _InIter = istreambuf_iterator<_CharT> > class time_get_byname; template< _CharT, _OutIter = ostreambuf_iterator<_CharT> > class time_put; template< _CharT, _OutIter = ostreambuf_iterator<_CharT> > class time_put_byname; class money_base; template< _CharT, _InIter = istreambuf_iterator<_CharT> > class money_get; template< _CharT, _OutIter = ostreambuf_iterator<_CharT> > class money_put; template< _CharT, bool _Intl = false> class moneypunct; template< _CharT, bool _Intl = false> class moneypunct_byname; class messages_base; template< _CharT> class messages; template< _CharT> class messages_byname; class locale { public: typedef unsigned int category; class facet; class id; class _Impl; friend class facet; friend class _Impl; template< _Facet> friend const _Facet& use_facet(const locale&); template< _Facet> friend bool has_facet(const locale&) throw(); static const category none = 0; static const category ctype = 1L << 0; static const category numeric = 1L << 1; static const category collate = 1L << 2; static const category time = 1L << 3; static const category monetary = 1L << 4; static const category messages = 1L << 5; static const category all = (collate | ctype | monetary | numeric | time | messages); locale() throw(); locale(const locale& __other) throw(); explicit locale(const char* __std_name); locale(const locale& __base, const char* __s, category __cat); locale(const locale& __base, const locale& __add, category __cat); template< _Facet> locale(const locale& __other, _Facet* __f); ~locale() throw(); const locale& operator=(const locale& __other) throw(); template< _Facet> locale combine(const locale& __other) const; string name() const; bool operator==(const locale& __other) const throw (); inline bool operator!=(const locale& __other) const throw () { return !(this->operator==(__other)); } template< _Char, _Traits, _Alloc> bool operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, const basic_string<_Char, _Traits, _Alloc>& __s2) const; static locale global(const locale&); static const locale& classic(); private: _Impl* _M_impl; static _Impl* _S_classic; static _Impl* _S_global; static const size_t _S_num_categories = 6; static const size_t _S_num_facets = 14; explicit locale(_Impl*) throw(); static inline void _S_initialize() { if (!_S_classic) classic(); } static category _S_normalize_category(category); void _M_coalesce(const locale& __base, const locale& __add, category __cat); }; class locale::_Impl { public: typedef vector > __vec_facet; friend class locale; friend class locale::facet; template< _Facet> friend const _Facet& use_facet(const locale&); template< _Facet> friend bool has_facet(const locale&) throw(); private: _Atomic_word _M_references; __vec_facet* _M_facets; string _M_names[_S_num_categories]; static const locale::id* const _S_id_ctype[]; static const locale::id* const _S_id_numeric[]; static const locale::id* const _S_id_collate[]; static const locale::id* const _S_id_time[]; static const locale::id* const _S_id_monetary[]; static const locale::id* const _S_id_messages[]; static const locale::id* const* const _S_facet_categories[]; inline void _M_add_reference() throw() { __atomic_add(&_M_references, 1); } inline void _M_remove_reference() throw() { if (__exchange_and_add(&_M_references, -1) == 1) { try { delete this; } catch(...) { } } } _Impl(const _Impl&, size_t); _Impl(string __name, size_t); ~_Impl() throw(); inline bool _M_check_same_name() { bool __ret = true; for (size_t i = 0; i < _S_num_categories - 1; ++i) __ret &= _M_names[i] == _M_names[i + 1]; return __ret; } void _M_replace_categories(const _Impl*, category); void _M_replace_category(const _Impl*, const locale::id* const*); void _M_replace_facet(const _Impl*, const locale::id*); void _M_install_facet(const locale::id*, facet*); template< _Facet> inline void _M_init_facet(_Facet* __facet) { _M_install_facet(&_Facet::id, __facet); } }; template< _Facet> locale::locale(const locale& __other, _Facet* __f) { _M_impl = new _Impl(*__other._M_impl, 1); _M_impl->_M_install_facet(&_Facet::id, __f); for (size_t __i = 0; __i < _S_num_categories; ++__i) _M_impl->_M_names[__i] = "*"; } class locale::facet { friend class locale; friend class locale::_Impl; friend class __enc_traits; private: _Atomic_word _M_references; protected: static __c_locale _S_c_locale; explicit facet(size_t __refs = 0) throw(); virtual ~facet(); static void _S_create_c_locale(__c_locale& __cloc, const char* __s); static __c_locale _S_clone_c_locale(__c_locale& __cloc); static void _S_destroy_c_locale(__c_locale& __cloc); private: void _M_add_reference() throw(); void _M_remove_reference() throw(); facet(const facet&); void operator=(const facet&); }; class locale::id { private: friend class locale; friend class locale::_Impl; template< _Facet> friend const _Facet& use_facet(const locale&); template< _Facet> friend bool has_facet(const locale&) throw (); mutable size_t _M_index; static _Atomic_word _S_highwater; void operator=(const id&); id(const id&); public: id(); }; template< _Facet> const _Facet& use_facet(const locale& __loc); template< _Facet> bool has_facet(const locale& __loc) throw(); } # 49 "/usr/local/include/g++-v3/ios" 2 3 # 1 "/usr/local/include/g++-v3/bits/ios_base.h" 1 3 # 44 "/usr/local/include/g++-v3/bits/ios_base.h" 3 namespace std { enum _Ios_Fmtflags { _M_ios_fmtflags_end = 1L << 16 }; inline _Ios_Fmtflags operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } inline _Ios_Fmtflags operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } inline _Ios_Fmtflags operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } inline _Ios_Fmtflags operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) { return __a = __a | __b; } inline _Ios_Fmtflags operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) { return __a = __a & __b; } inline _Ios_Fmtflags operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) { return __a = __a ^ __b; } inline _Ios_Fmtflags operator~(_Ios_Fmtflags __a) { return _Ios_Fmtflags(~static_cast(__a)); } enum _Ios_Openmode { _M_ios_openmode_end = 1L << 16 }; inline _Ios_Openmode operator&(_Ios_Openmode __a, _Ios_Openmode __b) { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } inline _Ios_Openmode operator|(_Ios_Openmode __a, _Ios_Openmode __b) { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } inline _Ios_Openmode operator^(_Ios_Openmode __a, _Ios_Openmode __b) { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } inline _Ios_Openmode operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) { return __a = __a | __b; } inline _Ios_Openmode operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) { return __a = __a & __b; } inline _Ios_Openmode operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) { return __a = __a ^ __b; } inline _Ios_Openmode operator~(_Ios_Openmode __a) { return _Ios_Openmode(~static_cast(__a)); } enum _Ios_Iostate { _M_ios_iostate_end = 1L << 16 }; inline _Ios_Iostate operator&(_Ios_Iostate __a, _Ios_Iostate __b) { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } inline _Ios_Iostate operator|(_Ios_Iostate __a, _Ios_Iostate __b) { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } inline _Ios_Iostate operator^(_Ios_Iostate __a, _Ios_Iostate __b) { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } inline _Ios_Iostate operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) { return __a = __a | __b; } inline _Ios_Iostate operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) { return __a = __a & __b; } inline _Ios_Iostate operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) { return __a = __a ^ __b; } inline _Ios_Iostate operator~(_Ios_Iostate __a) { return _Ios_Iostate(~static_cast(__a)); } enum _Ios_Seekdir { _M_ios_seekdir_end = 1L << 16 }; class ios_base { public: class failure : public exception { public: explicit failure(const string& __str) throw(); virtual ~failure() throw(); virtual const char* what() const throw(); private: enum { _M_bufsize = 256 }; char _M_name[_M_bufsize]; }; typedef _Ios_Fmtflags fmtflags; static const fmtflags boolalpha = fmtflags(__ios_flags::_S_boolalpha); static const fmtflags dec = fmtflags(__ios_flags::_S_dec); static const fmtflags fixed = fmtflags(__ios_flags::_S_fixed); static const fmtflags hex = fmtflags(__ios_flags::_S_hex); static const fmtflags internal = fmtflags(__ios_flags::_S_internal); static const fmtflags left = fmtflags(__ios_flags::_S_left); static const fmtflags oct = fmtflags(__ios_flags::_S_oct); static const fmtflags right = fmtflags(__ios_flags::_S_right); static const fmtflags scientific = fmtflags(__ios_flags::_S_scientific); static const fmtflags showbase = fmtflags(__ios_flags::_S_showbase); static const fmtflags showpoint = fmtflags(__ios_flags::_S_showpoint); static const fmtflags showpos = fmtflags(__ios_flags::_S_showpos); static const fmtflags skipws = fmtflags(__ios_flags::_S_skipws); static const fmtflags unitbuf = fmtflags(__ios_flags::_S_unitbuf); static const fmtflags uppercase = fmtflags(__ios_flags::_S_uppercase); static const fmtflags adjustfield = fmtflags(__ios_flags::_S_adjustfield); static const fmtflags basefield = fmtflags(__ios_flags::_S_basefield); static const fmtflags floatfield = fmtflags(__ios_flags::_S_floatfield); typedef _Ios_Iostate iostate; static const iostate badbit = iostate(__ios_flags::_S_badbit); static const iostate eofbit = iostate(__ios_flags::_S_eofbit); static const iostate failbit = iostate(__ios_flags::_S_failbit); static const iostate goodbit = iostate(0); typedef _Ios_Openmode openmode; static const openmode app = openmode(__ios_flags::_S_app); static const openmode ate = openmode(__ios_flags::_S_ate); static const openmode binary = openmode(__ios_flags::_S_bin); static const openmode in = openmode(__ios_flags::_S_in); static const openmode out = openmode(__ios_flags::_S_out); static const openmode trunc = openmode(__ios_flags::_S_trunc); typedef _Ios_Seekdir seekdir; static const seekdir beg = seekdir(0); static const seekdir cur = seekdir(1); static const seekdir end = seekdir(2); # 224 "/usr/local/include/g++-v3/bits/ios_base.h" 3 enum event { erase_event, imbue_event, copyfmt_event }; typedef void (*event_callback) (event, ios_base&, int); void register_callback(event_callback __fn, int __index); protected: streamsize _M_precision; streamsize _M_width; fmtflags _M_flags; struct _Callback_list { _Callback_list* _M_next; ios_base::event_callback _M_fn; int _M_index; _Atomic_word _M_refcount; _Callback_list(ios_base::event_callback __fn, int __index, _Callback_list* __cb) : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } void _M_add_reference() { __atomic_add(&_M_refcount, 1); } int _M_remove_reference() { return __exchange_and_add(&_M_refcount, -1); } }; _Callback_list* _M_callbacks; void _M_call_callbacks(event __ev) throw(); void _M_dispose_callbacks(void); struct _Words { void* _M_pword; long _M_iword; }; static const int _S_local_words = 8; _Words _M_word_array[_S_local_words]; _Words _M_dummy; _Words* _M_words; int _M_word_limit; _Words& _M_grow_words(int __index); locale _M_ios_locale; void _M_init(); public: class Init { friend class ios_base; public: Init(); ~Init(); static void _S_ios_create(bool __sync); static void _S_ios_destroy(); private: static int _S_ios_base_init; static bool _S_synced_with_stdio; }; inline fmtflags flags() const { return _M_flags; } inline fmtflags flags(fmtflags __fmtfl) { fmtflags __old = _M_flags; _M_flags = __fmtfl; return __old; } inline fmtflags setf(fmtflags __fmtfl) { fmtflags __old = _M_flags; _M_flags |= __fmtfl; return __old; } inline fmtflags setf(fmtflags __fmtfl, fmtflags __mask) { fmtflags __old = _M_flags; _M_flags &= ~__mask; _M_flags |= (__fmtfl & __mask); return __old; } inline void unsetf(fmtflags __mask) { _M_flags &= ~__mask; } inline streamsize precision() const { return _M_precision; } inline streamsize precision(streamsize __prec) { streamsize __old = _M_precision; _M_precision = __prec; return __old; } inline streamsize width() const { return _M_width; } inline streamsize width(streamsize __wide) { streamsize __old = _M_width; _M_width = __wide; return __old; } static bool sync_with_stdio(bool __sync = true); locale imbue(const locale& __loc); inline locale getloc() const { return _M_ios_locale; } static int xalloc() throw(); inline long& iword(int __ix) { _Words& __word = (__ix < _M_word_limit) ? _M_words[__ix] : _M_grow_words(__ix); return __word._M_iword; } inline void*& pword(int __ix) { _Words& __word = (__ix < _M_word_limit) ? _M_words[__ix] : _M_grow_words(__ix); return __word._M_pword; } ~ios_base(); protected: ios_base(); private: ios_base(const ios_base&); ios_base& operator=(const ios_base&); }; inline ios_base& boolalpha(ios_base& __base) { __base.setf(ios_base::boolalpha); return __base; } inline ios_base& noboolalpha(ios_base& __base) { __base.unsetf(ios_base::boolalpha); return __base; } inline ios_base& showbase(ios_base& __base) { __base.setf(ios_base::showbase); return __base; } inline ios_base& noshowbase(ios_base& __base) { __base.unsetf(ios_base::showbase); return __base; } inline ios_base& showpoint(ios_base& __base) { __base.setf(ios_base::showpoint); return __base; } inline ios_base& noshowpoint(ios_base& __base) { __base.unsetf(ios_base::showpoint); return __base; } inline ios_base& showpos(ios_base& __base) { __base.setf(ios_base::showpos); return __base; } inline ios_base& noshowpos(ios_base& __base) { __base.unsetf(ios_base::showpos); return __base; } inline ios_base& skipws(ios_base& __base) { __base.setf(ios_base::skipws); return __base; } inline ios_base& noskipws(ios_base& __base) { __base.unsetf(ios_base::skipws); return __base; } inline ios_base& uppercase(ios_base& __base) { __base.setf(ios_base::uppercase); return __base; } inline ios_base& nouppercase(ios_base& __base) { __base.unsetf(ios_base::uppercase); return __base; } inline ios_base& unitbuf(ios_base& __base) { __base.setf(ios_base::unitbuf); return __base; } inline ios_base& nounitbuf(ios_base& __base) { __base.unsetf(ios_base::unitbuf); return __base; } inline ios_base& internal(ios_base& __base) { __base.setf(ios_base::internal, ios_base::adjustfield); return __base; } inline ios_base& left(ios_base& __base) { __base.setf(ios_base::left, ios_base::adjustfield); return __base; } inline ios_base& right(ios_base& __base) { __base.setf(ios_base::right, ios_base::adjustfield); return __base; } inline ios_base& dec(ios_base& __base) { __base.setf(ios_base::dec, ios_base::basefield); return __base; } inline ios_base& hex(ios_base& __base) { __base.setf(ios_base::hex, ios_base::basefield); return __base; } inline ios_base& oct(ios_base& __base) { __base.setf(ios_base::oct, ios_base::basefield); return __base; } inline ios_base& fixed(ios_base& __base) { __base.setf(ios_base::fixed, ios_base::floatfield); return __base; } inline ios_base& scientific(ios_base& __base) { __base.setf(ios_base::scientific, ios_base::floatfield); return __base; } } # 50 "/usr/local/include/g++-v3/ios" 2 3 # 1 "/usr/local/include/g++-v3/streambuf" 1 3 # 44 "/usr/local/include/g++-v3/streambuf" 3 namespace std { template< _CharT, _Traits> streamsize __copy_streambufs(basic_ios<_CharT, _Traits>& _ios, basic_streambuf<_CharT, _Traits>* __sbin, basic_streambuf<_CharT, _Traits>* __sbout); template< _CharT, _Traits> class basic_streambuf { public: typedef _CharT char_type; typedef _Traits traits_type; typedef traits_type::int_type int_type; typedef traits_type::pos_type pos_type; typedef traits_type::off_type off_type; typedef ctype __ctype_type; typedef basic_streambuf __streambuf_type; friend class basic_ios; friend class basic_istream; friend class basic_ostream; friend class istreambuf_iterator; friend class ostreambuf_iterator; friend streamsize __copy_streambufs<>(basic_ios& __ios, __streambuf_type* __sbin,__streambuf_type* __sbout); protected: char_type* _M_buf; int_type _M_buf_size; int_type _M_buf_size_opt; bool _M_buf_unified; char_type* _M_in_beg; char_type* _M_in_cur; char_type* _M_in_end; char_type* _M_out_beg; char_type* _M_out_cur; char_type* _M_out_end; ios_base::openmode _M_mode; locale _M_buf_locale; bool _M_buf_locale_init; int_type _M_pback_size; char_type* _M_pback; char_type* _M_pback_cur_save; char_type* _M_pback_end_save; bool _M_pback_init; void _M_pback_create() { if (!_M_pback_init) { int_type __dist = _M_in_end - _M_in_cur; int_type __len = min(_M_pback_size, __dist); traits_type::copy(_M_pback, _M_in_cur, __len); _M_pback_cur_save = _M_in_cur; _M_pback_end_save = _M_in_end; this->setg(_M_pback, _M_pback, _M_pback + __len); _M_pback_init = true; } } void _M_pback_destroy() { if (_M_pback_init) { int_type __off_cur = _M_in_cur - _M_pback; int_type __off_end = 0; int_type __pback_len = _M_in_end - _M_pback; int_type __save_len = _M_pback_end_save - _M_buf; if (__pback_len > __save_len) __off_end = __pback_len - __save_len; this->setg(_M_buf, _M_pback_cur_save + __off_cur, _M_pback_end_save + __off_end); _M_pback_cur_save = __null; _M_pback_end_save = __null; _M_pback_init = false; } } void _M_in_cur_move(off_type __n) { bool __testout = _M_out_cur; _M_in_cur += __n; if (__testout && _M_buf_unified) _M_out_cur += __n; } # 198 "/usr/local/include/g++-v3/streambuf" 3 void _M_out_cur_move(off_type __n) { bool __testin = _M_in_cur; _M_out_cur += __n; if (__testin && _M_buf_unified) _M_in_cur += __n; if (_M_out_cur > _M_out_end) { _M_out_end = _M_out_cur; if (__testin) _M_in_end += __n; } } off_type _M_out_buf_size() { off_type __ret = 0; if (_M_out_cur) { if (_M_out_beg == _M_buf) __ret = _M_out_beg + _M_buf_size - _M_out_cur; else __ret = _M_out_end - _M_out_cur; } return __ret; } # 241 "/usr/local/include/g++-v3/streambuf" 3 void _M_set_indeterminate(void) { if (_M_mode & ios_base::in) this->setg(_M_buf, _M_buf, _M_buf); if (_M_mode & ios_base::out) this->setp(_M_buf, _M_buf); } void _M_set_determinate(off_type __off) { bool __testin = _M_mode & ios_base::in; bool __testout = _M_mode & ios_base::out; if (__testin) this->setg(_M_buf, _M_buf, _M_buf + __off); if (__testout) this->setp(_M_buf, _M_buf + __off); } bool _M_is_indeterminate(void) { bool __ret = false; if (_M_buf) { if (_M_mode & ios_base::in) __ret = _M_in_beg == _M_in_cur && _M_in_cur == _M_in_end; if (_M_mode & ios_base::out) __ret = _M_out_beg == _M_out_cur && _M_out_cur == _M_out_end; } return __ret; } public: virtual ~basic_streambuf() { _M_buf_unified = false; _M_buf_size = 0; _M_buf_size_opt = 0; _M_mode = ios_base::openmode(0); _M_buf_locale_init = false; } locale pubimbue(const locale &__loc) { locale __tmp(this->getloc()); this->imbue(__loc); return __tmp; } locale getloc() const { if (_M_buf_locale_init) return _M_buf_locale; else return locale(); } __streambuf_type* pubsetbuf(char_type* __s, streamsize __n) { return this->setbuf(__s, __n); } pos_type pubseekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode = ios_base::in | ios_base::out) { return this->seekoff(__off, __way, __mode); } pos_type pubseekpos(pos_type __sp, ios_base::openmode __mode = ios_base::in | ios_base::out) { return this->seekpos(__sp, __mode); } int pubsync() { return this->sync(); } streamsize in_avail() { streamsize __ret; if (_M_in_cur && _M_in_cur < _M_in_end) { if (_M_pback_init) { int_type __save_len = _M_pback_end_save - _M_pback_cur_save; int_type __pback_len = _M_in_cur - _M_pback; __ret = __save_len - __pback_len; } else __ret = this->egptr() - this->gptr(); } else __ret = this->showmanyc(); return __ret; } int_type snextc() { int_type __eof = traits_type::eof(); return (this->sbumpc() == __eof ? __eof : this->sgetc()); } int_type sbumpc(); int_type sgetc() { int_type __ret; if (_M_in_cur && _M_in_cur < _M_in_end) __ret = traits_type::to_int_type(*(this->gptr())); else __ret = this->underflow(); return __ret; } streamsize sgetn(char_type* __s, streamsize __n) { return this->xsgetn(__s, __n); } int_type sputbackc(char_type __c); int_type sungetc(); int_type sputc(char_type __c); streamsize sputn(const char_type* __s, streamsize __n) { return this->xsputn(__s, __n); } protected: basic_streambuf() : _M_buf(__null), _M_buf_size(0), _M_buf_size_opt(static_cast(1024)), _M_buf_unified(false), _M_in_beg(0), _M_in_cur(0), _M_in_end(0), _M_out_beg(0), _M_out_cur(0), _M_out_end(0), _M_mode(ios_base::openmode(0)), _M_buf_locale(locale()), _M_buf_locale_init(false), _M_pback_size(1), _M_pback(__null), _M_pback_cur_save(__null), _M_pback_end_save(__null), _M_pback_init(false) { } char_type* eback() const { return _M_in_beg; } char_type* gptr() const { return _M_in_cur; } char_type* egptr() const { return _M_in_end; } void gbump(int __n) { _M_in_cur += __n; } void setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) { _M_in_beg = __gbeg; _M_in_cur = __gnext; _M_in_end = __gend; if (!(_M_mode & ios_base::in) && __gbeg && __gnext && __gend) _M_mode = _M_mode | ios_base::in; } char_type* pbase() const { return _M_out_beg; } char_type* pptr() const { return _M_out_cur; } char_type* epptr() const { return _M_out_end; } void pbump(int __n) { _M_out_cur += __n; } void setp(char_type* __pbeg, char_type* __pend) { _M_out_beg = _M_out_cur = __pbeg; _M_out_end = __pend; if (!(_M_mode & ios_base::out) && __pbeg && __pend) _M_mode = _M_mode | ios_base::out; } virtual void imbue(const locale& __loc) { _M_buf_locale_init = true; if (_M_buf_locale != __loc) _M_buf_locale = __loc; } virtual basic_streambuf* setbuf(char_type*, streamsize) { return this; } virtual pos_type seekoff(off_type, ios_base::seekdir, ios_base::openmode = ios_base::in | ios_base::out) { return pos_type(off_type(-1)); } virtual pos_type seekpos(pos_type, ios_base::openmode = ios_base::in | ios_base::out) { return pos_type(off_type(-1)); } virtual int sync() { return 0; } virtual streamsize showmanyc() { return 0; } virtual streamsize xsgetn(char_type* __s, streamsize __n); virtual int_type underflow() { return traits_type::eof(); } virtual int_type uflow() { int_type __ret = traits_type::eof(); bool __testeof = this->underflow() == __ret; bool __testpending = _M_in_cur && _M_in_cur < _M_in_end; if (!__testeof && __testpending) { __ret = traits_type::to_int_type(*_M_in_cur); ++_M_in_cur; if (_M_buf_unified && _M_mode & ios_base::out) ++_M_out_cur; } return __ret; } virtual int_type pbackfail(int_type = traits_type::eof()) { return traits_type::eof(); } virtual streamsize xsputn(const char_type* __s, streamsize __n); virtual int_type overflow(int_type = traits_type::eof()) { return traits_type::eof(); } # 522 "/usr/local/include/g++-v3/streambuf" 3 private: basic_streambuf(const __streambuf_type&) { }; __streambuf_type& operator=(const __streambuf_type&) { return *this; }; }; } # 1 "/usr/local/include/g++-v3/bits/streambuf.tcc" 1 3 # 39 "/usr/local/include/g++-v3/bits/streambuf.tcc" 3 namespace std { template< _CharT, _Traits> basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sbumpc() { int_type __ret; if (_M_in_cur && _M_in_cur < _M_in_end) { char_type __c = *gptr(); _M_in_cur_move(1); __ret = traits_type::to_int_type(__c); } else __ret = this->uflow(); return __ret; } template< _CharT, _Traits> basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sputbackc(char_type __c) { int_type __ret; bool __testpos = _M_in_cur && _M_in_beg < _M_in_cur; bool __testne = _M_in_cur && !traits_type::eq(__c, this->gptr()[-1]); if (!__testpos || __testne) __ret = pbackfail(traits_type::to_int_type(__c)); else { _M_in_cur_move(-1); __ret = traits_type::to_int_type(*this->gptr()); } return __ret; } template< _CharT, _Traits> basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sungetc() { int_type __ret; if (_M_in_cur && _M_in_beg < _M_in_cur) { _M_in_cur_move(-1); __ret = traits_type::to_int_type(*_M_in_cur); } else __ret = this->pbackfail(); return __ret; } template< _CharT, _Traits> basic_streambuf<_CharT, _Traits>::int_type basic_streambuf<_CharT, _Traits>:: sputc(char_type __c) { int_type __ret; if (_M_out_buf_size()) { *_M_out_cur = __c; _M_out_cur_move(1); __ret = traits_type::to_int_type(__c); } else __ret = this->overflow(traits_type::to_int_type(__c)); return __ret; } template< _CharT, _Traits> streamsize basic_streambuf<_CharT, _Traits>:: xsgetn(char_type* __s, streamsize __n) { streamsize __ret = 0; while (__ret < __n) { size_t __buf_len = _M_in_end - _M_in_cur; if (__buf_len > 0) { size_t __remaining = __n - __ret; size_t __len = min(__buf_len, __remaining); traits_type::copy(__s, _M_in_cur, __len); __ret += __len; __s += __len; _M_in_cur_move(__len); } if (__ret < __n) { int_type __c = this->uflow(); if (__c != traits_type::eof()) { traits_type::assign(*__s++, traits_type::to_char_type(__c)); ++__ret; } else break; } } return __ret; } template< _CharT, _Traits> streamsize basic_streambuf<_CharT, _Traits>:: xsputn(const char_type* __s, streamsize __n) { streamsize __ret = 0; while (__ret < __n) { off_type __buf_len = _M_out_buf_size(); if (__buf_len > 0) { off_type __remaining = __n - __ret; off_type __len = min(__buf_len, __remaining); traits_type::copy(_M_out_cur, __s, __len); __ret += __len; __s += __len; _M_out_cur_move(__len); } if (__ret < __n) { int_type __c = this->overflow(traits_type::to_int_type(*__s)); if (__c != traits_type::eof()) { ++__ret; ++__s; } else break; } } return __ret; } template< _CharT, _Traits> streamsize __copy_streambufs(basic_ios<_CharT, _Traits>& __ios, basic_streambuf<_CharT, _Traits>* __sbin, basic_streambuf<_CharT, _Traits>* __sbout) { typedef _Traits::int_type int_type; streamsize __ret = 0; streamsize __bufsize = __sbin->in_avail(); streamsize __xtrct; bool __testput = __sbout->_M_mode & ios_base::out; try { while (__testput && __bufsize != -1) { __xtrct = __sbout->sputn(__sbin->gptr(), __bufsize); __ret += __xtrct; __sbin->_M_in_cur_move(__xtrct); if (__xtrct == __bufsize) { if (__sbin->sgetc() == _Traits::eof()) break; __bufsize = __sbin->in_avail(); } else break; } } catch(exception& __fail) { __ios.setstate(ios_base::failbit); if ((__ios.exceptions() & ios_base::failbit) != 0) throw; } return __ret; } extern template class basic_streambuf; extern template streamsize __copy_streambufs(basic_ios&, basic_streambuf*, basic_streambuf*); extern template class basic_streambuf; extern template streamsize __copy_streambufs(basic_ios&, basic_streambuf*, basic_streambuf*); } # 536 "/usr/local/include/g++-v3/streambuf" 2 3 # 51 "/usr/local/include/g++-v3/ios" 2 3 # 1 "/usr/local/include/g++-v3/bits/basic_ios.h" 1 3 # 39 "/usr/local/include/g++-v3/bits/basic_ios.h" 3 # 1 "/usr/local/include/g++-v3/bits/streambuf_iterator.h" 1 3 # 41 "/usr/local/include/g++-v3/bits/streambuf_iterator.h" 3 namespace std { template< _CharT, _Traits> class ostreambuf_iterator : public iterator { public: typedef _CharT char_type; typedef _Traits traits_type; typedef basic_streambuf<_CharT, _Traits> streambuf_type; typedef basic_ostream<_CharT, _Traits> ostream_type; private: streambuf_type* _M_sbuf; bool _M_failed; public: inline ostreambuf_iterator(ostream_type& __s) throw () : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } ostreambuf_iterator(streambuf_type* __s) throw () : _M_sbuf(__s), _M_failed(!_M_sbuf) { } ostreambuf_iterator& operator=(_CharT __c); ostreambuf_iterator& operator*() throw() { return *this; } ostreambuf_iterator& operator++(int) throw() { return *this; } ostreambuf_iterator& operator++() throw() { return *this; } bool failed() const throw() { return _M_failed; } }; template< _CharT, _Traits> inline ostreambuf_iterator<_CharT, _Traits>& ostreambuf_iterator<_CharT, _Traits>::operator=(_CharT __c) { if (!_M_failed && _Traits::eq_int_type(_M_sbuf->sputc(__c),_Traits::eof())) _M_failed = true; return *this; } template< _CharT, _Traits> class istreambuf_iterator : public iterator { public: typedef _CharT char_type; typedef _Traits traits_type; typedef _Traits::int_type int_type; typedef basic_streambuf<_CharT, _Traits> streambuf_type; typedef basic_istream<_CharT, _Traits> istream_type; private: streambuf_type* _M_sbuf; int_type _M_c; public: istreambuf_iterator() throw() : _M_sbuf(__null), _M_c(-2) { } istreambuf_iterator(istream_type& __s) throw() : _M_sbuf(__s.rdbuf()), _M_c(-2) { } istreambuf_iterator(streambuf_type* __s) throw() : _M_sbuf(__s), _M_c(-2) { } char_type operator*() const { char_type __ret; if (_M_sbuf && _M_c != static_cast(-2)) __ret = _M_c; else if (_M_sbuf) __ret = traits_type::to_char_type(_M_sbuf->sgetc()); else __ret = static_cast(traits_type::eof()); return __ret; } istreambuf_iterator& operator++() { if (_M_sbuf) _M_sbuf->sbumpc(); _M_c = -2; return *this; } istreambuf_iterator operator++(int) { istreambuf_iterator __old = *this; if (_M_sbuf) __old._M_c = _M_sbuf->sbumpc(); _M_c = -2; return __old; } bool equal(const istreambuf_iterator& __b) { int_type __eof = traits_type::eof(); bool __thiseof = !_M_sbuf || _M_sbuf->sgetc() == __eof; bool __beof = !__b._M_sbuf || __b._M_sbuf->sgetc() == __eof; return (__thiseof && __beof || (!__thiseof && !__beof)); } bool equal(const istreambuf_iterator& __b) const { int_type __eof = traits_type::eof(); bool __thiseof = !_M_sbuf || _M_sbuf->sgetc() == __eof; bool __beof = !__b._M_sbuf || __b._M_sbuf->sgetc() == __eof; return (__thiseof && __beof || (!__thiseof && !__beof)); } }; template< _CharT, _Traits> inline bool operator==(const istreambuf_iterator<_CharT, _Traits>& __a, const istreambuf_iterator<_CharT, _Traits>& __b) { return __a.equal(__b); } template< _CharT, _Traits> inline bool operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, const istreambuf_iterator<_CharT, _Traits>& __b) { return !__a.equal(__b); } } # 41 "/usr/local/include/g++-v3/bits/basic_ios.h" 2 3 # 1 "/usr/local/include/g++-v3/bits/locale_facets.h" 1 3 # 44 "/usr/local/include/g++-v3/bits/locale_facets.h" 3 # 1 "/usr/local/include/g++-v3/ios" 1 3 # 50 "/usr/local/include/g++-v3/bits/locale_facets.h" 2 3 namespace std { # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/ctype_base.h" 1 3 # 36 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/ctype_base.h" 3 struct ctype_base { typedef const int* __to_type; typedef unsigned int mask; static const mask upper = 0x400; static const mask lower = 0x040; static const mask alpha = 0x001; static const mask digit = 0x010; static const mask xdigit = 0x800; static const mask space = 0x200; static const mask print = 0x080; static const mask graph = 0x020; static const mask cntrl = 0x008; static const mask punct = 0x100; static const mask alnum = 0x002; }; # 56 "/usr/local/include/g++-v3/bits/locale_facets.h" 2 3 template< _CharT> class __ctype_abstract_base : public locale::facet, public ctype_base { public: typedef _CharT char_type; bool is(mask __m, char_type __c) const { return this->do_is(__m, __c); } const char_type* is(const char_type *__lo, const char_type *__hi, mask *__vec) const { return this->do_is(__lo, __hi, __vec); } const char_type* scan_is(mask __m, const char_type* __lo, const char_type* __hi) const { return this->do_scan_is(__m, __lo, __hi); } const char_type* scan_not(mask __m, const char_type* __lo, const char_type* __hi) const { return this->do_scan_not(__m, __lo, __hi); } char_type toupper(char_type __c) const { return this->do_toupper(__c); } const char_type* toupper(char_type *__lo, const char_type* __hi) const { return this->do_toupper(__lo, __hi); } char_type tolower(char_type __c) const { return this->do_tolower(__c); } const char_type* tolower(char_type* __lo, const char_type* __hi) const { return this->do_tolower(__lo, __hi); } char_type widen(char __c) const { return this->do_widen(__c); } const char* widen(const char* __lo, const char* __hi, char_type* __to) const { return this->do_widen(__lo, __hi, __to); } char narrow(char_type __c, char __dfault) const { return this->do_narrow(__c, __dfault); } const char_type* narrow(const char_type* __lo, const char_type* __hi, char __dfault, char *__to) const { return this->do_narrow(__lo, __hi, __dfault, __to); } protected: explicit __ctype_abstract_base(size_t __refs = 0): locale::facet(__refs) { } virtual ~__ctype_abstract_base() { } virtual bool do_is(mask __m, char_type __c) const = 0; virtual const char_type* do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const = 0; virtual const char_type* do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const = 0; virtual const char_type* do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const = 0; virtual char_type do_toupper(char_type) const = 0; virtual const char_type* do_toupper(char_type* __lo, const char_type* __hi) const = 0; virtual char_type do_tolower(char_type) const = 0; virtual const char_type* do_tolower(char_type* __lo, const char_type* __hi) const = 0; virtual char_type do_widen(char) const = 0; virtual const char* do_widen(const char* __lo, const char* __hi, char_type* __dest) const = 0; virtual char do_narrow(char_type, char __dfault) const = 0; virtual const char_type* do_narrow(const char_type* __lo, const char_type* __hi, char __dfault, char* __dest) const = 0; }; template< _CharT> class ctype : public __ctype_abstract_base<_CharT> { public: typedef _CharT char_type; typedef ctype::mask mask; explicit ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } static locale::id id; protected: virtual ~ctype(); virtual bool do_is(mask __m, char_type __c) const; virtual const char_type* do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; virtual const char_type* do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; virtual const char_type* do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const; virtual char_type do_toupper(char_type __c) const; virtual const char_type* do_toupper(char_type* __lo, const char_type* __hi) const; virtual char_type do_tolower(char_type __c) const; virtual const char_type* do_tolower(char_type* __lo, const char_type* __hi) const; virtual char_type do_widen(char __c) const; virtual const char* do_widen(const char* __lo, const char* __hi, char_type* __dest) const; virtual char do_narrow(char_type, char __dfault) const; virtual const char_type* do_narrow(const char_type* __lo, const char_type* __hi, char __dfault, char* __dest) const; }; template< _CharT> locale::id ctype<_CharT>::id; template<> class ctype : public __ctype_abstract_base { public: typedef char char_type; protected: __c_locale _M_c_locale_ctype; bool _M_del; __to_type _M_toupper; __to_type _M_tolower; const mask* _M_table; public: static locale::id id; static const size_t table_size = 1 + static_cast(-1); explicit ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); explicit ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, size_t __refs = 0); inline bool is(mask __m, char __c) const; inline const char* is(const char* __lo, const char* __hi, mask* __vec) const; inline const char* scan_is(mask __m, const char* __lo, const char* __hi) const; inline const char* scan_not(mask __m, const char* __lo, const char* __hi) const; protected: const mask* table() const throw() { return _M_table; } static const mask* classic_table() throw(); virtual ~ctype(); virtual bool do_is(mask __m, char_type __c) const; virtual const char_type* do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; virtual const char_type* do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; virtual const char_type* do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const; virtual char_type do_toupper(char_type) const; virtual const char_type* do_toupper(char_type* __lo, const char_type* __hi) const; virtual char_type do_tolower(char_type) const; virtual const char_type* do_tolower(char_type* __lo, const char_type* __hi) const; virtual char_type do_widen(char) const; virtual const char* do_widen(const char* __lo, const char* __hi, char_type* __dest) const; virtual char do_narrow(char_type, char __dfault) const; virtual const char_type* do_narrow(const char_type* __lo, const char_type* __hi, char __dfault, char* __dest) const; }; template<> const ctype& use_facet >(const locale& __loc); # 392 "/usr/local/include/g++-v3/bits/locale_facets.h" 3 # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/ctype_inline.h" 1 3 # 37 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/ctype_inline.h" 3 bool ctype:: is(mask __m, char __c) const { return _M_table[(unsigned char)(__c)] & __m; } const char* ctype:: is(const char* __low, const char* __high, mask* __vec) const { const int __bitmasksize = 11; for (;__low < __high; ++__vec, ++__low) { mask __m = _M_table[*__low]; int __i = 0; while (__i < __bitmasksize && !(__m & static_cast(1 << __i))) ++__i; *__vec = static_cast(1 << __i); } return __high; } const char* ctype:: scan_is(mask __m, const char* __low, const char* __high) const { while (__low < __high && !this->is(__m, *__low)) ++__low; return __low; } const char* ctype:: scan_not(mask __m, const char* __low, const char* __high) const { while (__low < __high && this->is(__m, *__low) != 0) ++__low; return __low; } # 393 "/usr/local/include/g++-v3/bits/locale_facets.h" 2 3 template< _CharT> class ctype_byname : public ctype<_CharT> { public: typedef _CharT char_type; explicit ctype_byname(const char* __s, size_t __refs = 0); protected: virtual ~ctype_byname() { }; }; template<> ctype_byname::ctype_byname(const char*, size_t refs); template<> ctype_byname::ctype_byname(const char*, size_t refs); # 1 "/usr/local/include/g++-v3/bits/codecvt.h" 1 3 # 45 "/usr/local/include/g++-v3/bits/codecvt.h" 3 class codecvt_base { public: enum result { ok, partial, error, noconv }; }; template< _InternT, _ExternT, _StateT> class __codecvt_abstract_base : public locale::facet, public codecvt_base { public: typedef codecvt_base::result result; typedef _InternT intern_type; typedef _ExternT extern_type; typedef _StateT state_type; result out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const { return this->do_out(__state, __from, __from_end, __from_next, __to, __to_end, __to_next); } result unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const { return this->do_unshift(__state, __to,__to_end,__to_next); } result in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const { return this->do_in(__state, __from, __from_end, __from_next, __to, __to_end, __to_next); } int encoding() const throw() { return this->do_encoding(); } bool always_noconv() const throw() { return this->do_always_noconv(); } int length(const state_type& __state, const extern_type* __from, const extern_type* __end, size_t __max) const { return this->do_length(__state, __from, __end, __max); } int max_length() const throw() { return this->do_max_length(); } protected: explicit __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { } virtual ~__codecvt_abstract_base() { } virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const = 0; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const = 0; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const = 0; virtual int do_encoding() const throw() = 0; virtual bool do_always_noconv() const throw() = 0; virtual int do_length(const state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const = 0; virtual int do_max_length() const throw() = 0; }; template< _InternT, _ExternT, _StateT> class codecvt : public __codecvt_abstract_base<_InternT, _ExternT, _StateT> { public: typedef codecvt_base::result result; typedef _InternT intern_type; typedef _ExternT extern_type; typedef _StateT state_type; static locale::id id; explicit codecvt(size_t __refs = 0) : __codecvt_abstract_base<_InternT,_ExternT,_StateT> (__refs) { } protected: virtual ~codecvt() { } virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(const state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); }; template< _InternT, _ExternT, _StateT> locale::id codecvt<_InternT, _ExternT, _StateT>::id; template<> class codecvt : public __codecvt_abstract_base { public: typedef char intern_type; typedef char extern_type; typedef mbstate_t state_type; static locale::id id; explicit codecvt(size_t __refs = 0); protected: virtual ~codecvt(); virtual result do_out(state_type& __state, const intern_type* __from, const intern_type* __from_end, const intern_type*& __from_next, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_unshift(state_type& __state, extern_type* __to, extern_type* __to_end, extern_type*& __to_next) const; virtual result do_in(state_type& __state, const extern_type* __from, const extern_type* __from_end, const extern_type*& __from_next, intern_type* __to, intern_type* __to_end, intern_type*& __to_next) const; virtual int do_encoding() const throw(); virtual bool do_always_noconv() const throw(); virtual int do_length(const state_type&, const extern_type* __from, const extern_type* __end, size_t __max) const; virtual int do_max_length() const throw(); }; # 318 "/usr/local/include/g++-v3/bits/codecvt.h" 3 template< _InternT, _ExternT, _StateT> class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> { public: explicit codecvt_byname(const char*, size_t __refs = 0) : codecvt<_InternT, _ExternT, _StateT>(__refs) { } protected: virtual ~codecvt_byname() { } }; # 418 "/usr/local/include/g++-v3/bits/locale_facets.h" 2 3 class __num_base { protected: static const double _S_scale_hex; static const double _S_scale_oct; static const char _S_atoms[]; enum { _M_zero, _M_e = _M_zero + 10, _M_E = _M_zero + 11, _M_size = 21 + 1 }; static bool _S_format_float(const ios_base& __io, char* __fptr, char __mod, streamsize __prec); static void _S_format_int(const ios_base& __io, char* __fptr, char __mod, char __modl); }; template< _CharT> class numpunct : public locale::facet { public: typedef _CharT char_type; typedef basic_string<_CharT> string_type; static locale::id id; private: char_type _M_decimal_point; char_type _M_thousands_sep; string _M_grouping; string_type _M_truename; string_type _M_falsename; public: explicit numpunct(size_t __refs = 0) : locale::facet(__refs) { _M_initialize_numpunct(); } explicit numpunct(__c_locale __cloc, size_t __refs = 0) : locale::facet(__refs) { _M_initialize_numpunct(__cloc); } char_type decimal_point() const { return this->do_decimal_point(); } char_type thousands_sep() const { return this->do_thousands_sep(); } string grouping() const { return this->do_grouping(); } string_type truename() const { return this->do_truename(); } string_type falsename() const { return this->do_falsename(); } protected: virtual ~numpunct() { } virtual char_type do_decimal_point() const { return _M_decimal_point; } virtual char_type do_thousands_sep() const { return _M_thousands_sep; } virtual string do_grouping() const { return _M_grouping; } virtual string_type do_truename() const { return _M_truename; } virtual string_type do_falsename() const { return _M_falsename; } void _M_initialize_numpunct(__c_locale __cloc = __null); }; template< _CharT> locale::id numpunct<_CharT>::id; template<> void numpunct::_M_initialize_numpunct(__c_locale __cloc); template< _CharT> class numpunct_byname : public numpunct<_CharT> { __c_locale _M_c_locale_numpunct; public: typedef _CharT char_type; typedef basic_string<_CharT> string_type; explicit numpunct_byname(const char* __s, size_t __refs = 0) : numpunct<_CharT>(__refs) { _S_create_c_locale(_M_c_locale_numpunct, __s); _M_initialize_numpunct(_M_c_locale_numpunct); } protected: virtual ~numpunct_byname() { _S_destroy_c_locale(_M_c_locale_numpunct); } }; template< _CharT, _InIter> class num_get : public locale::facet, public __num_base { public: typedef _CharT char_type; typedef _InIter iter_type; static locale::id id; explicit num_get(size_t __refs = 0) : locale::facet(__refs) { } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, bool& __v) const { return this->do_get(__in, __end, __io, __err, __v); } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, long& __v) const { return this->do_get(__in, __end, __io, __err, __v); } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, unsigned short& __v) const { return this->do_get(__in, __end, __io, __err, __v); } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, unsigned int& __v) const { return this->do_get(__in, __end, __io, __err, __v); } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, unsigned long& __v) const { return this->do_get(__in, __end, __io, __err, __v); } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, long long& __v) const { return this->do_get(__in, __end, __io, __err, __v); } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, unsigned long long& __v) const { return this->do_get(__in, __end, __io, __err, __v); } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, float& __v) const { return this->do_get(__in, __end, __io, __err, __v); } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, double& __v) const { return this->do_get(__in, __end, __io, __err, __v); } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, long double& __v) const { return this->do_get(__in, __end, __io, __err, __v); } iter_type get(iter_type __in, iter_type __end, ios_base& __io, ios_base::iostate& __err, void*& __v) const { return this->do_get(__in, __end, __io, __err, __v); } protected: virtual ~num_get() { } iter_type _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, string& __xtrc) const; iter_type _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, string& __xtrc, int& __base) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, long&) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, unsigned short&) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, unsigned int&) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, unsigned long&) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, long long&) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, unsigned long long&) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, float&) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, double&) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, long double&) const; virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, void*&) const; }; template< _CharT, _InIter> locale::id num_get<_CharT, _InIter>::id; template< _CharT, _OutIter> class num_put : public locale::facet, public __num_base { public: typedef _CharT char_type; typedef _OutIter iter_type; static locale::id id; explicit num_put(size_t __refs = 0) : locale::facet(__refs) { } iter_type put(iter_type __s, ios_base& __f, char_type __fill, bool __v) const { return this->do_put(__s, __f, __fill, __v); } iter_type put(iter_type __s, ios_base& __f, char_type __fill, long __v) const { return this->do_put(__s, __f, __fill, __v); } iter_type put(iter_type __s, ios_base& __f, char_type __fill, unsigned long __v) const { return this->do_put(__s, __f, __fill, __v); } iter_type put(iter_type __s, ios_base& __f, char_type __fill, long long __v) const { return this->do_put(__s, __f, __fill, __v); } iter_type put(iter_type __s, ios_base& __f, char_type __fill, unsigned long long __v) const { return this->do_put(__s, __f, __fill, __v); } iter_type put(iter_type __s, ios_base& __f, char_type __fill, double __v) const { return this->do_put(__s, __f, __fill, __v); } iter_type put(iter_type __s, ios_base& __f, char_type __fill, long double __v) const { return this->do_put(__s, __f, __fill, __v); } iter_type put(iter_type __s, ios_base& __f, char_type __fill, const void* __v) const { return this->do_put(__s, __f, __fill, __v); } protected: template< _ValueT> iter_type _M_convert_float(iter_type, ios_base& __io, char_type __fill, char __mod, _ValueT __v) const; template< _ValueT> iter_type _M_convert_int(iter_type, ios_base& __io, char_type __fill, char __mod, char __modl, _ValueT __v) const; iter_type _M_widen_float(iter_type, ios_base& __io, char_type __fill, char* __cs, int __len) const; iter_type _M_widen_int(iter_type, ios_base& __io, char_type __fill, char* __cs, int __len) const; iter_type _M_insert(iter_type, ios_base& __io, char_type __fill, const char_type* __ws, int __len) const; virtual ~num_put() { }; virtual iter_type do_put(iter_type, ios_base&, char_type __fill, bool __v) const; virtual iter_type do_put(iter_type, ios_base&, char_type __fill, long __v) const; virtual iter_type do_put(iter_type, ios_base&, char_type __fill, unsigned long) const; virtual iter_type do_put(iter_type, ios_base&, char_type __fill, long long __v) const; virtual iter_type do_put(iter_type, ios_base&, char_type __fill, unsigned long long) const; virtual iter_type do_put(iter_type, ios_base&, char_type __fill, double __v) const; virtual iter_type do_put(iter_type, ios_base&, char_type __fill, long double __v) const; virtual iter_type do_put(iter_type, ios_base&, char_type __fill, const void* __v) const; }; template < _CharT, _OutIter> locale::id num_put<_CharT, _OutIter>::id; template< _CharT> class collate : public locale::facet { public: typedef _CharT char_type; typedef basic_string<_CharT> string_type; protected: __c_locale _M_c_locale_collate; public: static locale::id id; explicit collate(size_t __refs = 0) : locale::facet(__refs) { _M_c_locale_collate = _S_clone_c_locale(_S_c_locale); } explicit collate(__c_locale __cloc, size_t __refs = 0) : locale::facet(__refs) { _M_c_locale_collate = _S_clone_c_locale(__cloc); } int compare(const _CharT* __lo1, const _CharT* __hi1, const _CharT* __lo2, const _CharT* __hi2) const { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } string_type transform(const _CharT* __lo, const _CharT* __hi) const { return this->do_transform(__lo, __hi); } long hash(const _CharT* __lo, const _CharT* __hi) const { return this->do_hash(__lo, __hi); } int _M_compare_helper(const _CharT*, const _CharT*) const; size_t _M_transform_helper(_CharT*, const _CharT*, size_t) const; protected: virtual ~collate() { _S_destroy_c_locale(_M_c_locale_collate); } virtual int do_compare(const _CharT* __lo1, const _CharT* __hi1, const _CharT* __lo2, const _CharT* __hi2) const; virtual string_type do_transform(const _CharT* __lo, const _CharT* __hi) const; virtual long do_hash(const _CharT* __lo, const _CharT* __hi) const; }; template< _CharT> locale::id collate<_CharT>::id; template<> int collate::_M_compare_helper(const char*, const char*) const; template<> size_t collate::_M_transform_helper(char*, const char*, size_t) const; # 889 "/usr/local/include/g++-v3/bits/locale_facets.h" 3 template< _CharT> class collate_byname : public collate<_CharT> { public: typedef _CharT char_type; typedef basic_string<_CharT> string_type; explicit collate_byname(const char* __s, size_t __refs = 0) : collate<_CharT>(__refs) { _S_destroy_c_locale(_M_c_locale_collate); _S_create_c_locale(_M_c_locale_collate, __s); } protected: virtual ~collate_byname() { } }; class time_base { public: enum dateorder { no_order, dmy, mdy, ymd, ydm }; }; template< _CharT> class __timepunct : public locale::facet { public: typedef _CharT __char_type; typedef basic_string<_CharT> __string_type; static locale::id id; static const _CharT* _S_timezones[14]; protected: __c_locale _M_c_locale_timepunct; const char* _M_name_timepunct; const _CharT* _M_date_format; const _CharT* _M_date_era_format; const _CharT* _M_time_format; const _CharT* _M_time_era_format; const _CharT* _M_date_time_format; const _CharT* _M_date_time_era_format; const _CharT* _M_am; const _CharT* _M_pm; const _CharT* _M_am_pm_format; const _CharT* _M_day1; const _CharT* _M_day2; const _CharT* _M_day3; const _CharT* _M_day4; const _CharT* _M_day5; const _CharT* _M_day6; const _CharT* _M_day7; const _CharT* _M_day_a1; const _CharT* _M_day_a2; const _CharT* _M_day_a3; const _CharT* _M_day_a4; const _CharT* _M_day_a5; const _CharT* _M_day_a6; const _CharT* _M_day_a7; const _CharT* _M_month01; const _CharT* _M_month02; const _CharT* _M_month03; const _CharT* _M_month04; const _CharT* _M_month05; const _CharT* _M_month06; const _CharT* _M_month07; const _CharT* _M_month08; const _CharT* _M_month09; const _CharT* _M_month10; const _CharT* _M_month11; const _CharT* _M_month12; const _CharT* _M_month_a01; const _CharT* _M_month_a02; const _CharT* _M_month_a03; const _CharT* _M_month_a04; const _CharT* _M_month_a05; const _CharT* _M_month_a06; const _CharT* _M_month_a07; const _CharT* _M_month_a08; const _CharT* _M_month_a09; const _CharT* _M_month_a10; const _CharT* _M_month_a11; const _CharT* _M_month_a12; public: explicit __timepunct(size_t __refs = 0) : locale::facet(__refs), _M_name_timepunct("C") { _M_initialize_timepunct(); } explicit __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0) : locale::facet(__refs), _M_name_timepunct(__s) { _M_initialize_timepunct(__cloc); } void _M_put_helper(_CharT* __s, size_t __maxlen, const _CharT* __format, const tm* __tm) const; void _M_date_formats(const _CharT** __date) const { __date[0] = _M_date_format; __date[1] = _M_date_era_format; } void _M_time_formats(const _CharT** __time) const { __time[0] = _M_time_format; __time[1] = _M_time_era_format; } void _M_ampm(const _CharT** __ampm) const { __ampm[0] = _M_am; __ampm[1] = _M_pm; } void _M_date_time_formats(const _CharT** __dt) const { __dt[0] = _M_date_time_format; __dt[1] = _M_date_time_era_format; } void _M_days(const _CharT** __days) const { __days[0] = _M_day1; __days[1] = _M_day2; __days[2] = _M_day3; __days[3] = _M_day4; __days[4] = _M_day5; __days[5] = _M_day6; __days[6] = _M_day7; } void _M_days_abbreviated(const _CharT** __days) const { __days[0] = _M_day_a1; __days[1] = _M_day_a2; __days[2] = _M_day_a3; __days[3] = _M_day_a4; __days[4] = _M_day_a5; __days[5] = _M_day_a6; __days[6] = _M_day_a7; } void _M_months(const _CharT** __months) const { __months[0] = _M_month01; __months[1] = _M_month02; __months[2] = _M_month03; __months[3] = _M_month04; __months[4] = _M_month05; __months[5] = _M_month06; __months[6] = _M_month07; __months[7] = _M_month08; __months[8] = _M_month09; __months[9] = _M_month10; __months[10] = _M_month11; __months[11] = _M_month12; } void _M_months_abbreviated(const _CharT** __months) const { __months[0] = _M_month_a01; __months[1] = _M_month_a02; __months[2] = _M_month_a03; __months[3] = _M_month_a04; __months[4] = _M_month_a05; __months[5] = _M_month_a06; __months[6] = _M_month_a07; __months[7] = _M_month_a08; __months[8] = _M_month_a09; __months[9] = _M_month_a10; __months[10] = _M_month_a11; __months[11] = _M_month_a12; } protected: virtual ~__timepunct() { if (_M_c_locale_timepunct) _S_destroy_c_locale(_M_c_locale_timepunct); } void _M_initialize_timepunct(__c_locale __cloc = __null); }; template< _CharT> locale::id __timepunct<_CharT>::id; template<> const char* __timepunct::_S_timezones[14]; template<> void __timepunct::_M_initialize_timepunct(__c_locale __cloc); template<> void __timepunct::_M_put_helper(char*, size_t, const char*, const tm*) const; # 1138 "/usr/local/include/g++-v3/bits/locale_facets.h" 3 template< _CharT> const _CharT* __timepunct<_CharT>::_S_timezones[14]; template< _CharT, _InIter> class time_get : public locale::facet, public time_base { public: typedef _CharT char_type; typedef _InIter iter_type; typedef basic_string<_CharT> __string_type; static locale::id id; explicit time_get(size_t __refs = 0) : locale::facet (__refs) { } dateorder date_order() const { return this->do_date_order(); } iter_type get_time(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { return this->do_get_time(__beg, __end, __io, __err, __tm); } iter_type get_date(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { return this->do_get_date(__beg, __end, __io, __err, __tm); } iter_type get_weekday(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { return this->do_get_weekday(__beg, __end, __io, __err, __tm); } iter_type get_monthname(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { return this->do_get_monthname(__beg, __end, __io, __err, __tm); } iter_type get_year(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { return this->do_get_year(__beg, __end, __io, __err, __tm); } protected: virtual ~time_get() { } virtual dateorder do_date_order() const; virtual iter_type do_get_time(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const; virtual iter_type do_get_date(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const; virtual iter_type do_get_weekday(iter_type __beg, iter_type __end, ios_base&, ios_base::iostate& __err, tm* __tm) const; virtual iter_type do_get_monthname(iter_type __beg, iter_type __end, ios_base&, ios_base::iostate& __err, tm* __tm) const; virtual iter_type do_get_year(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const; void _M_extract_num(iter_type& __beg, iter_type& __end, int& __member, int __min, int __max, size_t __len, const ctype<_CharT>& __ctype, ios_base::iostate& __err) const; void _M_extract_name(iter_type& __beg, iter_type& __end, int& __member, const _CharT** __names, size_t __indexlen, ios_base::iostate& __err) const; void _M_extract_via_format(iter_type& __beg, iter_type& __end, ios_base& __io, ios_base::iostate& __err, tm* __tm, const _CharT* __format) const; }; template< _CharT, _InIter> locale::id time_get<_CharT, _InIter>::id; template< _CharT, _InIter> class time_get_byname : public time_get<_CharT, _InIter> { public: typedef _CharT char_type; typedef _InIter iter_type; explicit time_get_byname(const char*, size_t __refs = 0) : time_get<_CharT, _InIter>(__refs) { } protected: virtual ~time_get_byname() { } }; template< _CharT, _OutIter> class time_put : public locale::facet, public time_base { public: typedef _CharT char_type; typedef _OutIter iter_type; static locale::id id; explicit time_put(size_t __refs = 0) : locale::facet(__refs) { } iter_type put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, const _CharT* __beg, const _CharT* __end) const; iter_type put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, char __format, char __mod = 0) const { return this->do_put(__s, __io, __fill, __tm, __format, __mod); } protected: virtual ~time_put() { } virtual iter_type do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, char __format, char __mod) const; }; template< _CharT, _OutIter> locale::id time_put<_CharT, _OutIter>::id; template< _CharT, _OutIter> class time_put_byname : public time_put<_CharT, _OutIter> { public: typedef _CharT char_type; typedef _OutIter iter_type; explicit time_put_byname(const char* , size_t __refs = 0) : time_put<_CharT, _OutIter>(__refs) { }; protected: virtual ~time_put_byname() { } }; class money_base { public: enum part { none, space, symbol, sign, value }; struct pattern { char field[4]; }; static const pattern _S_default_pattern; static pattern _S_construct_pattern(char __precedes, char __space, char __posn); }; template< _CharT, bool _Intl> class moneypunct : public locale::facet, public money_base { public: typedef _CharT char_type; typedef basic_string<_CharT> string_type; static const bool intl = _Intl; static locale::id id; private: char_type _M_decimal_point; char_type _M_thousands_sep; string _M_grouping; string_type _M_curr_symbol; string_type _M_positive_sign; string_type _M_negative_sign; int _M_frac_digits; pattern _M_pos_format; pattern _M_neg_format; public: explicit moneypunct(size_t __refs = 0) : locale::facet(__refs) { _M_initialize_moneypunct(); } explicit moneypunct(__c_locale __cloc, size_t __refs = 0) : locale::facet(__refs) { _M_initialize_moneypunct(__cloc); } char_type decimal_point() const { return this->do_decimal_point(); } char_type thousands_sep() const { return this->do_thousands_sep(); } string grouping() const { return this->do_grouping(); } string_type curr_symbol() const { return this->do_curr_symbol(); } string_type positive_sign() const { return this->do_positive_sign(); } string_type negative_sign() const { return this->do_negative_sign(); } int frac_digits() const { return this->do_frac_digits(); } pattern pos_format() const { return this->do_pos_format(); } pattern neg_format() const { return this->do_neg_format(); } protected: virtual ~moneypunct() { } virtual char_type do_decimal_point() const { return _M_decimal_point; } virtual char_type do_thousands_sep() const { return _M_thousands_sep; } virtual string do_grouping() const { return _M_grouping; } virtual string_type do_curr_symbol() const { return _M_curr_symbol; } virtual string_type do_positive_sign() const { return _M_positive_sign; } virtual string_type do_negative_sign() const { return _M_negative_sign; } virtual int do_frac_digits() const { return _M_frac_digits; } virtual pattern do_pos_format() const { return _M_pos_format; } virtual pattern do_neg_format() const { return _M_neg_format; } void _M_initialize_moneypunct(__c_locale __cloc = __null); }; template< _CharT, bool _Intl> locale::id moneypunct<_CharT, _Intl>::id; template< _CharT, bool _Intl> const bool moneypunct<_CharT, _Intl>::intl; template<> void moneypunct::_M_initialize_moneypunct(__c_locale __cloc); template<> void moneypunct::_M_initialize_moneypunct(__c_locale __cloc); # 1459 "/usr/local/include/g++-v3/bits/locale_facets.h" 3 template< _CharT, bool _Intl> class moneypunct_byname : public moneypunct<_CharT, _Intl> { __c_locale _M_c_locale_moneypunct; public: typedef _CharT char_type; typedef basic_string<_CharT> string_type; static const bool intl = _Intl; explicit moneypunct_byname(const char* __s, size_t __refs = 0) : moneypunct<_CharT, _Intl>(__refs) { _S_create_c_locale(_M_c_locale_moneypunct, __s); _M_initialize_moneypunct(_M_c_locale_moneypunct); } protected: virtual ~moneypunct_byname() { _S_destroy_c_locale(_M_c_locale_moneypunct); } }; template< _CharT, bool _Intl> const bool moneypunct_byname<_CharT, _Intl>::intl; template< _CharT, _InIter> class money_get : public locale::facet { public: typedef _CharT char_type; typedef _InIter iter_type; typedef basic_string<_CharT> string_type; static locale::id id; explicit money_get(size_t __refs = 0) : locale::facet(__refs) { } iter_type get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, long double& __units) const { return this->do_get(__s, __end, __intl, __io, __err, __units); } iter_type get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, string_type& __digits) const { return this->do_get(__s, __end, __intl, __io, __err, __digits); } protected: virtual ~money_get() { } virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, long double& __units) const; virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, string_type& __digits) const; }; template< _CharT, _InIter> locale::id money_get<_CharT, _InIter>::id; template< _CharT, _OutIter> class money_put : public locale::facet { public: typedef _CharT char_type; typedef _OutIter iter_type; typedef basic_string<_CharT> string_type; static locale::id id; explicit money_put(size_t __refs = 0) : locale::facet(__refs) { } iter_type put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, long double __units) const { return this->do_put(__s, __intl, __io, __fill, __units); } iter_type put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, const string_type& __digits) const { return this->do_put(__s, __intl, __io, __fill, __digits); } protected: virtual ~money_put() { } virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, long double __units) const; virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, const string_type& __digits) const; }; template< _CharT, _OutIter> locale::id money_put<_CharT, _OutIter>::id; struct messages_base { typedef int catalog; }; template< _CharT> class messages : public locale::facet, public messages_base { public: typedef _CharT char_type; typedef basic_string<_CharT> string_type; protected: __c_locale _M_c_locale_messages; const char* _M_name_messages; public: static locale::id id; explicit messages(size_t __refs = 0) : locale::facet(__refs), _M_name_messages("C") { _M_c_locale_messages = _S_clone_c_locale(_S_c_locale); } explicit messages(__c_locale __cloc, const char* __name, size_t __refs = 0) : locale::facet(__refs) { _M_name_messages = __name; _M_c_locale_messages = _S_clone_c_locale(__cloc); } catalog open(const basic_string& __s, const locale& __loc) const { return this->do_open(__s, __loc); } catalog open(const basic_string&, const locale&, const char*) const; string_type get(catalog __c, int __set, int __msgid, const string_type& __s) const { return this->do_get(__c, __set, __msgid, __s); } void close(catalog __c) const { return this->do_close(__c); } protected: virtual ~messages() { _S_destroy_c_locale(_M_c_locale_messages); } virtual catalog do_open(const basic_string&, const locale&) const; virtual string_type do_get(catalog, int, int, const string_type& __dfault) const; virtual void do_close(catalog) const; char* _M_convert_to_char(const string_type& __msg) const { return reinterpret_cast(const_cast<_CharT*>(__msg.c_str())); } string_type _M_convert_from_char(char* __msg) const { size_t __len = char_traits::length(__msg) - 1; # 1681 "/usr/local/include/g++-v3/bits/locale_facets.h" 3 return string_type(); } }; template< _CharT> locale::id messages<_CharT>::id; template<> string messages::do_get(catalog, int, int, const string&) const; # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/messages_members.h" 1 3 # 37 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/messages_members.h" 3 template< _CharT> messages<_CharT>::catalog messages<_CharT>::open(const basic_string& __s, const locale& __loc, const char*) const { return this->do_open(__s, __loc); } template< _CharT> messages<_CharT>::catalog messages<_CharT>::do_open(const basic_string&, const locale&) const { return 0; } template< _CharT> messages<_CharT>::string_type messages<_CharT>::do_get(catalog, int, int, const string_type& __dfault) const { return __dfault; } template< _CharT> void messages<_CharT>::do_close(catalog) const { } # 1695 "/usr/local/include/g++-v3/bits/locale_facets.h" 2 3 template< _CharT> class messages_byname : public messages<_CharT> { public: typedef _CharT char_type; typedef basic_string<_CharT> string_type; explicit messages_byname(const char* __s, size_t __refs = 0) : messages<_CharT>(__refs) { _M_name_messages = __s; _S_destroy_c_locale(_M_c_locale_messages); _S_create_c_locale(_M_c_locale_messages, __s); } protected: virtual ~messages_byname() { } }; template< _CharT> inline bool isspace(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::space, __c); } template< _CharT> inline bool isprint(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::print, __c); } template< _CharT> inline bool iscntrl(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::cntrl, __c); } template< _CharT> inline bool isupper(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::upper, __c); } template< _CharT> inline bool islower(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::lower, __c); } template< _CharT> inline bool isalpha(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::alpha, __c); } template< _CharT> inline bool isdigit(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::digit, __c); } template< _CharT> inline bool ispunct(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::punct, __c); } template< _CharT> inline bool isxdigit(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::xdigit, __c); } template< _CharT> inline bool isalnum(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::alnum, __c); } template< _CharT> inline bool isgraph(_CharT __c, const locale& __loc) { return use_facet >(__loc).is(ctype_base::graph, __c); } template< _CharT> inline _CharT toupper(_CharT __c, const locale& __loc) { return use_facet >(__loc).toupper(__c); } template< _CharT> inline _CharT tolower(_CharT __c, const locale& __loc) { return use_facet >(__loc).tolower(__c); } } # 42 "/usr/local/include/g++-v3/bits/basic_ios.h" 2 3 namespace std { template< _CharT, _Traits> class basic_ios : public ios_base { public: typedef _CharT char_type; typedef _Traits::int_type int_type; typedef _Traits::pos_type pos_type; typedef _Traits::off_type off_type; typedef _Traits traits_type; typedef ctype<_CharT> __ctype_type; typedef ostreambuf_iterator<_CharT, _Traits> __ostreambuf_iter; typedef num_put<_CharT, __ostreambuf_iter> __numput_type; typedef istreambuf_iterator<_CharT, _Traits> __istreambuf_iter; typedef num_get<_CharT, __istreambuf_iter> __numget_type; protected: basic_ostream<_CharT, _Traits>* _M_tie; mutable char_type _M_fill; mutable bool _M_fill_init; iostate _M_exception; basic_streambuf<_CharT, _Traits>* _M_streambuf; iostate _M_streambuf_state; const __ctype_type* _M_ios_fctype; const __numput_type* _M_fnumput; const __numget_type* _M_fnumget; public: const __ctype_type* _M_get_fctype_ios(void) { return _M_ios_fctype; } operator void*() const { return this->fail() ? 0 : const_cast(this); } bool operator!() const { return this->fail(); } iostate rdstate() const { return _M_streambuf_state; } void clear(iostate __state = goodbit); void setstate(iostate __state) { this->clear(this->rdstate() | __state); } bool good() const { return this->rdstate() == 0; } bool eof() const { return (this->rdstate() & eofbit) != 0; } bool fail() const { return (this->rdstate() & (badbit | failbit)) != 0; } bool bad() const { return (this->rdstate() & badbit) != 0; } iostate exceptions() const { return _M_exception; } void exceptions(iostate __except) { _M_exception = __except; this->clear(_M_streambuf_state); } explicit basic_ios(basic_streambuf<_CharT, _Traits>* __sb) : ios_base() { this->init(__sb); } virtual ~basic_ios() { } basic_ostream<_CharT, _Traits>* tie() const { return _M_tie; } basic_ostream<_CharT, _Traits>* tie(basic_ostream<_CharT, _Traits>* __tiestr) { basic_ostream<_CharT, _Traits>* __old = _M_tie; _M_tie = __tiestr; return __old; } basic_streambuf<_CharT, _Traits>* rdbuf() const { return _M_streambuf; } basic_streambuf<_CharT, _Traits>* rdbuf(basic_streambuf<_CharT, _Traits>* __sb); basic_ios& copyfmt(const basic_ios& __rhs); char_type fill() const { if (!_M_fill_init) { _M_fill = this->widen(' '); _M_fill_init = true; } return _M_fill; } char_type fill(char_type __ch) { char_type __old = this->fill(); _M_fill = __ch; return __old; } locale imbue(const locale& __loc); char narrow(char_type __c, char __dfault) const; char_type widen(char __c) const; protected: basic_ios() : ios_base() { } void init(basic_streambuf<_CharT, _Traits>* __sb); bool _M_check_facet(const locale::facet* __f) const { if (!__f) __throw_bad_cast(); return true; } void _M_cache_facets(const locale& __loc); }; } # 1 "/usr/local/include/g++-v3/bits/basic_ios.tcc" 1 3 # 34 "/usr/local/include/g++-v3/bits/basic_ios.tcc" 3 namespace std { template< _CharT, _Traits> void basic_ios<_CharT, _Traits>::clear(iostate __state) { if (this->rdbuf()) _M_streambuf_state = __state; else _M_streambuf_state = __state | badbit; if ((this->rdstate() & this->exceptions())) __throw_ios_failure("basic_ios::clear(iostate) caused exception"); } template< _CharT, _Traits> basic_streambuf<_CharT, _Traits>* basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) { basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; _M_streambuf = __sb; this->clear(); return __old; } template< _CharT, _Traits> basic_ios<_CharT, _Traits>& basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) { _Words* __words = (__rhs._M_word_limit <= _S_local_words) ? _M_word_array : new _Words[__rhs._M_word_limit]; # 77 "/usr/local/include/g++-v3/bits/basic_ios.tcc" 3 _Callback_list* __cb = __rhs._M_callbacks; if (__cb) __cb->_M_add_reference(); _M_call_callbacks(erase_event); if (_M_words != _M_word_array) delete [] _M_words; _M_dispose_callbacks(); _M_callbacks = __cb; for (int __i = 0; __i < __rhs._M_word_limit; ++__i) __words[__i] = __rhs._M_words[__i]; if (_M_words != _M_word_array) delete [] _M_words; _M_words = __words; _M_word_limit = __rhs._M_word_limit; this->flags(__rhs.flags()); this->width(__rhs.width()); this->precision(__rhs.precision()); this->tie(__rhs.tie()); this->fill(__rhs.fill()); this->exceptions(__rhs.exceptions()); _M_call_callbacks(copyfmt_event); return *this; } template< _CharT, _Traits> char basic_ios<_CharT, _Traits>::narrow(char_type __c, char __dfault) const { char __ret = __dfault; if (_M_check_facet(_M_ios_fctype)) __ret = _M_ios_fctype->narrow(__c, __dfault); return __ret; } template< _CharT, _Traits> _CharT basic_ios<_CharT, _Traits>::widen(char __c) const { char_type __ret = char_type(); if (_M_check_facet(_M_ios_fctype)) __ret = _M_ios_fctype->widen(__c); return __ret; } template< _CharT, _Traits> locale basic_ios<_CharT, _Traits>::imbue(const locale& __loc) { locale __old(this->getloc()); ios_base::imbue(__loc); _M_cache_facets(__loc); if (this->rdbuf() != 0) this->rdbuf()->pubimbue(__loc); return __old; } template< _CharT, _Traits> void basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) { ios_base::_M_init(); _M_cache_facets(_M_ios_locale); _M_tie = 0; # 159 "/usr/local/include/g++-v3/bits/basic_ios.tcc" 3 _M_fill = 0; _M_fill_init = false; _M_exception = goodbit; _M_streambuf = __sb; _M_streambuf_state = __sb ? goodbit : badbit; } template< _CharT, _Traits> void basic_ios<_CharT, _Traits>::_M_cache_facets(const locale& __loc) { if (has_facet<__ctype_type>(__loc)) _M_ios_fctype = &use_facet<__ctype_type>(__loc); else _M_ios_fctype = 0; if (has_facet<__numput_type>(__loc)) _M_fnumput = &use_facet<__numput_type>(__loc); else _M_fnumput = 0; if (has_facet<__numget_type>(__loc)) _M_fnumget = &use_facet<__numget_type>(__loc); else _M_fnumget = 0; } extern template class basic_ios; extern template class basic_ios; } # 215 "/usr/local/include/g++-v3/bits/basic_ios.h" 2 3 # 52 "/usr/local/include/g++-v3/ios" 2 3 # 45 "/usr/local/include/g++-v3/istream" 2 3 # 1 "/usr/local/include/g++-v3/limits" 1 3 # 47 "/usr/local/include/g++-v3/limits" 3 # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/cpu_limits.h" 1 3 # 49 "/usr/local/include/g++-v3/limits" 2 3 # 890 "/usr/local/include/g++-v3/limits" 3 namespace std { enum float_round_style { round_indeterminate = -1, round_toward_zero = 0, round_to_nearest = 1, round_toward_infinity = 2, round_toward_neg_infinity = 3 }; enum float_denorm_style { denorm_indeterminate = -1, denorm_absent = 0, denorm_present = 1 }; struct __numeric_limits_base { static const bool is_specialized = false; static const int digits = 0; static const int digits10 = 0; static const bool is_signed = false; static const bool is_integer = false; static const bool is_exact = false; static const int radix = 0; static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static const bool is_iec559 = false; static const bool is_bounded = false; static const bool is_modulo = false; static const bool traps = false; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; template< _Tp> struct numeric_limits : public __numeric_limits_base { static _Tp min() throw() { return static_cast<_Tp>(0); } static _Tp max() throw() { return static_cast<_Tp>(0); } static _Tp epsilon() throw() { return static_cast<_Tp>(0); } static _Tp round_error() throw() { return static_cast<_Tp>(0); } static _Tp infinity() throw() { return static_cast<_Tp>(0); } static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); } static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); } static _Tp denorm_min() throw() { return static_cast<_Tp>(0); } }; template<> struct numeric_limits { static const bool is_specialized = true; static bool min() throw() { return false; } static bool max() throw() { return true; } static const int digits = 8; static const int digits10 = 0; static const bool is_signed = false; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static bool epsilon() throw() { return false; } static bool round_error() throw() { return false; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static bool infinity() throw() { return false; } static bool quiet_NaN() throw() { return false; } static bool signaling_NaN() throw() { return false; } static bool denorm_min() throw() { return false; } static const bool is_iec559 = true; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true || true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; template<> struct numeric_limits { static const bool is_specialized = true; static char min() throw() { return (char)(-127 - 1); } static char max() throw() { return (char)127; } static const int digits = 7; static const int digits10 = 7; static const bool is_signed = true; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static char epsilon() throw() { return char(); } static char round_error() throw() { return char(); } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static char infinity() throw() { return char(); } static char quiet_NaN() throw() { return char(); } static char signaling_NaN() throw() { return char(); } static char denorm_min() throw() { return static_cast(0); } static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; # 1074 "/usr/local/include/g++-v3/limits" 3 template<> struct numeric_limits { static const bool is_specialized = true; static signed char min() throw() { return (-127 - 1); } static signed char max() throw() { return 127; } static const int digits = 7; static const int digits10 = 2; static const bool is_signed = true; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static signed char epsilon() throw() { return 0; } static signed char round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static signed char infinity() throw() { return static_cast(0); } static signed char quiet_NaN() throw() { return static_cast(0); } static signed char signaling_NaN() throw() { return static_cast(0); } static signed char denorm_min() throw() { return static_cast(0); } static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; # 1131 "/usr/local/include/g++-v3/limits" 3 template<> struct numeric_limits { static const bool is_specialized = true; static unsigned char min() throw() { return 0; } static unsigned char max() throw() { return (127 * 2 + 1); } static const int digits = 8; static const int digits10 = 2; static const bool is_signed = false; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static unsigned char epsilon() throw() { return 0; } static unsigned char round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static unsigned char infinity() throw() { return static_cast(0); } static unsigned char quiet_NaN() throw() { return static_cast(0); } static unsigned char signaling_NaN() throw() { return static_cast(0); } static unsigned char denorm_min() throw() { return static_cast(0); } static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; template<> struct numeric_limits { static const bool is_specialized = true; static wchar_t min() throw() { return (wchar_t)0UL; } static wchar_t max() throw() { return (wchar_t)(2147483647L * 2U + 1); } static const int digits = 32; static const int digits10 = 9; static const bool is_signed = false; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static wchar_t epsilon() throw() { return 0; } static wchar_t round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static wchar_t infinity() throw() { return wchar_t(); } static wchar_t quiet_NaN() throw() { return wchar_t(); } static wchar_t signaling_NaN() throw() { return wchar_t(); } static wchar_t denorm_min() throw() { return wchar_t(); } static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; # 1244 "/usr/local/include/g++-v3/limits" 3 template<> struct numeric_limits { static const bool is_specialized = true; static short min() throw() { return (-32767 - 1); } static short max() throw() { return 32767; } static const int digits = 15; static const int digits10 = 4; static const bool is_signed = true; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static short epsilon() throw() { return 0; } static short round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static short infinity() throw() { return short(); } static short quiet_NaN() throw() { return short(); } static short signaling_NaN() throw() { return short(); } static short denorm_min() throw() { return short(); } static const bool is_iec559 = true; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; # 1301 "/usr/local/include/g++-v3/limits" 3 template<> struct numeric_limits { static const bool is_specialized = true; static unsigned short min() throw() { return 0; } static unsigned short max() throw() { return (32767 * 2 + 1); } static const int digits = 16; static const int digits10 = 4; static const bool is_signed = false; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static unsigned short epsilon() throw() { return 0; } static unsigned short round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static unsigned short infinity() throw() { return static_cast(0); } static unsigned short quiet_NaN() throw() { return static_cast(0); } static unsigned short signaling_NaN() throw() { return static_cast(0); } static unsigned short denorm_min() throw() { return static_cast(0); } static const bool is_iec559 = true; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; template<> struct numeric_limits { static const bool is_specialized = true; static int min() throw() { return (int)(-2147483647L - 1); } static int max() throw() { return (int)2147483647L; } static const int digits = 31; static const int digits10 = 9; static const bool is_signed = true; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static int epsilon() throw() { return 0; } static int round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static int infinity() throw() { return static_cast(0); } static int quiet_NaN() throw() { return static_cast(0); } static int signaling_NaN() throw() { return static_cast(0); } static int denorm_min() throw() { return static_cast(0); } static const bool is_iec559 = true; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; # 1413 "/usr/local/include/g++-v3/limits" 3 template<> struct numeric_limits { static const bool is_specialized = true; static unsigned int min() throw() { return 0; } static unsigned int max() throw() { return (unsigned)(2147483647L * 2U + 1); } static const int digits = 32; static const int digits10 = 9; static const bool is_signed = false; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static unsigned int epsilon() throw() { return 0; } static unsigned int round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static unsigned int infinity() throw() { return static_cast(0); } static unsigned int quiet_NaN() throw() { return static_cast(0); } static unsigned int signaling_NaN() throw() { return static_cast(0); } static unsigned int denorm_min() throw() { return static_cast(0); } static const bool is_iec559 = true; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; template<> struct numeric_limits { static const bool is_specialized = true; static long min() throw() { return (-2147483647L - 1); } static long max() throw() { return 2147483647L; } static const int digits = 31; static const int digits10 = 9; static const bool is_signed = true; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static long epsilon() throw() { return 0; } static long round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static long infinity() throw() { return static_cast(0); } static long quiet_NaN() throw() { return static_cast(0); } static long signaling_NaN() throw() { return static_cast(0); } static long denorm_min() throw() { return static_cast(0); } static const bool is_iec559 = true; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; # 1525 "/usr/local/include/g++-v3/limits" 3 template<> struct numeric_limits { static const bool is_specialized = true; static unsigned long min() throw() { return 0; } static unsigned long max() throw() { return (2147483647L * 2U + 1); } static const int digits = 32; static const int digits10 = 9; static const bool is_signed = false; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static unsigned long epsilon() throw() { return 0; } static unsigned long round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static unsigned long infinity() throw() { return static_cast(0); } static unsigned long quiet_NaN() throw() { return static_cast(0); } static unsigned long signaling_NaN() throw() { return static_cast(0); } static unsigned long denorm_min() throw() { return static_cast(0); } static const bool is_iec559 = true; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; template<> struct numeric_limits { static const bool is_specialized = true; static long long min() throw() { return (-9223372036854775807LL - 1); } static long long max() throw() { return 9223372036854775807LL; } static const int digits = 63; static const int digits10 = 18; static const bool is_signed = true; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static long long epsilon() throw() { return 0; } static long long round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static long long infinity() throw() { return static_cast(0); } static long long quiet_NaN() throw() { return static_cast(0); } static long long signaling_NaN() throw() { return static_cast(0); } static long long denorm_min() throw() { return static_cast(0); } static const bool is_iec559 = true; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; # 1637 "/usr/local/include/g++-v3/limits" 3 template<> struct numeric_limits { static const bool is_specialized = true; static unsigned long long min() throw() { return 0; } static unsigned long long max() throw() { return (9223372036854775807LL * 2ULL + 1); } static const int digits = 64; static const int digits10 = 19; static const bool is_signed = false; static const bool is_integer = true; static const bool is_exact = true; static const int radix = 2; static unsigned long long epsilon() throw() { return 0; } static unsigned long long round_error() throw() { return 0; } static const int min_exponent = 0; static const int min_exponent10 = 0; static const int max_exponent = 0; static const int max_exponent10 = 0; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static unsigned long long infinity() throw() { return static_cast(0); } static unsigned long long quiet_NaN() throw() { return static_cast(0); } static unsigned long long signaling_NaN() throw() { return static_cast(0); } static unsigned long long denorm_min() throw() { return static_cast(0); } static const bool is_iec559 = true; static const bool is_bounded = true; static const bool is_modulo = true; static const bool traps = true; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; template<> struct numeric_limits { static const bool is_specialized = true; static float min() throw() { return 1.17549435e-38F; } static float max() throw() { return 3.40282347e+38F; } static const int digits = 24; static const int digits10 = 6; static const bool is_signed = true; static const bool is_integer = false; static const bool is_exact = false; static const int radix = 2; static float epsilon() throw() { return 1.19209290e-07F; } static float round_error() throw() { return 1.0F; } static const int min_exponent = -125; static const int min_exponent10 = -37; static const int max_exponent = 128; static const int max_exponent10 = 38; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static float infinity() throw() { return 0.0F; } static float quiet_NaN() throw() { return 0.0F; } static float signaling_NaN() throw() { return 0.0F; } static float denorm_min() throw() { return 0.0F; } static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = false; static const bool traps = false; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; # 1768 "/usr/local/include/g++-v3/limits" 3 template<> struct numeric_limits { static const bool is_specialized = true; static double min() throw() { return 2.2250738585072014e-308; } static double max() throw() { return 1.7976931348623157e+308; } static const int digits = 53; static const int digits10 = 15; static const bool is_signed = true; static const bool is_integer = false; static const bool is_exact = false; static const int radix = 2; static double epsilon() throw() { return 2.2204460492503131e-16; } static double round_error() throw() { return 1.0; } static const int min_exponent = -1021; static const int min_exponent10 = -307; static const int max_exponent = 1024; static const int max_exponent10 = 308; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static double infinity() throw() { return 0.0; } static double quiet_NaN() throw() { return 0.0; } static double signaling_NaN() throw() { return 0.0; } static double denorm_min() throw() { return 0.0; } static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = false; static const bool traps = false; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; # 1847 "/usr/local/include/g++-v3/limits" 3 template<> struct numeric_limits { static const bool is_specialized = true; static long double min() throw() { return 3.362103143112093506262677817321752603E-4932L; } static long double max() throw() { return 1.189731495357231765085759326628007016E+4932L; } static const int digits = 113; static const int digits10 = 33; static const bool is_signed = true; static const bool is_integer = false; static const bool is_exact = false; static const int radix = 2; static long double epsilon() throw() { return 1.925929944387235853055977942584927319E-34L; } static long double round_error() throw() { return 1.0L; } static const int min_exponent = -16381; static const int min_exponent10 = -4931; static const int max_exponent = 16384; static const int max_exponent10 = 4932; static const bool has_infinity = false; static const bool has_quiet_NaN = false; static const bool has_signaling_NaN = false; static const float_denorm_style has_denorm = denorm_absent; static const bool has_denorm_loss = false; static long double infinity() throw() { return 0.0L; } static long double quiet_NaN() throw() { return 0.0L; } static long double signaling_NaN() throw() { return 0.0L; } static long double denorm_min() throw() { return 0.0L; } static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = false; static const bool traps = false; static const bool tinyness_before = false; static const float_round_style round_style = round_toward_zero; }; # 1927 "/usr/local/include/g++-v3/limits" 3 } # 46 "/usr/local/include/g++-v3/istream" 2 3 namespace std { template< _CharT, _Traits> class basic_istream : virtual public basic_ios<_CharT, _Traits> { public: typedef _CharT char_type; typedef _Traits::int_type int_type; typedef _Traits::pos_type pos_type; typedef _Traits::off_type off_type; typedef _Traits traits_type; typedef basic_streambuf<_CharT, _Traits> __streambuf_type; typedef basic_ios<_CharT, _Traits> __ios_type; typedef basic_istream<_CharT, _Traits> __istream_type; typedef istreambuf_iterator<_CharT, _Traits> __istreambuf_iter; typedef num_get<_CharT, __istreambuf_iter> __numget_type; typedef ctype<_CharT> __ctype_type; protected: streamsize _M_gcount; public: explicit basic_istream(__streambuf_type* __sb) { this->init(__sb); _M_gcount = streamsize(0); } virtual ~basic_istream() { _M_gcount = streamsize(0); } class sentry; friend class sentry; __istream_type& operator>>(__istream_type& (*__pf)(__istream_type&)); __istream_type& operator>>(__ios_type& (*__pf)(__ios_type&)); __istream_type& operator>>(ios_base& (*__pf)(ios_base&)); __istream_type& operator>>(bool& __n); __istream_type& operator>>(short& __n); __istream_type& operator>>(unsigned short& __n); __istream_type& operator>>(int& __n); __istream_type& operator>>(unsigned int& __n); __istream_type& operator>>(long& __n); __istream_type& operator>>(unsigned long& __n); __istream_type& operator>>(long long& __n); __istream_type& operator>>(unsigned long long& __n); __istream_type& operator>>(float& __f); __istream_type& operator>>(double& __f); __istream_type& operator>>(long double& __f); __istream_type& operator>>(void*& __p); __istream_type& operator>>(__streambuf_type* __sb); inline streamsize gcount(void) const { return _M_gcount; } int_type get(void); __istream_type& get(char_type& __c); __istream_type& get(char_type* __s, streamsize __n, char_type __delim); inline __istream_type& get(char_type* __s, streamsize __n) { return this->get(__s, __n, this->widen('\n')); } __istream_type& get(__streambuf_type& __sb, char_type __delim); inline __istream_type& get(__streambuf_type& __sb) { return this->get(__sb, this->widen('\n')); } __istream_type& getline(char_type* __s, streamsize __n, char_type __delim); inline __istream_type& getline(char_type* __s, streamsize __n) { return this->getline(__s, __n, this->widen('\n')); } __istream_type& ignore(streamsize __n = 1, int_type __delim = traits_type::eof()); int_type peek(void); __istream_type& read(char_type* __s, streamsize __n); streamsize readsome(char_type* __s, streamsize __n); __istream_type& putback(char_type __c); __istream_type& unget(void); int sync(void); pos_type tellg(void); __istream_type& seekg(pos_type); __istream_type& seekg(off_type, ios_base::seekdir); }; template< _CharT, _Traits> class basic_istream<_CharT, _Traits>::sentry { public: typedef _Traits traits_type; typedef basic_streambuf<_CharT, _Traits> __streambuf_type; typedef basic_istream<_CharT, _Traits> __istream_type; typedef __istream_type::__ctype_type __ctype_type; typedef _Traits::int_type __int_type; explicit sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); operator bool() { return _M_ok; } private: bool _M_ok; }; template< _CharT, _Traits> basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); template basic_istream& operator>>(basic_istream& __in, unsigned char& __c) { return (__in >> reinterpret_cast(__c)); } template basic_istream& operator>>(basic_istream& __in, signed char& __c) { return (__in >> reinterpret_cast(__c)); } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s); template basic_istream& operator>>(basic_istream& __in, unsigned char* __s) { return (__in >> reinterpret_cast(__s)); } template basic_istream& operator>>(basic_istream& __in, signed char* __s) { return (__in >> reinterpret_cast(__s)); } template< _CharT, _Traits> class basic_iostream : public basic_istream<_CharT, _Traits>, public basic_ostream<_CharT, _Traits> { public: typedef basic_istream<_CharT, _Traits> __istream_type; typedef basic_ostream<_CharT, _Traits> __ostream_type; explicit basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) : __istream_type(__sb), __ostream_type(__sb) { } virtual ~basic_iostream() { } }; template< _CharT, _Traits> basic_istream<_CharT, _Traits>& ws(basic_istream<_CharT, _Traits>& __is); } # 1 "/usr/local/include/g++-v3/bits/istream.tcc" 1 3 # 36 "/usr/local/include/g++-v3/bits/istream.tcc" 3 # 1 "/usr/local/include/g++-v3/locale" 1 3 # 43 "/usr/local/include/g++-v3/locale" 3 # 1 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 1 3 # 37 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 3 # 1 "/usr/local/include/g++-v3/cerrno" 1 3 # 47 "/usr/local/include/g++-v3/cerrno" 3 # 39 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 2 3 # 1 "/usr/local/include/g++-v3/cmath" 1 3 # 48 "/usr/local/include/g++-v3/cmath" 3 # 1 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 1 3 4 # 26 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 extern "C" { # 50 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 #pragma builtin acos, asin, atan, atan2, cos, sin, tan, cosh, sinh, tanh, exp, ldexp, log, log10, modf, pow, sqrt, ceil, fabs, floor, fmod extern double acos(double); extern double asin(double); extern double atan(double); extern double atan2(double, double); extern double cos(double); extern double sin(double); extern double tan(double); extern double cosh(double); extern double sinh(double); extern double tanh(double); extern double exp(double); extern double frexp(double, int *); extern double ldexp(double, int); extern double log(double); extern double log10(double); extern double modf(double, double *); extern double pow(double, double); extern double sqrt(double); extern double ceil(double); extern double fabs(double); extern double floor(double); extern double fmod(double, double); #pragma builtin acosf, asinf, atanf, atan2f, cosf, sinf, tanf, coshf, sinhf, tanhf, expf, ldexpf, logf, log10f, modff, powf, sqrtf, ceilf, fabsf, floorf, fmodf extern float acosf(float); extern float asinf(float); extern float atanf(float); extern float atan2f(float, float); extern float cosf(float); extern float sinf(float); extern float tanf(float); extern float coshf(float); extern float sinhf(float); extern float tanhf(float); extern float expf(float); extern float frexpf(float, int *); extern float ldexpf(float, int); extern float logf(float); extern float log10f(float); extern float modff(float, float *); extern float powf(float, float); extern float sqrtf(float); extern float ceilf(float); extern float fabsf(float); extern float floorf(float); extern float fmodf(float, float); #pragma builtin acosl, asinl, atanl, atan2l, cosl, sinl, tanl, coshl, sinhl, tanhl, expl, ldexpl, logl, log10l, modfl, powl, sqrtl, ceill, fabsl, floorl, fmodl extern long double acosl(long double); extern long double asinl(long double); extern long double atanl(long double); extern long double atan2l(long double, long double); extern long double cosl(long double); extern long double sinl(long double); extern long double tanl(long double); extern long double coshl(long double); extern long double sinhl(long double); extern long double tanhl(long double); extern long double expl(long double); extern long double frexpl(long double, int *); extern long double ldexpl(long double, int); extern long double logl(long double); extern long double log10l(long double); extern long double modfl(long double, long double *); extern long double powl(long double, long double); extern long double sqrtl(long double); extern long double ceill(long double); extern long double fabsl(long double); extern long double floorl(long double); extern long double fmodl(long double, long double); # 178 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 extern int signgam; # 189 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 #pragma builtin erf, erfc, gamma, hypot, isnan, j0, j1, jn, lgamma, y0, y1, yn extern double erf(double); extern double erfc(double); extern double gamma(double); extern double hypot(double, double); extern int isnan(double); extern double j0(double); extern double j1(double); extern double jn(int, double); extern double lgamma(double); extern double y0(double); extern double y1(double); extern double yn(int, double); # 226 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 #pragma builtin acosh, asinh, atanh, cbrt, expm1, ilogb, log1p, logb, nextafter, remainder, rint, scalb extern double acosh(double); extern double asinh(double); extern double atanh(double); extern double cbrt(double); extern double expm1(double); extern int ilogb(double); extern double log1p(double); extern double logb(double); extern double nextafter(double, double); extern double remainder(double, double); extern double rint(double); extern double scalb(double,double); # 267 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 typedef float float_t; typedef double double_t; # 377 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 #pragma builtin copysign, log2, exp2, fdim, fmax, fmin, nan, scalbn, nearbyint, round, trunc, lrint, lround, _iround, cosd, sind, tand, exp10, pown, compound, annuity, fma, scalbln, tgamma, nexttoward, acosd, asind, atand, atan2d, _iceil, _ifloor, rsqrt #pragma builtin llrint, llround, powlln, _llceil, _llfloor extern double copysign(double, double); extern double log2(double); extern double lgamma_r(double, int *); extern double exp2(double); extern double fdim(double, double); extern double fmax(double, double); extern double fmin(double, double); extern double nan(const char *); extern double scalbn(double, int); extern double nearbyint(double); extern double round(double); extern double trunc(double); extern double remquo(double, double, int *); extern long lrint(double); extern long lround(double); extern long long llrint(double); extern long long llround(double); extern double cosd(double); extern double sind(double); extern double tand(double); extern double exp10(double); extern double pown(double, int); extern int _iround(double); extern int _iceil(double); extern int _ifloor(double); extern double powlln(double, long long); extern long long _llceil(double); extern long long _llfloor(double); extern double compound(double, double); extern double annuity(double, double); extern double fma(double, double, double); extern double scalbln(double, long); extern double tgamma(double); extern double nexttoward(double, long double); extern double rsqrt(double); extern double acosd(double); extern double asind(double); extern double atand(double); extern double atan2d(double, double); # 455 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 #pragma builtin cbrtf, copysignf, nextafterf, log2f, cosdf, sindf, tandf, acosdf, asindf, atandf, atan2df, exp2f, exp10f, expm1f, log1pf, pownf, fmaf, acoshf, asinhf, atanhf, logbf, scalbf, scalbnf, scalblnf, ilogbf, hypotf, compoundf, annuityf, erff, erfcf, gammaf, lgammaf, tgammaf, nearbyintf, rintf, roundf, lrintf, lroundf, _iroundf, truncf, nanf, remainderf, fdimf, fmaxf, fminf, nexttowardf, _iceilf, _ifloorf, rsqrtf # 465 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 #pragma builtin powllnf, llrintf, llroundf, _llceilf, _llfloorf extern float cbrtf(float); extern float copysignf(float, float); extern float nextafterf(float, float); extern float log2f(float); extern float cosdf(float); extern float sindf(float); extern float tandf(float); extern float acosdf(float); extern float asindf(float); extern float atandf(float); extern float atan2df(float, float); extern float exp2f(float); extern float exp10f(float); extern float expm1f(float); extern float log1pf(float); extern float pownf(float, int); extern float powllnf(float, long long); extern float fmaf(float, float, float); extern float acoshf(float); extern float asinhf(float); extern float atanhf(float); extern float logbf(float); extern float scalbf(float, float); extern float scalbnf(float, int); extern float scalblnf(float, long); extern int ilogbf(float); extern float hypotf(float, float); extern float compoundf(float, float); extern float annuityf(float, float); extern float erff(float); extern float erfcf(float); extern float gammaf(float); extern float lgammaf(float); extern float lgammaf_r(float, int *); extern float tgammaf(float); extern float nearbyintf(float); extern float rintf(float); extern float roundf(float); extern long lrintf(float); extern long lroundf(float); extern int _iroundf(float); extern int _iceilf(float); extern int _ifloorf(float); extern long long llrintf(float); extern long long llroundf(float); extern long long _llceilf(float); extern long long _llfloorf(float); extern float truncf(float); extern float nanf(const char *); extern float remainderf(float, float); extern float remquof(float, float, int *); extern float fdimf(float, float); extern float fmaxf(float, float); extern float fminf(float, float); extern float nexttowardf(float, long double); extern float rsqrtf(float); # 632 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 #pragma builtin acosdl, asindl, atandl, atan2dl, acoshl, asinhl, atanhl, cosdl, sindl, tandl, exp2l, exp10l, expm1l, log2l, log1pl, logbl, scalbl, scalbnl, scalblnl, ilogbl, fabsl, pownl, hypotl, cbrtl, compoundl, annuityl, erfl, erfcl, gammal, lgammal, tgammal, nearbyintl, rintl, roundl, lrintl, lroundl, _iroundl, truncl, nanl, remainderl, copysignl, nextafterl, nexttowardl, fdiml, fmaxl, fminl, fmal, _iceill, _ifloorl, rsqrtl # 642 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 #pragma builtin powllnl, llrintl, llroundl, _llceill, _llfloorl extern long double acosdl(long double); extern long double asindl(long double); extern long double atandl(long double); extern long double atan2dl(long double, long double); extern long double acoshl(long double); extern long double asinhl(long double); extern long double atanhl(long double); extern long double cosdl(long double); extern long double sindl(long double); extern long double tandl(long double); extern long double exp2l(long double); extern long double exp10l(long double); extern long double expm1l(long double); extern long double log2l(long double); extern long double log1pl(long double); extern long double logbl(long double); extern long double scalbl(long double, long double); extern long double scalbnl(long double, int); extern long double scalblnl(long double, long); extern int ilogbl(long double); extern long double pownl(long double, int); extern long double powllnl(long double, long long); extern long double hypotl(long double, long double); extern long double cbrtl(long double); extern long double compoundl(long double, long double); extern long double annuityl(long double, long double); extern long double erfl(long double); extern long double erfcl(long double); extern long double gammal(long double); extern long double lgammal(long double); extern long double lgammal_r(long double, int *); extern long double tgammal(long double); extern long double nearbyintl(long double); extern long double rintl(long double); extern long double roundl(long double); extern long lrintl(long double); extern long lroundl(long double); extern int _iroundl(long double); extern int _iceill(long double); extern int _ifloorl(long double); extern long long llrintl(long double); extern long long llroundl(long double); extern long long _llceill(long double); extern long long _llfloorl(long double); extern long double truncl(long double); extern long double nanl(const char *); extern long double remainderl(long double, long double); extern long double remquol(long double, long double, int *); extern long double copysignl(long double, long double); extern long double nextafterl(long double, long double); extern long double nexttowardl(long double, long double); extern long double fdiml(long double, long double); extern long double fmaxl(long double, long double); extern long double fminl(long double, long double); extern long double fmal(long double, long double, long double); extern long double rsqrtl(long double); # 845 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 #pragma extern _DINFINITY extern const double _DINFINITY; # 882 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 #pragma extern _SINFINITY, _LINFINITY, _WINFINITY, _SQNAN extern const float _SINFINITY; extern const long double _LINFINITY; #pragma builtin _pown, _pownf, _pownl extern double _pown(double,int); extern float _pownf(float,int); extern long double _pownl(long double,int); #pragma builtin _powlln, _powllnf, _powllnl extern double _powlln(double,long long); extern float _powllnf(float,long long); extern long double _powllnl(long double,long long); # 911 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 extern const float _SQNAN; # 1089 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 extern int _Isfinite(double); extern int _Isinf(double); extern int _Isnormal(double); extern int _Signbit(double); extern int _Isunordered(double, double); extern int _Isless(double, double); extern int _Islessequal(double, double); extern int _Isgreater(double, double); extern int _Isgreaterequal(double, double); extern int _Isnanf(float); extern int _Isfinitef(float); extern int _Isinff(float); extern int _Isnormalf(float); extern int _Signbitf(float); extern int _Isunorderedf(float, float); extern int _Islessf(float, float); extern int _Islessequalf(float, float); extern int _Isgreaterf(float, float); extern int _Isgreaterequalf(float, float); extern int _Islessgreater(double, double); extern int _Islessgreaterf(float, float); extern int _Fpclass(double); extern int _Fpclassf(float); # 1152 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 extern int _Isnanf128(long double); extern int _Isfinitef128(long double); extern int _Isinff128(long double); extern int _Isnormalf128(long double); extern int _Signbitf128(long double); extern int _Isunorderedf128(long double,long double); extern int _Islessf128(long double,long double); extern int _Islessequalf128(long double,long double); extern int _Isgreaterf128(long double,long double); extern int _Isgreaterequalf128(long double,long double); extern int _Islessgreaterf128(long double,long double); extern int _Fpclassf128(long double); # 1211 "/usr/local/lib/gcc-lib/ia64-hp-hpux11.22/3.2/include/math.h" 3 4 } # 52 "/usr/local/include/g++-v3/cmath" 2 3 # 79 "/usr/local/include/g++-v3/cmath" 3 namespace std { template< _Tp> _Tp __cmath_power(_Tp, unsigned int); template< _Tp> inline _Tp __cmath_abs(_Tp __x) { return __x < _Tp() ? -__x : __x; } inline float abs(float __x) { return __builtin_fabsf(__x); } inline double abs(double __x) { return __builtin_fabs(__x); } inline long double abs(long double __x) { return __builtin_fabsl(__x); } inline float acos(float __x) { return ::acosf(__x); } using ::acos; inline long double acos(long double __x) { return ::acosl(__x); } inline float asin(float __x) { return ::asinf(__x); } using ::asin; inline long double asin(long double __x) { return ::asinl(__x); } inline float atan(float __x) { return ::atanf(__x); } using ::atan; inline long double atan(long double __x) { return ::atanl(__x); } inline float atan2(float __y, float __x) { return ::atan2f(__y, __x); } using ::atan2; inline long double atan2(long double __y, long double __x) { return ::atan2l(__y, __x); } inline float ceil(float __x) { return ::ceilf(__x); } using ::ceil; inline long double ceil(long double __x) { return ::ceill(__x); } inline float cos(float __x) { return __builtin_cosf(__x); } using ::cos; inline long double cos(long double __x) { return __builtin_cosl(__x); } inline float cosh(float __x) { return ::coshf(__x); } using ::cosh; inline long double cosh(long double __x) { return ::coshl(__x); } inline float exp(float __x) { return ::expf(__x); } using ::exp; inline long double exp(long double __x) { return ::expl(__x); } inline float fabs(float __x) { return __builtin_fabsf(__x); } using ::fabs; inline long double fabs(long double __x) { return __builtin_fabsl(__x); } inline float floor(float __x) { return ::floorf(__x); } using ::floor; inline long double floor(long double __x) { return ::floorl(__x); } inline float fmod(float __x, float __y) { return ::fmodf(__x, __y); } using ::fmod; inline long double fmod(long double __x, long double __y) { return ::fmodl(__x, __y); } inline float frexp(float __x, int* __exp) { return ::frexpf(__x, __exp); } using ::frexp; inline long double frexp(long double __x, int* __exp) { return ::frexpl(__x, __exp); } inline float ldexp(float __x, int __exp) { return ::ldexpf(__x, __exp); } using ::ldexp; inline long double ldexp(long double __x, int __exp) { return ::ldexpl(__x, __exp); } inline float log(float __x) { return ::logf(__x); } using ::log; inline long double log(long double __x) { return ::logl(__x); } inline float log10(float __x) { return ::log10f(__x); } using ::log10; inline long double log10(long double __x) { return ::log10l(__x); } inline float modf(float __x, float* __iptr) { return ::modff(__x, __iptr); } # 379 "/usr/local/include/g++-v3/cmath" 3 using ::modf; inline long double modf(long double __x, long double* __iptr) { return ::modfl(__x, __iptr); } # 395 "/usr/local/include/g++-v3/cmath" 3 template< _Tp> inline _Tp __pow_helper(_Tp __x, int __n) { return __n < 0 ? _Tp(1)/__cmath_power(__x, -__n) : __cmath_power(__x, __n); } inline float pow(float __x, float __y) { return ::powf(__x, __y); } using ::pow; inline long double pow(long double __x, long double __y) { return ::powl(__x, __y); } inline float pow(float __x, int __n) { return __pow_helper(__x, __n); } inline double pow(double __x, int __i) { return __pow_helper(__x, __i); } inline long double pow(long double __x, int __n) { return __pow_helper(__x, __n); } inline float sin(float __x) { return __builtin_sinf(__x); } using ::sin; inline long double sin(long double __x) { return __builtin_sinl(__x); } inline float sinh(float __x) { return ::sinhf(__x); } using ::sinh; inline long double sinh(long double __x) { return ::sinhl(__x); } inline float sqrt(float __x) { return __builtin_sqrtf(__x); } using ::sqrt; inline long double sqrt(long double __x) { return __builtin_sqrtl(__x); } inline float tan(float __x) { return ::tanf(__x); } using ::tan; inline long double tan(long double __x) { return ::tanl(__x); } inline float tanh(float __x) { return ::tanhf(__x); } using ::tanh; inline long double tanh(long double __x) { return ::tanhl(__x); } } # 661 "/usr/local/include/g++-v3/cmath" 3 # 1 "/usr/local/include/g++-v3/bits/cmath.tcc" 1 3 # 35 "/usr/local/include/g++-v3/bits/cmath.tcc" 3 namespace std { template< _Tp> _Tp __cmath_power(_Tp __x, unsigned int __n) { _Tp __y = __n % 2 ? __x : 1; while (__n >>= 1) { __x = __x * __x; if (__n % 2) __y = __y * __x; } return __y; } } # 662 "/usr/local/include/g++-v3/cmath" 2 3 # 42 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 2 3 # 1 "/usr/local/include/g++-v3/vector" 1 3 # 65 "/usr/local/include/g++-v3/vector" 3 # 1 "/usr/local/include/g++-v3/bits/functexcept.h" 1 3 # 34 "/usr/local/include/g++-v3/bits/functexcept.h" 3 # 1 "/usr/local/include/g++-v3/exception_defines.h" 1 3 # 35 "/usr/local/include/g++-v3/bits/functexcept.h" 2 3 namespace std { void __throw_bad_exception(void); void __throw_bad_alloc(void); void __throw_bad_cast(void); void __throw_bad_typeid(void); void __throw_logic_error(const char* __s); void __throw_domain_error(const char* __s); void __throw_invalid_argument(const char* __s); void __throw_length_error(const char* __s); void __throw_out_of_range(const char* __s); void __throw_runtime_error(const char* __s); void __throw_range_error(const char* __s); void __throw_overflow_error(const char* __s); void __throw_underflow_error(const char* __s); void __throw_ios_failure(const char* __s); } # 67 "/usr/local/include/g++-v3/vector" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_vector.h" 1 3 # 65 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 # 1 "/usr/local/include/g++-v3/bits/functexcept.h" 1 3 # 34 "/usr/local/include/g++-v3/bits/functexcept.h" 3 # 1 "/usr/local/include/g++-v3/exception_defines.h" 1 3 # 35 "/usr/local/include/g++-v3/bits/functexcept.h" 2 3 namespace std { void __throw_bad_exception(void); void __throw_bad_alloc(void); void __throw_bad_cast(void); void __throw_bad_typeid(void); void __throw_logic_error(const char* __s); void __throw_domain_error(const char* __s); void __throw_invalid_argument(const char* __s); void __throw_length_error(const char* __s); void __throw_out_of_range(const char* __s); void __throw_runtime_error(const char* __s); void __throw_range_error(const char* __s); void __throw_overflow_error(const char* __s); void __throw_underflow_error(const char* __s); void __throw_ios_failure(const char* __s); } # 66 "/usr/local/include/g++-v3/bits/stl_vector.h" 2 3 namespace std { # 78 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 template class _Vector_alloc_base { public: typedef _Alloc_traits<_Tp, _Allocator>::allocator_type allocator_type; allocator_type get_allocator() const { return _M_data_allocator; } _Vector_alloc_base(const allocator_type& __a) : _M_data_allocator(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0) {} protected: allocator_type _M_data_allocator; _Tp* _M_start; _Tp* _M_finish; _Tp* _M_end_of_storage; _Tp* _M_allocate(size_t __n) { return _M_data_allocator.allocate(__n); } void _M_deallocate(_Tp* __p, size_t __n) { if (__p) _M_data_allocator.deallocate(__p, __n); } }; template class _Vector_alloc_base<_Tp, _Allocator, true> { public: typedef _Alloc_traits<_Tp, _Allocator>::allocator_type allocator_type; allocator_type get_allocator() const { return allocator_type(); } _Vector_alloc_base(const allocator_type&) : _M_start(0), _M_finish(0), _M_end_of_storage(0) {} protected: _Tp* _M_start; _Tp* _M_finish; _Tp* _M_end_of_storage; typedef _Alloc_traits<_Tp, _Allocator>::_Alloc_type _Alloc_type; _Tp* _M_allocate(size_t __n) { return _Alloc_type::allocate(__n); } void _M_deallocate(_Tp* __p, size_t __n) { _Alloc_type::deallocate(__p, __n);} }; template struct _Vector_base : public _Vector_alloc_base<_Tp, _Alloc, _Alloc_traits<_Tp, _Alloc>::_S_instanceless> { typedef _Vector_alloc_base<_Tp, _Alloc, _Alloc_traits<_Tp, _Alloc>::_S_instanceless> _Base; typedef _Base::allocator_type allocator_type; _Vector_base(const allocator_type& __a) : _Base(__a) {} _Vector_base(size_t __n, const allocator_type& __a) : _Base(__a) { _M_start = _M_allocate(__n); _M_finish = _M_start; _M_end_of_storage = _M_start + __n; } ~_Vector_base() { _M_deallocate(_M_start, _M_end_of_storage - _M_start); } }; # 165 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 template > class vector : protected _Vector_base<_Tp, _Alloc> { private: typedef _Vector_base<_Tp, _Alloc> _Base; typedef vector<_Tp, _Alloc> vector_type; public: typedef _Tp value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef __normal_iterator iterator; typedef __normal_iterator const_iterator; typedef value_type& reference; typedef const value_type& const_reference; typedef size_t size_type; typedef ptrdiff_t difference_type; typedef _Base::allocator_type allocator_type; allocator_type get_allocator() const { return _Base::get_allocator(); } typedef reverse_iterator const_reverse_iterator; typedef reverse_iterator reverse_iterator; protected: using _Base::_M_allocate; using _Base::_M_deallocate; using _Base::_M_start; using _Base::_M_finish; using _Base::_M_end_of_storage; protected: void _M_insert_aux(iterator __position, const _Tp& __x); void _M_insert_aux(iterator __position); public: iterator begin() { return iterator (_M_start); } const_iterator begin() const { return const_iterator (_M_start); } iterator end() { return iterator (_M_finish); } const_iterator end() const { return const_iterator (_M_finish); } reverse_iterator rbegin() { return reverse_iterator(end()); } const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } reverse_iterator rend() { return reverse_iterator(begin()); } const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } size_type size() const { return size_type(end() - begin()); } size_type max_size() const { return size_type(-1) / sizeof(_Tp); } size_type capacity() const { return size_type(const_iterator(_M_end_of_storage) - begin()); } bool empty() const { return begin() == end(); } # 288 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 reference operator[](size_type __n) { return *(begin() + __n); } # 299 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 const_reference operator[](size_type __n) const { return *(begin() + __n); } void _M_range_check(size_type __n) const { if (__n >= this->size()) __throw_out_of_range("vector"); } # 315 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 reference at(size_type __n) { _M_range_check(__n); return (*this)[__n]; } # 327 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 const_reference at(size_type __n) const { _M_range_check(__n); return (*this)[__n]; } explicit vector(const allocator_type& __a = allocator_type()) : _Base(__a) {} vector(size_type __n, const _Tp& __value, const allocator_type& __a = allocator_type()) : _Base(__n, __a) { _M_finish = uninitialized_fill_n(_M_start, __n, __value); } explicit vector(size_type __n) : _Base(__n, allocator_type()) { _M_finish = uninitialized_fill_n(_M_start, __n, _Tp()); } vector(const vector<_Tp, _Alloc>& __x) : _Base(__x.size(), __x.get_allocator()) { _M_finish = uninitialized_copy(__x.begin(), __x.end(), _M_start); } template vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a = allocator_type()) : _Base(__a) { typedef _Is_integer<_InputIterator>::_Integral _Integral; _M_initialize_aux(__first, __last, _Integral()); } template void _M_initialize_aux(_Integer __n, _Integer __value, __true_type) { _M_start = _M_allocate(__n); _M_end_of_storage = _M_start + __n; _M_finish = uninitialized_fill_n(_M_start, __n, __value); } template void _M_initialize_aux(_InputIterator __first, _InputIterator __last, __false_type) { typedef iterator_traits<_InputIterator>::iterator_category _IterCategory; _M_range_initialize(__first, __last, _IterCategory()); } ~vector() { _Destroy(_M_start, _M_finish); } vector<_Tp, _Alloc>& operator=(const vector<_Tp, _Alloc>& __x); # 392 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 void reserve(size_type __n) { if (capacity() < __n) { const size_type __old_size = size(); pointer __tmp = _M_allocate_and_copy(__n, _M_start, _M_finish); _Destroy(_M_start, _M_finish); _M_deallocate(_M_start, _M_end_of_storage - _M_start); _M_start = __tmp; _M_finish = __tmp + __old_size; _M_end_of_storage = _M_start + __n; } } # 420 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 void assign(size_type __n, const _Tp& __val) { _M_fill_assign(__n, __val); } void _M_fill_assign(size_type __n, const _Tp& __val); template void assign(_InputIterator __first, _InputIterator __last) { typedef _Is_integer<_InputIterator>::_Integral _Integral; _M_assign_dispatch(__first, __last, _Integral()); } template void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) { _M_fill_assign((size_type) __n, (_Tp) __val); } template void _M_assign_dispatch(_InputIter __first, _InputIter __last, __false_type) { typedef iterator_traits<_InputIter>::iterator_category _IterCategory; _M_assign_aux(__first, __last, _IterCategory()); } template void _M_assign_aux(_InputIterator __first, _InputIterator __last, input_iterator_tag); template void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, forward_iterator_tag); reference front() { return *begin(); } const_reference front() const { return *begin(); } reference back() { return *(end() - 1); } const_reference back() const { return *(end() - 1); } # 485 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 void push_back(const _Tp& __x) { if (_M_finish != _M_end_of_storage) { _Construct(_M_finish, __x); ++_M_finish; } else _M_insert_aux(end(), __x); } # 516 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 void swap(vector<_Tp, _Alloc>& __x) { std::swap(_M_start, __x._M_start); std::swap(_M_finish, __x._M_finish); std::swap(_M_end_of_storage, __x._M_end_of_storage); } # 535 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 iterator insert(iterator __position, const _Tp& __x) { size_type __n = __position - begin(); if (_M_finish != _M_end_of_storage && __position == end()) { _Construct(_M_finish, __x); ++_M_finish; } else _M_insert_aux(iterator(__position), __x); return begin() + __n; } # 559 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 iterator insert(iterator __position) { size_type __n = __position - begin(); if (_M_finish != _M_end_of_storage && __position == end()) { _Construct(_M_finish); ++_M_finish; } else _M_insert_aux(iterator(__position)); return begin() + __n; } template void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { typedef _Is_integer<_InputIterator>::_Integral _Integral; _M_insert_dispatch(__pos, __first, __last, _Integral()); } template void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, __true_type) { _M_fill_insert(__pos, static_cast(__n), static_cast<_Tp>(__val)); } template void _M_insert_dispatch(iterator __pos, _InputIterator __first, _InputIterator __last, __false_type) { typedef iterator_traits<_InputIterator>::iterator_category _IterCategory; _M_range_insert(__pos, __first, __last, _IterCategory()); } # 609 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 void insert (iterator __pos, size_type __n, const _Tp& __x) { _M_fill_insert(__pos, __n, __x); } void _M_fill_insert (iterator __pos, size_type __n, const _Tp& __x); # 623 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 void pop_back() { --_M_finish; _Destroy(_M_finish); } # 642 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 iterator erase(iterator __position) { if (__position + 1 != end()) copy(__position + 1, end(), __position); --_M_finish; _Destroy(_M_finish); return __position; } # 665 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 iterator erase(iterator __first, iterator __last) { iterator __i(copy(__last, end(), __first)); _Destroy(__i, end()); _M_finish = _M_finish - (__last - __first); return __first; } # 682 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 void resize(size_type __new_size, const _Tp& __x) { if (__new_size < size()) erase(begin() + __new_size, end()); else insert(end(), __new_size - size(), __x); } # 698 "/usr/local/include/g++-v3/bits/stl_vector.h" 3 void resize(size_type __new_size) { resize(__new_size, _Tp()); } void clear() { erase(begin(), end()); } protected: template pointer _M_allocate_and_copy(size_type __n, _ForwardIterator __first, _ForwardIterator __last) { pointer __result = _M_allocate(__n); try { uninitialized_copy(__first, __last, __result); return __result; } catch(...) { _M_deallocate(__result, __n); throw; } } template void _M_range_initialize(_InputIterator __first, _InputIterator __last, input_iterator_tag) { for ( ; __first != __last; ++__first) push_back(*__first); } template void _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, forward_iterator_tag) { size_type __n = distance(__first, __last); _M_start = _M_allocate(__n); _M_end_of_storage = _M_start + __n; _M_finish = uninitialized_copy(__first, __last, _M_start); } template void _M_range_insert(iterator __pos, _InputIterator __first, _InputIterator __last, input_iterator_tag); template void _M_range_insert(iterator __pos, _ForwardIterator __first, _ForwardIterator __last, forward_iterator_tag); }; template inline bool operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) { return __x.size() == __y.size() && equal(__x.begin(), __x.end(), __y.begin()); } template inline bool operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) { return lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end()); } template inline void swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) { __x.swap(__y); } template inline bool operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) { return !(__x == __y); } template inline bool operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) { return __y < __x; } template inline bool operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) { return !(__y < __x); } template inline bool operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) { return !(__x < __y); } template vector<_Tp,_Alloc>& vector<_Tp,_Alloc>::operator=(const vector<_Tp, _Alloc>& __x) { if (&__x != this) { const size_type __xlen = __x.size(); if (__xlen > capacity()) { pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), __x.end()); _Destroy(_M_start, _M_finish); _M_deallocate(_M_start, _M_end_of_storage - _M_start); _M_start = __tmp; _M_end_of_storage = _M_start + __xlen; } else if (size() >= __xlen) { iterator __i(copy(__x.begin(), __x.end(), begin())); _Destroy(__i, end()); } else { copy(__x.begin(), __x.begin() + size(), _M_start); uninitialized_copy(__x.begin() + size(), __x.end(), _M_finish); } _M_finish = _M_start + __xlen; } return *this; } template void vector<_Tp, _Alloc>::_M_fill_assign(size_t __n, const value_type& __val) { if (__n > capacity()) { vector<_Tp, _Alloc> __tmp(__n, __val, get_allocator()); __tmp.swap(*this); } else if (__n > size()) { fill(begin(), end(), __val); _M_finish = uninitialized_fill_n(_M_finish, __n - size(), __val); } else erase(fill_n(begin(), __n, __val), end()); } template template void vector<_Tp, _Alloc>::_M_assign_aux(_InputIter __first, _InputIter __last, input_iterator_tag) { iterator __cur(begin()); for ( ; __first != __last && __cur != end(); ++__cur, ++__first) *__cur = *__first; if (__first == __last) erase(__cur, end()); else insert(end(), __first, __last); } template template void vector<_Tp, _Alloc>::_M_assign_aux(_ForwardIter __first, _ForwardIter __last, forward_iterator_tag) { size_type __len = distance(__first, __last); if (__len > capacity()) { pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); _Destroy(_M_start, _M_finish); _M_deallocate(_M_start, _M_end_of_storage - _M_start); _M_start = __tmp; _M_end_of_storage = _M_finish = _M_start + __len; } else if (size() >= __len) { iterator __new_finish(copy(__first, __last, _M_start)); _Destroy(__new_finish, end()); _M_finish = __new_finish.base(); } else { _ForwardIter __mid = __first; advance(__mid, size()); copy(__first, __mid, _M_start); _M_finish = uninitialized_copy(__mid, __last, _M_finish); } } template void vector<_Tp, _Alloc>::_M_insert_aux(iterator __position, const _Tp& __x) { if (_M_finish != _M_end_of_storage) { _Construct(_M_finish, *(_M_finish - 1)); ++_M_finish; _Tp __x_copy = __x; copy_backward(__position, iterator(_M_finish - 2), iterator(_M_finish- 1)); *__position = __x_copy; } else { const size_type __old_size = size(); const size_type __len = __old_size != 0 ? 2 * __old_size : 1; iterator __new_start(_M_allocate(__len)); iterator __new_finish(__new_start); try { __new_finish = uninitialized_copy(iterator(_M_start), __position, __new_start); _Construct(__new_finish.base(), __x); ++__new_finish; __new_finish = uninitialized_copy(__position, iterator(_M_finish), __new_finish); } catch(...) { _Destroy(__new_start,__new_finish); _M_deallocate(__new_start.base(),__len); throw; } _Destroy(begin(), end()); _M_deallocate(_M_start, _M_end_of_storage - _M_start); _M_start = __new_start.base(); _M_finish = __new_finish.base(); _M_end_of_storage = __new_start.base() + __len; } } template void vector<_Tp, _Alloc>::_M_insert_aux(iterator __position) { if (_M_finish != _M_end_of_storage) { _Construct(_M_finish, *(_M_finish - 1)); ++_M_finish; copy_backward(__position, iterator(_M_finish - 2), iterator(_M_finish - 1)); *__position = _Tp(); } else { const size_type __old_size = size(); const size_type __len = __old_size != 0 ? 2 * __old_size : 1; pointer __new_start = _M_allocate(__len); pointer __new_finish = __new_start; try { __new_finish = uninitialized_copy(iterator(_M_start), __position, __new_start); _Construct(__new_finish); ++__new_finish; __new_finish = uninitialized_copy(__position, iterator(_M_finish), __new_finish); } catch(...) { _Destroy(__new_start,__new_finish); _M_deallocate(__new_start,__len); throw; } _Destroy(begin(), end()); _M_deallocate(_M_start, _M_end_of_storage - _M_start); _M_start = __new_start; _M_finish = __new_finish; _M_end_of_storage = __new_start + __len; } } template void vector<_Tp, _Alloc>::_M_fill_insert(iterator __position, size_type __n, const _Tp& __x) { if (__n != 0) { if (size_type(_M_end_of_storage - _M_finish) >= __n) { _Tp __x_copy = __x; const size_type __elems_after = end() - __position; iterator __old_finish(_M_finish); if (__elems_after > __n) { uninitialized_copy(_M_finish - __n, _M_finish, _M_finish); _M_finish += __n; copy_backward(__position, __old_finish - __n, __old_finish); fill(__position, __position + __n, __x_copy); } else { uninitialized_fill_n(_M_finish, __n - __elems_after, __x_copy); _M_finish += __n - __elems_after; uninitialized_copy(__position, __old_finish, _M_finish); _M_finish += __elems_after; fill(__position, __old_finish, __x_copy); } } else { const size_type __old_size = size(); const size_type __len = __old_size + max(__old_size, __n); iterator __new_start(_M_allocate(__len)); iterator __new_finish(__new_start); try { __new_finish = uninitialized_copy(begin(), __position, __new_start); __new_finish = uninitialized_fill_n(__new_finish, __n, __x); __new_finish = uninitialized_copy(__position, end(), __new_finish); } catch(...) { _Destroy(__new_start,__new_finish); _M_deallocate(__new_start.base(),__len); throw; } _Destroy(_M_start, _M_finish); _M_deallocate(_M_start, _M_end_of_storage - _M_start); _M_start = __new_start.base(); _M_finish = __new_finish.base(); _M_end_of_storage = __new_start.base() + __len; } } } template template void vector<_Tp, _Alloc>::_M_range_insert(iterator __pos, _InputIterator __first, _InputIterator __last, input_iterator_tag) { for ( ; __first != __last; ++__first) { __pos = insert(__pos, *__first); ++__pos; } } template template void vector<_Tp, _Alloc>::_M_range_insert(iterator __position, _ForwardIterator __first, _ForwardIterator __last, forward_iterator_tag) { if (__first != __last) { size_type __n = distance(__first, __last); if (size_type(_M_end_of_storage - _M_finish) >= __n) { const size_type __elems_after = end() - __position; iterator __old_finish(_M_finish); if (__elems_after > __n) { uninitialized_copy(_M_finish - __n, _M_finish, _M_finish); _M_finish += __n; copy_backward(__position, __old_finish - __n, __old_finish); copy(__first, __last, __position); } else { _ForwardIterator __mid = __first; advance(__mid, __elems_after); uninitialized_copy(__mid, __last, _M_finish); _M_finish += __n - __elems_after; uninitialized_copy(__position, __old_finish, _M_finish); _M_finish += __elems_after; copy(__first, __mid, __position); } } else { const size_type __old_size = size(); const size_type __len = __old_size + max(__old_size, __n); iterator __new_start(_M_allocate(__len)); iterator __new_finish(__new_start); try { __new_finish = uninitialized_copy(iterator(_M_start), __position, __new_start); __new_finish = uninitialized_copy(__first, __last, __new_finish); __new_finish = uninitialized_copy(__position, iterator(_M_finish), __new_finish); } catch(...) { _Destroy(__new_start,__new_finish); _M_deallocate(__new_start.base(), __len); throw; } _Destroy(_M_start, _M_finish); _M_deallocate(_M_start, _M_end_of_storage - _M_start); _M_start = __new_start.base(); _M_finish = __new_finish.base(); _M_end_of_storage = __new_start.base() + __len; } } } } # 72 "/usr/local/include/g++-v3/vector" 2 3 # 1 "/usr/local/include/g++-v3/bits/stl_bvector.h" 1 3 # 64 "/usr/local/include/g++-v3/bits/stl_bvector.h" 3 namespace std { typedef unsigned long _Bit_type; enum { _M_word_bit = int(8 * sizeof(_Bit_type)) }; struct _Bit_reference { _Bit_type * _M_p; _Bit_type _M_mask; _Bit_reference(_Bit_type * __x, _Bit_type __y) : _M_p(__x), _M_mask(__y) {} public: _Bit_reference() : _M_p(0), _M_mask(0) {} operator bool() const { return !!(*_M_p & _M_mask); } _Bit_reference& operator=(bool __x) { if (__x) *_M_p |= _M_mask; else *_M_p &= ~_M_mask; return *this; } _Bit_reference& operator=(const _Bit_reference& __x) { return *this = bool(__x); } bool operator==(const _Bit_reference& __x) const { return bool(*this) == bool(__x); } bool operator<(const _Bit_reference& __x) const { return !bool(*this) && bool(__x); } void flip() { *_M_p ^= _M_mask; } }; inline void swap(_Bit_reference __x, _Bit_reference __y) { bool __tmp = __x; __x = __y; __y = __tmp; } struct _Bit_iterator_base : public iterator { _Bit_type * _M_p; unsigned int _M_offset; _Bit_iterator_base(_Bit_type * __x, unsigned int __y) : _M_p(__x), _M_offset(__y) {} void _M_bump_up() { if (_M_offset++ == _M_word_bit - 1) { _M_offset = 0; ++_M_p; } } void _M_bump_down() { if (_M_offset-- == 0) { _M_offset = _M_word_bit - 1; --_M_p; } } void _M_incr(ptrdiff_t __i) { difference_type __n = __i + _M_offset; _M_p += __n / _M_word_bit; __n = __n % _M_word_bit; if (__n < 0) { _M_offset = (unsigned int) __n + _M_word_bit; --_M_p; } else _M_offset = (unsigned int) __n; } bool operator==(const _Bit_iterator_base& __i) const { return _M_p == __i._M_p && _M_offset == __i._M_offset; } bool operator<(const _Bit_iterator_base& __i) const { return _M_p < __i._M_p || (_M_p == __i._M_p && _M_offset < __i._M_offset); } bool operator!=(const _Bit_iterator_base& __i) const { return !(*this == __i); } bool operator>(const _Bit_iterator_base& __i) const { return __i < *this; } bool operator<=(const _Bit_iterator_base& __i) const { return !(__i < *this); } bool operator>=(const _Bit_iterator_base& __i) const { return !(*this < __i); } }; inline ptrdiff_t operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { return _M_word_bit * (__x._M_p - __y._M_p) + __x._M_offset - __y._M_offset; } struct _Bit_iterator : public _Bit_iterator_base { typedef _Bit_reference reference; typedef _Bit_reference* pointer; typedef _Bit_iterator iterator; _Bit_iterator() : _Bit_iterator_base(0, 0) {} _Bit_iterator(_Bit_type * __x, unsigned int __y) : _Bit_iterator_base(__x, __y) {} reference operator*() const { return reference(_M_p, 1U << _M_offset); } iterator& operator++() { _M_bump_up(); return *this; } iterator operator++(int) { iterator __tmp = *this; _M_bump_up(); return __tmp; } iterator& operator--() { _M_bump_down(); return *this; } iterator operator--(int) { iterator __tmp = *this; _M_bump_down(); return __tmp; } iterator& operator+=(difference_type __i) { _M_incr(__i); return *this; } iterator& operator-=(difference_type __i) { *this += -__i; return *this; } iterator operator+(difference_type __i) const { iterator __tmp = *this; return __tmp += __i; } iterator operator-(difference_type __i) const { iterator __tmp = *this; return __tmp -= __i; } reference operator[](difference_type __i) { return *(*this + __i); } }; inline _Bit_iterator operator+(ptrdiff_t __n, const _Bit_iterator& __x) { return __x + __n; } struct _Bit_const_iterator : public _Bit_iterator_base { typedef bool reference; typedef bool const_reference; typedef const bool* pointer; typedef _Bit_const_iterator const_iterator; _Bit_const_iterator() : _Bit_iterator_base(0, 0) {} _Bit_const_iterator(_Bit_type * __x, unsigned int __y) : _Bit_iterator_base(__x, __y) {} _Bit_const_iterator(const _Bit_iterator& __x) : _Bit_iterator_base(__x._M_p, __x._M_offset) {} const_reference operator*() const { return _Bit_reference(_M_p, 1U << _M_offset); } const_iterator& operator++() { _M_bump_up(); return *this; } const_iterator operator++(int) { const_iterator __tmp = *this; _M_bump_up(); return __tmp; } const_iterator& operator--() { _M_bump_down(); return *this; } const_iterator operator--(int) { const_iterator __tmp = *this; _M_bump_down(); return __tmp; } const_iterator& operator+=(difference_type __i) { _M_incr(__i); return *this; } const_iterator& operator-=(difference_type __i) { *this += -__i; return *this; } const_iterator operator+(difference_type __i) const { const_iterator __tmp = *this; return __tmp += __i; } const_iterator operator-(difference_type __i) const { const_iterator __tmp = *this; return __tmp -= __i; } const_reference operator[](difference_type __i) { return *(*this + __i); } }; inline _Bit_const_iterator operator+(ptrdiff_t __n, const _Bit_const_iterator& __x) { return __x + __n; } template class _Bvector_alloc_base { public: typedef _Alloc_traits::allocator_type allocator_type; allocator_type get_allocator() const { return _M_data_allocator; } _Bvector_alloc_base(const allocator_type& __a) : _M_data_allocator(__a), _M_start(), _M_finish(), _M_end_of_storage(0) {} protected: _Bit_type * _M_bit_alloc(size_t __n) { return _M_data_allocator.allocate((__n + _M_word_bit - 1)/_M_word_bit); } void _M_deallocate() { if (_M_start._M_p) _M_data_allocator.deallocate(_M_start._M_p, _M_end_of_storage - _M_start._M_p); } _Alloc_traits<_Bit_type, _Allocator>::allocator_type _M_data_allocator; _Bit_iterator _M_start; _Bit_iterator _M_finish; _Bit_type * _M_end_of_storage; }; template class _Bvector_alloc_base<_Allocator, true> { public: typedef _Alloc_traits::allocator_type allocator_type; allocator_type get_allocator() const { return allocator_type(); } _Bvector_alloc_base(const allocator_type&) : _M_start(), _M_finish(), _M_end_of_storage(0) {} protected: typedef _Alloc_traits<_Bit_type, _Allocator>::_Alloc_type _Alloc_type; _Bit_type * _M_bit_alloc(size_t __n) { return _Alloc_type::allocate((__n + _M_word_bit - 1)/_M_word_bit); } void _M_deallocate() { if (_M_start._M_p) _Alloc_type::deallocate(_M_start._M_p, _M_end_of_storage - _M_start._M_p); } _Bit_iterator _M_start; _Bit_iterator _M_finish; _Bit_type * _M_end_of_storage; }; template class _Bvector_base : public _Bvector_alloc_base<_Alloc, _Alloc_traits::_S_instanceless> { typedef _Bvector_alloc_base<_Alloc, _Alloc_traits::_S_instanceless> _Base; public: typedef _Base::allocator_type allocator_type; _Bvector_base(const allocator_type& __a) : _Base(__a) {} ~_Bvector_base() { _Base::_M_deallocate(); } }; } namespace std { template < _Alloc> class vector : public _Bvector_base<_Alloc> { public: typedef bool value_type; typedef size_t size_type; typedef ptrdiff_t difference_type; typedef _Bit_reference reference; typedef bool const_reference; typedef _Bit_reference* pointer; typedef const bool* const_pointer; typedef _Bit_iterator iterator; typedef _Bit_const_iterator const_iterator; typedef reverse_iterator const_reverse_iterator; typedef reverse_iterator reverse_iterator; typedef _Bvector_base<_Alloc>::allocator_type allocator_type; allocator_type get_allocator() const { return _Bvector_base<_Alloc>::get_allocator(); } protected: using _Bvector_base<_Alloc>::_M_bit_alloc; using _Bvector_base<_Alloc>::_M_deallocate; using _Bvector_base<_Alloc>::_M_start; using _Bvector_base<_Alloc>::_M_finish; using _Bvector_base<_Alloc>::_M_end_of_storage; protected: void _M_initialize(size_type __n) { _Bit_type * __q = _M_bit_alloc(__n); _M_end_of_storage = __q + (__n + _M_word_bit - 1)/_M_word_bit; _M_start = iterator(__q, 0); _M_finish = _M_start + difference_type(__n); } void _M_insert_aux(iterator __position, bool __x) { if (_M_finish._M_p != _M_end_of_storage) { copy_backward(__position, _M_finish, _M_finish + 1); *__position = __x; ++_M_finish; } else { size_type __len = size() ? 2 * size() : static_cast(_M_word_bit); _Bit_type * __q = _M_bit_alloc(__len); iterator __i = copy(begin(), __position, iterator(__q, 0)); *__i++ = __x; _M_finish = copy(__position, end(), __i); _M_deallocate(); _M_end_of_storage = __q + (__len + _M_word_bit - 1)/_M_word_bit; _M_start = iterator(__q, 0); } } template void _M_initialize_range(_InputIterator __first, _InputIterator __last, input_iterator_tag) { _M_start = iterator(); _M_finish = iterator(); _M_end_of_storage = 0; for ( ; __first != __last; ++__first) push_back(*__first); } template void _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, forward_iterator_tag) { size_type __n = distance(__first, __last); _M_initialize(__n); copy(__first, __last, _M_start); } template void _M_insert_range(iterator __pos, _InputIterator __first, _InputIterator __last, input_iterator_tag) { for ( ; __first != __last; ++__first) { __pos = insert(__pos, *__first); ++__pos; } } template void _M_insert_range(iterator __position, _ForwardIterator __first, _ForwardIterator __last, forward_iterator_tag) { if (__first != __last) { size_type __n = distance(__first, __last); if (capacity() - size() >= __n) { copy_backward(__position, end(), _M_finish + difference_type(__n)); copy(__first, __last, __position); _M_finish += difference_type(__n); } else { size_type __len = size() + max(size(), __n); _Bit_type * __q = _M_bit_alloc(__len); iterator __i = copy(begin(), __position, iterator(__q, 0)); __i = copy(__first, __last, __i); _M_finish = copy(__position, end(), __i); _M_deallocate(); _M_end_of_storage = __q + (__len + _M_word_bit - 1)/_M_word_bit; _M_start = iterator(__q, 0); } } } public: iterator begin() { return _M_start; } const_iterator begin() const { return _M_start; } iterator end() { return _M_finish; } const_iterator end() const { return _M_finish; } reverse_iterator rbegin() { return reverse_iterator(end()); } const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } reverse_iterator rend() { return reverse_iterator(begin()); } const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } size_type size() const { return size_type(end() - begin()); } size_type max_size() const { return size_type(-1); } size_type capacity() const { return size_type(const_iterator(_M_end_of_storage, 0) - begin()); } bool empty() const { return begin() == end(); } reference operator[](size_type __n) { return *(begin() + difference_type(__n)); } const_reference operator[](size_type __n) const { return *(begin() + difference_type(__n)); } void _M_range_check(size_type __n) const { if (__n >= this->size()) __throw_out_of_range("vector"); } reference at(size_type __n) { _M_range_check(__n); return (*this)[__n]; } const_reference at(size_type __n) const { _M_range_check(__n); return (*this)[__n]; } explicit vector(const allocator_type& __a = allocator_type()) : _Bvector_base<_Alloc>(__a) {} vector(size_type __n, bool __value, const allocator_type& __a = allocator_type()) : _Bvector_base<_Alloc>(__a) { _M_initialize(__n); fill(_M_start._M_p, _M_end_of_storage, __value ? ~0 : 0); } explicit vector(size_type __n) : _Bvector_base<_Alloc>(allocator_type()) { _M_initialize(__n); fill(_M_start._M_p, _M_end_of_storage, 0); } vector(const vector& __x) : _Bvector_base<_Alloc>(__x.get_allocator()) { _M_initialize(__x.size()); copy(__x.begin(), __x.end(), _M_start); } template void _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) { _M_initialize(__n); fill(_M_start._M_p, _M_end_of_storage, __x ? ~0 : 0); } template void _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, __false_type) { _M_initialize_range(__first, __last, __iterator_category(__first)); } template vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a = allocator_type()) : _Bvector_base<_Alloc>(__a) { typedef _Is_integer<_InputIterator>::_Integral _Integral; _M_initialize_dispatch(__first, __last, _Integral()); } ~vector() { } vector& operator=(const vector& __x) { if (&__x == this) return *this; if (__x.size() > capacity()) { _M_deallocate(); _M_initialize(__x.size()); } copy(__x.begin(), __x.end(), begin()); _M_finish = begin() + difference_type(__x.size()); return *this; } void _M_fill_assign(size_t __n, bool __x) { if (__n > size()) { fill(_M_start._M_p, _M_end_of_storage, __x ? ~0 : 0); insert(end(), __n - size(), __x); } else { erase(begin() + __n, end()); fill(_M_start._M_p, _M_end_of_storage, __x ? ~0 : 0); } } void assign(size_t __n, bool __x) { _M_fill_assign(__n, __x); } template void assign(_InputIterator __first, _InputIterator __last) { typedef _Is_integer<_InputIterator>::_Integral _Integral; _M_assign_dispatch(__first, __last, _Integral()); } template void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) { _M_fill_assign((size_t) __n, (bool) __val); } template void _M_assign_dispatch(_InputIter __first, _InputIter __last, __false_type) { _M_assign_aux(__first, __last, __iterator_category(__first)); } template void _M_assign_aux(_InputIterator __first, _InputIterator __last, input_iterator_tag) { iterator __cur = begin(); for ( ; __first != __last && __cur != end(); ++__cur, ++__first) *__cur = *__first; if (__first == __last) erase(__cur, end()); else insert(end(), __first, __last); } template void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, forward_iterator_tag) { size_type __len = distance(__first, __last); if (__len < size()) erase(copy(__first, __last, begin()), end()); else { _ForwardIterator __mid = __first; advance(__mid, size()); copy(__first, __mid, begin()); insert(end(), __mid, __last); } } void reserve(size_type __n) { if (capacity() < __n) { _Bit_type * __q = _M_bit_alloc(__n); _M_finish = copy(begin(), end(), iterator(__q, 0)); _M_deallocate(); _M_start = iterator(__q, 0); _M_end_of_storage = __q + (__n + _M_word_bit - 1)/_M_word_bit; } } reference front() { return *begin(); } const_reference front() const { return *begin(); } reference back() { return *(end() - 1); } const_reference back() const { return *(end() - 1); } void push_back(bool __x) { if (_M_finish._M_p != _M_end_of_storage) *_M_finish++ = __x; else _M_insert_aux(end(), __x); } void swap(vector& __x) { std::swap(_M_start, __x._M_start); std::swap(_M_finish, __x._M_finish); std::swap(_M_end_of_storage, __x._M_end_of_storage); } iterator insert(iterator __position, bool __x = bool()) { difference_type __n = __position - begin(); if (_M_finish._M_p != _M_end_of_storage && __position == end()) *_M_finish++ = __x; else _M_insert_aux(__position, __x); return begin() + __n; } template void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, __true_type) { _M_fill_insert(__pos, __n, __x); } template void _M_insert_dispatch(iterator __pos, _InputIterator __first, _InputIterator __last, __false_type) { _M_insert_range(__pos, __first, __last, __iterator_category(__first)); } template void insert(iterator __position, _InputIterator __first, _InputIterator __last) { typedef _Is_integer<_InputIterator>::_Integral _Integral; _M_insert_dispatch(__position, __first, __last, _Integral()); } void _M_fill_insert(iterator __position, size_type __n, bool __x) { if (__n == 0) return; if (capacity() - size() >= __n) { copy_backward(__position, end(), _M_finish + difference_type(__n)); fill(__position, __position + difference_type(__n), __x); _M_finish += difference_type(__n); } else { size_type __len = size() + max(size(), __n); _Bit_type * __q = _M_bit_alloc(__len); iterator __i = copy(begin(), __position, iterator(__q, 0)); fill_n(__i, __n, __x); _M_finish = copy(__position, end(), __i + difference_type(__n)); _M_deallocate(); _M_end_of_storage = __q + (__len + _M_word_bit - 1)/_M_word_bit; _M_start = iterator(__q, 0); } } void insert(iterator __position, size_type __n, bool __x) { _M_fill_insert(__position, __n, __x); } void pop_back() { --_M_finish; } iterator erase(iterator __position) { if (__position + 1 != end()) copy(__position + 1, end(), __position); --_M_finish; return __position; } iterator erase(iterator __first, iterator __last) { _M_finish = copy(__last, end(), __first); return __first; } void resize(size_type __new_size, bool __x = bool()) { if (__new_size < size()) erase(begin() + difference_type(__new_size), end()); else insert(end(), __new_size - size(), __x); } void flip() { for (_Bit_type * __p = _M_start._M_p; __p != _M_end_of_storage; ++__p) *__p = ~*__p; } void clear() { erase(begin(), end()); } }; typedef vector bit_vector; } # 73 "/usr/local/include/g++-v3/vector" 2 3 # 46 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 2 3 # 1 "/usr/local/include/g++-v3/typeinfo" 1 3 # 40 "/usr/local/include/g++-v3/typeinfo" 3 extern "C++" { namespace __cxxabiv1 { class __class_type_info; } # 55 "/usr/local/include/g++-v3/typeinfo" 3 namespace std { class type_info { public: virtual ~type_info(); private: type_info& operator=(const type_info&); type_info(const type_info&); protected: const char *__name; protected: explicit type_info(const char *__n): __name(__n) { } public: const char* name() const { return __name; } # 98 "/usr/local/include/g++-v3/typeinfo" 3 bool before(const type_info& __arg) const { return __name < __arg.__name; } bool operator==(const type_info& __arg) const { return __name == __arg.__name; } bool operator!=(const type_info& __arg) const { return !operator==(__arg); } public: virtual bool __is_pointer_p() const; virtual bool __is_function_p() const; virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, unsigned __outer) const; virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, void **__obj_ptr) const; }; class bad_cast : public exception { public: bad_cast() throw() { } virtual ~bad_cast() throw(); }; class bad_typeid : public exception { public: bad_typeid () throw() { } virtual ~bad_typeid() throw(); }; } } # 47 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 2 3 namespace std { template< _Facet> locale locale::combine(const locale& __other) const { _Impl* __tmp = new _Impl(*_M_impl, 1); __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); return locale(__tmp); } template< _CharT, _Traits, _Alloc> bool locale::operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, const basic_string<_CharT, _Traits, _Alloc>& __s2) const { typedef std::collate<_CharT> __collate_type; const __collate_type& __collate = use_facet<__collate_type>(*this); return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), __s2.data(), __s2.data() + __s2.length()) < 0); } template< _Facet> const _Facet& use_facet(const locale& __loc) { size_t __i = _Facet::id._M_index; locale::_Impl::__vec_facet* __facet = __loc._M_impl->_M_facets; const locale::facet* __fp = (*__facet)[__i]; if (__fp == 0 || __i >= __facet->size()) __throw_bad_cast(); return static_cast(*__fp); } template< _Facet> bool has_facet(const locale& __loc) throw() { size_t __i = _Facet::id._M_index; locale::_Impl::__vec_facet* __facet = __loc._M_impl->_M_facets; return (__i < __facet->size() && (*__facet)[__i] != 0); } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, ios_base::iostate& __err, string& __xtrc) const { const locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); const numpunct<_CharT>& __np = use_facet >(__loc); const char_type __plus = __ctype.widen('+'); const char_type __minus = __ctype.widen('-'); int __pos = 0; char_type __c = *__beg; if ((__c == __plus || __c == __minus) && __beg != __end) { __xtrc += __ctype.narrow(__c, char()); ++__pos; __c = *(++__beg); } const char_type __zero = __ctype.widen(_S_atoms[_M_zero]); bool __found_zero = false; while (__c == __zero && __beg != __end) { __c = *(++__beg); __found_zero = true; } if (__found_zero) { __xtrc += _S_atoms[_M_zero]; ++__pos; } const size_t __len = _M_E - _M_zero + 1; char_type __watoms[__len]; __ctype.widen(_S_atoms, _S_atoms + __len, __watoms); bool __found_dec = false; bool __found_sci = false; const char_type __dec = __np.decimal_point(); string __found_grouping; const string __grouping = __np.grouping(); bool __check_grouping = __grouping.size(); int __sep_pos = 0; const char_type __sep = __np.thousands_sep(); while (__beg != __end) { typedef char_traits<_CharT> __traits_type; const char_type* __p = __traits_type::find(__watoms, 10, __c); if (__p && __c) { ++__pos; __xtrc += _S_atoms[__p - __watoms]; ++__sep_pos; __c = *(++__beg); } else if (__c == __sep && __check_grouping && !__found_dec) { if (__sep_pos) { __found_grouping += static_cast(__sep_pos); __sep_pos = 0; __c = *(++__beg); } else { __err |= ios_base::failbit; break; } } else if (__c == __dec && !__found_dec) { if (__found_grouping.size()) __found_grouping += static_cast(__sep_pos); ++__pos; __xtrc += '.'; __c = *(++__beg); __found_dec = true; } else if ((__c == __watoms[_M_e] || __c == __watoms[_M_E]) && !__found_sci && __pos) { ++__pos; __xtrc += __ctype.narrow(__c, char()); __c = *(++__beg); if (__c == __plus || __c == __minus) { ++__pos; __xtrc += __ctype.narrow(__c, char()); __c = *(++__beg); } __found_sci = true; } else break; } if (__check_grouping && __found_grouping.size()) { if (!__found_dec) __found_grouping += static_cast(__sep_pos); if (!__verify_grouping(__grouping, __found_grouping)) __err |= ios_base::failbit; } __xtrc += char(); if (__beg == __end) __err |= ios_base::eofbit; return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, ios_base::iostate& __err, string& __xtrc, int& __base) const { const locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); const numpunct<_CharT>& __np = use_facet >(__loc); ios_base::fmtflags __basefield = __io.flags() & ios_base::basefield; if (__basefield == ios_base::oct) __base = 8; else if (__basefield == ios_base::hex) __base = 16; else __base = 10; int __pos = 0; char_type __c = *__beg; if ((__c == __ctype.widen('+') || __c == __ctype.widen('-')) && __beg != __end) { __xtrc += __ctype.narrow(__c, char()); ++__pos; __c = *(++__beg); } const char_type __zero = __ctype.widen(_S_atoms[_M_zero]); const char_type __x = __ctype.widen('x'); const char_type __X = __ctype.widen('X'); if (__base == 10) { bool __found_zero = false; while (__c == __zero && __beg != __end) { __c = *(++__beg); __found_zero = true; } if (__found_zero) { __xtrc += _S_atoms[_M_zero]; ++__pos; if (__basefield == 0) { if ((__c == __x || __c == __X) && __beg != __end) { __xtrc += __ctype.narrow(__c, char()); ++__pos; __c = *(++__beg); __base = 16; } else __base = 8; } } } else if (__base == 16) { if (__c == __zero && __beg != __end) { __xtrc += _S_atoms[_M_zero]; ++__pos; __c = *(++__beg); if ((__c == __x || __c == __X) && __beg != __end) { __xtrc += __ctype.narrow(__c, char()); ++__pos; __c = *(++__beg); } } } size_t __len; if (__base == 16) __len = _M_size; else __len = __base; char_type __watoms[_M_size]; __ctype.widen(_S_atoms, _S_atoms + __len, __watoms); string __found_grouping; const string __grouping = __np.grouping(); bool __check_grouping = __grouping.size(); int __sep_pos = 0; const char_type __sep = __np.thousands_sep(); while (__beg != __end) { typedef char_traits<_CharT> __traits_type; const char_type* __p = __traits_type::find(__watoms, __len, __c); if (__p && __c) { __xtrc += _S_atoms[__p - __watoms]; ++__pos; ++__sep_pos; __c = *(++__beg); } else if (__c == __sep && __check_grouping) { if (__sep_pos) { __found_grouping += static_cast(__sep_pos); __sep_pos = 0; __c = *(++__beg); } else { __err |= ios_base::failbit; break; } } else break; } if (__check_grouping && __found_grouping.size()) { __found_grouping += static_cast(__sep_pos); if (!__verify_grouping(__grouping, __found_grouping)) __err |= ios_base::failbit; } __xtrc += char(); if (__beg == __end) __err |= ios_base::eofbit; return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, bool& __v) const { if (!(__io.flags() & ios_base::boolalpha)) { string __xtrc; int __base; __beg = _M_extract_int(__beg, __end, __io, __err, __xtrc, __base); unsigned long __ul; __convert_to_v(__xtrc.c_str(), __ul, __err, _S_c_locale, __base); if (!(__err & ios_base::failbit) && __ul <= 1) __v = __ul; else __err |= ios_base::failbit; } else { locale __loc = __io.getloc(); const numpunct<_CharT>& __np = use_facet >(__loc); const char_type* __true = __np.truename().c_str(); const char_type* __false = __np.falsename().c_str(); const size_t __truen = __np.truename().size() - 1; const size_t __falsen = __np.falsename().size() - 1; for (size_t __n = 0; __beg != __end; ++__n) { char_type __c = *__beg++; bool __testf = __n <= __falsen ? __c == __false[__n] : false; bool __testt = __n <= __truen ? __c == __true[__n] : false; if (!(__testf || __testt)) { __err |= ios_base::failbit; break; } else if (__testf && __n == __falsen) { __v = 0; break; } else if (__testt && __n == __truen) { __v = 1; break; } } if (__beg == __end) __err |= ios_base::eofbit; } return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, long& __v) const { string __xtrc; int __base; __beg = _M_extract_int(__beg, __end, __io, __err, __xtrc, __base); __convert_to_v(__xtrc.c_str(), __v, __err, _S_c_locale, __base); return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, unsigned short& __v) const { string __xtrc; int __base; __beg = _M_extract_int(__beg, __end, __io, __err, __xtrc, __base); unsigned long __ul; __convert_to_v(__xtrc.c_str(), __ul, __err, _S_c_locale, __base); if (!(__err & ios_base::failbit) && __ul <= numeric_limits::max()) __v = static_cast(__ul); else __err |= ios_base::failbit; return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, unsigned int& __v) const { string __xtrc; int __base; __beg = _M_extract_int(__beg, __end, __io, __err, __xtrc, __base); unsigned long __ul; __convert_to_v(__xtrc.c_str(), __ul, __err, _S_c_locale, __base); if (!(__err & ios_base::failbit) && __ul <= numeric_limits::max()) __v = static_cast(__ul); else __err |= ios_base::failbit; return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, unsigned long& __v) const { string __xtrc; int __base; __beg = _M_extract_int(__beg, __end, __io, __err, __xtrc, __base); __convert_to_v(__xtrc.c_str(), __v, __err, _S_c_locale, __base); return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, long long& __v) const { string __xtrc; int __base; __beg = _M_extract_int(__beg, __end, __io, __err, __xtrc, __base); __convert_to_v(__xtrc.c_str(), __v, __err, _S_c_locale, __base); return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, unsigned long long& __v) const { string __xtrc; int __base; __beg = _M_extract_int(__beg, __end, __io, __err, __xtrc, __base); __convert_to_v(__xtrc.c_str(), __v, __err, _S_c_locale, __base); return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, float& __v) const { string __xtrc; __xtrc.reserve(32); __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); __convert_to_v(__xtrc.c_str(), __v, __err, _S_c_locale); return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, double& __v) const { string __xtrc; __xtrc.reserve(32); __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); __convert_to_v(__xtrc.c_str(), __v, __err, _S_c_locale); return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, long double& __v) const { string __xtrc; __xtrc.reserve(32); __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); __convert_to_v(__xtrc.c_str(), __v, __err, _S_c_locale); return __beg; } template< _CharT, _InIter> _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, void*& __v) const { typedef ios_base::fmtflags fmtflags; fmtflags __fmt = __io.flags(); fmtflags __fmtmask = ~(ios_base::showpos | ios_base::basefield | ios_base::uppercase | ios_base::internal); __io.flags(__fmt & __fmtmask | (ios_base::hex | ios_base::showbase)); string __xtrc; int __base; __beg = _M_extract_int(__beg, __end, __io, __err, __xtrc, __base); __io.flags(__fmt); unsigned long __ul; __convert_to_v(__xtrc.c_str(), __ul, __err, _S_c_locale, __base); if (!(__err & ios_base::failbit)) __v = reinterpret_cast(__ul); else __err |= ios_base::failbit; return __beg; } # 604 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 3 template< _CharT, _OutIter> template< _ValueT> _OutIter num_put<_CharT, _OutIter>:: _M_convert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, _ValueT __v) const { const int __max_digits = numeric_limits<_ValueT>::digits10 + 1; streamsize __prec = __io.precision(); if (__prec > static_cast(__max_digits)) __prec = static_cast(__max_digits); char __fbuf[16]; int __len; # 648 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 3 const bool __fixed = __io.flags() & ios_base::fixed; const int __max_exp = numeric_limits<_ValueT>::max_exponent10; const int __cs_size = __fixed ? __max_exp + __max_digits + 4 : __max_digits * 3; char* __cs = static_cast(__builtin_alloca(__cs_size)); if (_S_format_float(__io, __fbuf, __mod, __prec)) __len = __convert_from_v(__cs, 0, __fbuf, __v, _S_c_locale, __prec); else __len = __convert_from_v(__cs, 0, __fbuf, __v, _S_c_locale); return _M_widen_float(__s, __io, __fill, __cs, __len); } template< _CharT, _OutIter> template< _ValueT> _OutIter num_put<_CharT, _OutIter>:: _M_convert_int(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, char __modl, _ValueT __v) const { char __fbuf[16]; _S_format_int(__io, __fbuf, __mod, __modl); # 694 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 3 char __cs[128]; int __len = __convert_from_v(__cs, 0, __fbuf, __v, _S_c_locale); return _M_widen_int(__s, __io, __fill, __cs, __len); } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: _M_widen_float(_OutIter __s, ios_base& __io, _CharT __fill, char* __cs, int __len) const { const locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __len)); _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __len * 2)); __ctype.widen(__cs, __cs + __len, __ws); const _CharT* __p; const numpunct<_CharT>& __np = use_facet >(__loc); if (__p = char_traits<_CharT>::find(__ws, __len, __ctype.widen('.'))) __ws[__p - __ws] = __np.decimal_point(); const string __grouping = __np.grouping(); ios_base::fmtflags __basefield = __io.flags() & ios_base::basefield; if (__grouping.size()) { _CharT* __p2; int __declen = __p ? __p - __ws : __len; __p2 = __add_grouping(__ws2, __np.thousands_sep(), __grouping.c_str(), __grouping.c_str() + __grouping.size(), __ws, __ws + __declen); int __newlen = __p2 - __ws2; if (__p) { char_traits<_CharT>::copy(__p2, __p, __len - __declen); __newlen += __len - __declen; } __ws = __ws2; __len = __newlen; } return _M_insert(__s, __io, __fill, __ws, __len); } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: _M_widen_int(_OutIter __s, ios_base& __io, _CharT __fill, char* __cs, int __len) const { const locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __len)); _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __len * 2)); __ctype.widen(__cs, __cs + __len, __ws); const numpunct<_CharT>& __np = use_facet >(__loc); const string __grouping = __np.grouping(); const ios_base::fmtflags __basefield = __io.flags() & ios_base::basefield; if (__grouping.size()) { streamsize __off = 0; if (__io.flags() & ios_base::showbase) if (__basefield == ios_base::oct) { __off = 1; *__ws2 = *__ws; } else if (__basefield == ios_base::hex) { __off = 2; *__ws2 = *__ws; *(__ws2 + 1) = *(__ws + 1); } _CharT* __p; __p = __add_grouping(__ws2 + __off, __np.thousands_sep(), __grouping.c_str(), __grouping.c_str() + __grouping.size(), __ws + __off, __ws + __len); __len = __p - __ws2; __ws = __ws2; } return _M_insert(__s, __io, __fill, __ws, __len); } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: _M_insert(_OutIter __s, ios_base& __io, _CharT __fill, const _CharT* __ws, int __len) const { streamsize __w = __io.width(); _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __w)); if (__w > static_cast(__len)) { __pad(__io, __fill, __ws2, __ws, __w, __len, true); __len = static_cast(__w); __ws = __ws2; } __io.width(0); for (int __j = 0; __j < __len; ++__j, ++__s) *__s = __ws[__j]; return __s; } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const { ios_base::fmtflags __flags = __io.flags(); if ((__flags & ios_base::boolalpha) == 0) { unsigned long __uv = __v; __s = _M_convert_int(__s, __io, __fill, 'u', char_type(), __uv); } else { locale __loc = __io.getloc(); const numpunct<_CharT>& __np = use_facet >(__loc); const char_type* __ws; int __len; if (__v) { __ws = __np.truename().c_str(); __len = __np.truename().size(); } else { __ws = __np.falsename().c_str(); __len = __np.falsename().size(); } __s = _M_insert(__s, __io, __fill, __ws, __len); } return __s; } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const { return _M_convert_int(__s, __io, __fill, 'd', char_type(), __v); } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: do_put(iter_type __s, ios_base& __io, char_type __fill, unsigned long __v) const { return _M_convert_int(__s, __io, __fill, 'u', char_type(), __v); } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: do_put(iter_type __s, ios_base& __b, char_type __fill, long long __v) const { return _M_convert_int(__s, __b, __fill, 'd', 'l', __v); } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: do_put(iter_type __s, ios_base& __io, char_type __fill, unsigned long long __v) const { return _M_convert_int(__s, __io, __fill, 'u', 'l', __v); } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const { return _M_convert_float(__s, __io, __fill, char_type(), __v); } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: do_put(iter_type __s, ios_base& __io, char_type __fill, long double __v) const { return _M_convert_float(__s, __io, __fill, 'L', __v); } template< _CharT, _OutIter> _OutIter num_put<_CharT, _OutIter>:: do_put(iter_type __s, ios_base& __io, char_type __fill, const void* __v) const { ios_base::fmtflags __flags = __io.flags(); ios_base::fmtflags __fmt = ~(ios_base::showpos | ios_base::basefield | ios_base::uppercase | ios_base::internal); __io.flags(__flags & __fmt | (ios_base::hex | ios_base::showbase)); try { __s = _M_convert_int(__s, __io, __fill, 'u', char_type(), reinterpret_cast(__v)); __io.flags(__flags); } catch (...) { __io.flags(__flags); throw; } return __s; } template< _CharT, _InIter> _InIter money_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, long double& __units) const { string_type __str; __beg = this->do_get(__beg, __end, __intl, __io, __err, __str); const int __n = numeric_limits::digits10; char* __cs = static_cast(__builtin_alloca(sizeof(char) * __n)); const locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); const _CharT* __wcs = __str.c_str(); __ctype.narrow(__wcs, __wcs + __str.size() + 1, char(), __cs); __convert_to_v(__cs, __units, __err, _S_c_locale); return __beg; } template< _CharT, _InIter> _InIter money_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, string_type& __units) const { typedef moneypunct<_CharT, true> __money_true; typedef moneypunct<_CharT, false> __money_false; typedef money_base::part part; typedef string_type::size_type size_type; const locale __loc = __io.getloc(); const __money_true& __mpt = use_facet<__money_true>(__loc); const __money_false& __mpf = use_facet<__money_false>(__loc); const ctype<_CharT>& __ctype = use_facet >(__loc); const money_base::pattern __p = __intl ? __mpt.neg_format() : __mpf.neg_format(); const string_type __pos_sign =__intl ? __mpt.positive_sign() : __mpf.positive_sign(); const string_type __neg_sign =__intl ? __mpt.negative_sign() : __mpf.negative_sign(); const char_type __d = __intl ? __mpt.decimal_point() : __mpf.decimal_point(); const char_type __sep = __intl ? __mpt.thousands_sep() : __mpf.thousands_sep(); const string __grouping = __intl ? __mpt.grouping() : __mpf.grouping(); string_type __sign; string __grouping_tmp; int __sep_pos = 0; bool __testvalid = true; bool __testdecfound = false; string_type __temp_units; char_type __c = *__beg; char_type __eof = static_cast(char_traits::eof()); for (int __i = 0; __beg != __end && __i < 4 && __testvalid; ++__i) { part __which = static_cast(__p.field[__i]); switch (__which) { case money_base::symbol: if (__io.flags() & ios_base::showbase || __i < 2 || (__i == 2 && static_cast(__p.field[3]) != money_base::none) || __sign.size() > 1) { const string_type __symbol = __intl ? __mpt.curr_symbol() : __mpf.curr_symbol(); size_type __len = __symbol.size(); size_type __j = 0; while (__beg != __end && __j < __len && __symbol[__j] == __c) { __c = *(++__beg); ++__j; } if (__j != __len && (__io.flags() & ios_base::showbase)) __testvalid = false; } break; case money_base::sign: if (__pos_sign.size() && __neg_sign.size()) { if (__c == __pos_sign[0]) { __sign = __pos_sign; __c = *(++__beg); } else if (__c == __neg_sign[0]) { __sign = __neg_sign; __c = *(++__beg); } else __testvalid = false; } else if (__pos_sign.size() && __c == __pos_sign[0]) { __sign = __pos_sign; __c = *(++__beg); } else if (__neg_sign.size() && __c == __neg_sign[0]) { __sign = __neg_sign; __c = *(++__beg); } break; case money_base::value: while (__beg != __end && (__ctype.is(ctype_base::digit, __c) || (__c == __d && !__testdecfound) || __c == __sep)) { if (__c == __d) { __grouping_tmp += static_cast(__sep_pos); __sep_pos = 0; __testdecfound = true; } else if (__c == __sep) { if (__grouping.size()) { __grouping_tmp += static_cast(__sep_pos); __sep_pos = 0; } else { __testvalid = false; break; } } else { __temp_units += __c; ++__sep_pos; } __c = *(++__beg); } break; case money_base::space: case money_base::none: if (__i != 3) while (__beg != __end && __ctype.is(ctype_base::space, __c)) __c = *(++__beg); break; } } if (__sign.size() > 1) { size_type __len = __sign.size(); size_type __i = 1; for (; __c != __eof && __i < __len; ++__i) while (__beg != __end && __c != __sign[__i]) __c = *(++__beg); if (__i != __len) __testvalid = false; } while (__temp_units[0] == __ctype.widen('0')) __temp_units.erase(__temp_units.begin()); if (__sign.size() && __sign == __neg_sign) __temp_units.insert(__temp_units.begin(), __ctype.widen('-')); if (__grouping.size() && __grouping_tmp.size()) { if (!__verify_grouping(__grouping, __grouping_tmp)) __testvalid = false; } if (__c == __eof) __err |= ios_base::eofbit; if (!__testvalid || !__temp_units.size()) __err |= ios_base::failbit; else __temp_units.swap(__units); return __beg; } template< _CharT, _OutIter> _OutIter money_put<_CharT, _OutIter>:: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, long double __units) const { const locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); # 1167 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 3 const int __cs_size = numeric_limits::max_exponent10 + 5; char* __cs = static_cast(__builtin_alloca(sizeof(char) * __cs_size)); int __len = __convert_from_v(__cs, 0, "%.01Lf", __units, _S_c_locale); _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __cs_size)); __ctype.widen(__cs, __cs + __len, __ws); string_type __digits(__ws); return this->do_put(__s, __intl, __io, __fill, __digits); } template< _CharT, _OutIter> _OutIter money_put<_CharT, _OutIter>:: do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, const string_type& __digits) const { typedef string_type::size_type size_type; typedef money_base::part part; const locale __loc = __io.getloc(); const size_type __width = static_cast(__io.width()); typedef moneypunct<_CharT, true> __money_true; typedef moneypunct<_CharT, false> __money_false; const __money_true& __mpt = use_facet<__money_true>(__loc); const __money_false& __mpf = use_facet<__money_false>(__loc); const ctype<_CharT>& __ctype = use_facet >(__loc); const char_type* __beg = __digits.data(); const char_type* __end = __beg + __digits.size(); money_base::pattern __p; string_type __sign; if (*__beg != __ctype.widen('-')) { __p = __intl ? __mpt.pos_format() : __mpf.pos_format(); __sign =__intl ? __mpt.positive_sign() : __mpf.positive_sign(); } else { __p = __intl ? __mpt.neg_format() : __mpf.neg_format(); __sign =__intl ? __mpt.negative_sign() : __mpf.negative_sign(); ++__beg; } __end = __ctype.scan_not(ctype_base::digit, __beg, __end); if (__beg != __end) { string_type __res; string_type __value; const string_type __symbol = __intl ? __mpt.curr_symbol() : __mpf.curr_symbol(); const int __frac = __intl ? __mpt.frac_digits() : __mpf.frac_digits(); if (__frac > 0) { const char_type __d = __intl ? __mpt.decimal_point() : __mpf.decimal_point(); if (__end - __beg >= __frac) { __value = string_type(__end - __frac, __end); __value.insert(__value.begin(), __d); __end -= __frac; } else { __value = string_type(__beg, __end); int __paddec = __frac - (__end - __beg); char_type __zero = __ctype.widen('0'); __value.insert(__value.begin(), __paddec, __zero); __value.insert(__value.begin(), __d); __beg = __end; } } if (__beg != __end) { const string __grouping = __intl ? __mpt.grouping() : __mpf.grouping(); if (__grouping.size()) { const char_type __sep = __intl ? __mpt.thousands_sep() : __mpf.thousands_sep(); const char* __gbeg = __grouping.c_str(); const char* __gend = __gbeg + __grouping.size(); const int __n = (__end - __beg) * 2; _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __n)); _CharT* __ws_end = __add_grouping(__ws2, __sep, __gbeg, __gend, __beg, __end); __value.insert(0, __ws2, __ws_end - __ws2); } else __value.insert(0, string_type(__beg, __end)); } ios_base::fmtflags __f = __io.flags() & ios_base::adjustfield; size_type __len = __value.size() + __sign.size(); __len += (__io.flags() & ios_base::showbase) ? __symbol.size() : 0; bool __testipad = __f == ios_base::internal && __len < __width; for (int __i = 0; __i < 4; ++__i) { part __which = static_cast(__p.field[__i]); switch (__which) { case money_base::symbol: if (__io.flags() & ios_base::showbase) __res += __symbol; break; case money_base::sign: if (__sign.size()) __res += __sign[0]; break; case money_base::value: __res += __value; break; case money_base::space: if (__testipad) __res += string_type(__width - __len, __fill); else __res += __ctype.widen(__fill); break; case money_base::none: if (__testipad) __res += string_type(__width - __len, __fill); break; } } if (__sign.size() > 1) __res += string_type(__sign.begin() + 1, __sign.end()); __len = __res.size(); if (__width > __len) { if (__f == ios_base::left) __res.append(__width - __len, __fill); else __res.insert(0, string_type(__width - __len, __fill)); __len = __width; } for (size_type __j = 0; __j < __len; ++__j, ++__s) *__s = __res[__j]; } __io.width(0); return __s; } template< _CharT, _InIter> time_base::dateorder time_get<_CharT, _InIter>::do_date_order() const { return time_base::no_order; } template< _CharT, _InIter> void time_get<_CharT, _InIter>:: _M_extract_via_format(iter_type& __beg, iter_type& __end, ios_base& __io, ios_base::iostate& __err, tm* __tm, const _CharT* __format) const { locale __loc = __io.getloc(); __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc); const ctype<_CharT>& __ctype = use_facet >(__loc); size_t __len = char_traits<_CharT>::length(__format); for (size_t __i = 0; __beg != __end && __i < __len && !__err; ++__i) { char __c = __format[__i]; if (__c == '%') { __c = __format[++__i]; char __mod = 0; int __mem = 0; if (__c == 'E' || __c == 'O') { __mod = __c; __c = __format[++__i]; } switch (__c) { const char* __cs; _CharT __wcs[10]; case 'a': const char_type* __days1[7]; __tp._M_days_abbreviated(__days1); _M_extract_name(__beg, __end, __tm->tm_wday, __days1, 7, __err); break; case 'A': const char_type* __days2[7]; __tp._M_days(__days2); _M_extract_name(__beg, __end, __tm->tm_wday, __days2, 7, __err); break; case 'h': case 'b': const char_type* __months1[12]; __tp._M_months_abbreviated(__months1); _M_extract_name(__beg, __end, __tm->tm_mon, __months1, 12, __err); break; case 'B': const char_type* __months2[12]; __tp._M_months(__months2); _M_extract_name(__beg, __end, __tm->tm_mon, __months2, 12, __err); break; case 'c': const char_type* __dt[2]; __tp._M_date_time_formats(__dt); _M_extract_via_format(__beg, __end, __io, __err, __tm, __dt[0]); break; case 'd': _M_extract_num(__beg, __end, __tm->tm_mday, 1, 31, 2, __ctype, __err); break; case 'D': __cs = "%m/%d/%y"; __ctype.widen(__cs, __cs + 9, __wcs); _M_extract_via_format(__beg, __end, __io, __err, __tm, __wcs); break; case 'H': _M_extract_num(__beg, __end, __tm->tm_hour, 0, 23, 2, __ctype, __err); break; case 'I': _M_extract_num(__beg, __end, __tm->tm_hour, 1, 12, 2, __ctype, __err); break; case 'm': _M_extract_num(__beg, __end, __mem, 1, 12, 2, __ctype, __err); if (!__err) __tm->tm_mon = __mem - 1; break; case 'M': _M_extract_num(__beg, __end, __tm->tm_min, 0, 59, 2, __ctype, __err); break; case 'n': if (__ctype.narrow(*__beg, 0) == '\n') ++__beg; else __err |= ios_base::failbit; break; case 'R': __cs = "%H:%M"; __ctype.widen(__cs, __cs + 6, __wcs); _M_extract_via_format(__beg, __end, __io, __err, __tm, __wcs); break; case 'S': _M_extract_num(__beg, __end, __tm->tm_sec, 0, 59, 2, __ctype, __err); break; case 't': if (__ctype.narrow(*__beg, 0) == '\t') ++__beg; else __err |= ios_base::failbit; break; case 'T': __cs = "%H:%M:%S"; __ctype.widen(__cs, __cs + 9, __wcs); _M_extract_via_format(__beg, __end, __io, __err, __tm, __wcs); break; case 'x': const char_type* __dates[2]; __tp._M_date_formats(__dates); _M_extract_via_format(__beg, __end, __io, __err, __tm, __dates[0]); break; case 'X': const char_type* __times[2]; __tp._M_time_formats(__times); _M_extract_via_format(__beg, __end, __io, __err, __tm, __times[0]); break; case 'y': _M_extract_num(__beg, __end, __tm->tm_year, 0, 99, 2, __ctype, __err); break; case 'Y': _M_extract_num(__beg, __end, __mem, 0, numeric_limits::max(), 4, __ctype, __err); if (!__err) __tm->tm_year = __mem - 1900; break; case 'Z': if (__ctype.is(ctype_base::upper, *__beg)) { int __tmp; _M_extract_name(__beg, __end, __tmp, __timepunct<_CharT>::_S_timezones, 14, __err); char_type __c = *__beg; if (!__err && __tmp == 0 && (__c == __ctype.widen('-') || __c == __ctype.widen('+'))) { _M_extract_num(__beg, __end, __tmp, 0, 23, 2, __ctype, __err); _M_extract_num(__beg, __end, __tmp, 0, 59, 2, __ctype, __err); } } else __err |= ios_base::failbit; break; default: __err |= ios_base::failbit; } } else { if (__c == __ctype.narrow(*__beg, 0)) ++__beg; else __err |= ios_base::failbit; } } } template< _CharT, _InIter> void time_get<_CharT, _InIter>:: _M_extract_num(iter_type& __beg, iter_type& __end, int& __member, int __min, int __max, size_t __len, const ctype<_CharT>& __ctype, ios_base::iostate& __err) const { size_t __i = 0; string __digits; bool __testvalid = true; char_type __c = *__beg; while (__beg != __end && __i < __len && __ctype.is(ctype_base::digit, __c)) { __digits += __ctype.narrow(__c, 0); __c = *(++__beg); ++__i; } if (__i == __len) { int __value = atoi(__digits.c_str()); if (__min <= __value && __value <= __max) __member = __value; else __testvalid = false; } else __testvalid = false; if (!__testvalid) __err |= ios_base::failbit; } template< _CharT, _InIter> void time_get<_CharT, _InIter>:: _M_extract_name(iter_type& __beg, iter_type& __end, int& __member, const _CharT** __names, size_t __indexlen, ios_base::iostate& __err) const { typedef char_traits __traits_type; int* __matches = static_cast(__builtin_alloca(sizeof(int) * __indexlen)); size_t __nmatches = 0; size_t __pos = 0; bool __testvalid = true; const char_type* __name; char_type __c = *__beg; for (size_t __i1 = 0; __i1 < __indexlen; ++__i1) if (__c == __names[__i1][0]) __matches[__nmatches++] = __i1; while(__nmatches > 1) { size_t __minlen = 10; for (size_t __i2 = 0; __i2 < __nmatches; ++__i2) __minlen = min(__minlen, __traits_type::length(__names[__matches[__i2]])); if (__pos < __minlen && __beg != __end) { ++__pos; __c = *(++__beg); for (size_t __i3 = 0; __i3 < __nmatches; ++__i3) { __name = __names[__matches[__i3]]; if (__name[__pos] != __c) __matches[__i3] = __matches[--__nmatches]; } } else break; } if (__nmatches == 1) { __name = __names[__matches[0]]; const size_t __len = __traits_type::length(__name); while (__pos < __len && __beg != __end && __name[__pos] == *__beg) ++__beg, ++__pos; if (__len == __pos) __member = __matches[0]; else __testvalid = false; } else __testvalid = false; if (!__testvalid) __err |= ios_base::failbit; } template< _CharT, _InIter> _InIter time_get<_CharT, _InIter>:: do_get_time(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { _CharT __wcs[3]; const char* __cs = "%X"; locale __loc = __io.getloc(); ctype<_CharT> const& __ctype = use_facet >(__loc); __ctype.widen(__cs, __cs + 3, __wcs); _M_extract_via_format(__beg, __end, __io, __err, __tm, __wcs); if (__beg == __end) __err |= ios_base::eofbit; return __beg; } template< _CharT, _InIter> _InIter time_get<_CharT, _InIter>:: do_get_date(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { _CharT __wcs[3]; const char* __cs = "%x"; locale __loc = __io.getloc(); ctype<_CharT> const& __ctype = use_facet >(__loc); __ctype.widen(__cs, __cs + 3, __wcs); _M_extract_via_format(__beg, __end, __io, __err, __tm, __wcs); if (__beg == __end) __err |= ios_base::eofbit; return __beg; } template< _CharT, _InIter> _InIter time_get<_CharT, _InIter>:: do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { typedef char_traits __traits_type; locale __loc = __io.getloc(); __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc); const char_type* __days[7]; __tp._M_days_abbreviated(__days); int __tmpwday; _M_extract_name(__beg, __end, __tmpwday, __days, 7, __err); if (!__err) { size_t __pos = __traits_type::length(__days[__tmpwday]); __tp._M_days(__days); const char_type* __name = __days[__tmpwday]; if (__name[__pos] == *__beg) { const size_t __len = __traits_type::length(__name); while (__pos < __len && __beg != __end && __name[__pos] == *__beg) ++__beg, ++__pos; if (__len != __pos) __err |= ios_base::failbit; } if (!__err) __tm->tm_wday = __tmpwday; } if (__beg == __end) __err |= ios_base::eofbit; return __beg; } template< _CharT, _InIter> _InIter time_get<_CharT, _InIter>:: do_get_monthname(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { typedef char_traits __traits_type; locale __loc = __io.getloc(); __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc); const char_type* __months[12]; __tp._M_months_abbreviated(__months); int __tmpmon; _M_extract_name(__beg, __end, __tmpmon, __months, 12, __err); if (!__err) { size_t __pos = __traits_type::length(__months[__tmpmon]); __tp._M_months(__months); const char_type* __name = __months[__tmpmon]; if (__name[__pos] == *__beg) { const size_t __len = __traits_type::length(__name); while (__pos < __len && __beg != __end && __name[__pos] == *__beg) ++__beg, ++__pos; if (__len != __pos) __err |= ios_base::failbit; } if (!__err) __tm->tm_mon = __tmpmon; } if (__beg == __end) __err |= ios_base::eofbit; return __beg; } template< _CharT, _InIter> _InIter time_get<_CharT, _InIter>:: do_get_year(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); char_type __c = *__beg; size_t __i = 0; string __digits; while (__i < 4 && __beg != __end && __ctype.is(ctype_base::digit, __c)) { __digits += __ctype.narrow(__c, 0); __c = *(++__beg); ++__i; } if (__i == 2 || __i == 4) { long __l; __convert_to_v(__digits.c_str(), __l, __err, _S_c_locale); if (!(__err & ios_base::failbit) && __l <= 2147483647) { __l = __i == 2 ? __l : __l - 1900; __tm->tm_year = static_cast(__l); } } else __err |= ios_base::failbit; if (__beg == __end) __err |= ios_base::eofbit; return __beg; } template< _CharT, _OutIter> _OutIter time_put<_CharT, _OutIter>:: put(iter_type __s, ios_base& __io, char_type, const tm* __tm, const _CharT* __beg, const _CharT* __end) const { locale __loc = __io.getloc(); ctype<_CharT> const& __ctype = use_facet >(__loc); while (__beg != __end) { char __c = __ctype.narrow(*__beg, 0); ++__beg; if (__c == '%') { char __format; char __mod = 0; size_t __len = 1; __c = __ctype.narrow(*__beg, 0); ++__beg; if (__c == 'E' || __c == 'O') { __mod = __c; __format = __ctype.narrow(*__beg, 0); ++__beg; } else __format = __c; __s = this->do_put(__s, __io, char_type(), __tm, __format, __mod); } else { *__s = __c; ++__s; } } return __s; } template< _CharT, _OutIter> _OutIter time_put<_CharT, _OutIter>:: do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm, char __format, char __mod) const { locale __loc = __io.getloc(); ctype<_CharT> const& __ctype = use_facet >(__loc); __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc); const size_t __maxlen = 64; char_type* __res = static_cast(__builtin_alloca(sizeof(char_type) * __maxlen)); char_type __fmt[4]; __fmt[0] = __ctype.widen('%'); if (!__mod) { __fmt[1] = __format; __fmt[2] = char_type(); } else { __fmt[1] = __mod; __fmt[2] = __format; __fmt[3] = char_type(); } __tp._M_put_helper(__res, __maxlen, __fmt, __tm); size_t __len = char_traits::length(__res); for (size_t __i = 0; __i < __len; ++__i, ++__s) *__s = __res[__i]; return __s; } template< _CharT> int collate<_CharT>::_M_compare_helper(const _CharT*, const _CharT*) const { return 0; } template< _CharT> size_t collate<_CharT>::_M_transform_helper(_CharT*, const _CharT*, size_t) const { return 0; } template< _CharT> int collate<_CharT>:: do_compare(const _CharT* __lo1, const _CharT* __hi1, const _CharT* __lo2, const _CharT* __hi2) const { const string_type __one(__lo1, __hi1); const string_type __two(__lo2, __hi2); return _M_compare_helper(__one.c_str(), __two.c_str()); } template< _CharT> collate<_CharT>::string_type collate<_CharT>:: do_transform(const _CharT* __lo, const _CharT* __hi) const { size_t __len = (__hi - __lo) * 2; _CharT* __c = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __len)); size_t __res = _M_transform_helper(__c, __lo, __len); if (__res >= __len) { __c = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * (__res + 1))); _M_transform_helper(__c, __lo, __res + 1); } return string_type(__c); } template< _CharT> long collate<_CharT>:: do_hash(const _CharT* __lo, const _CharT* __hi) const { unsigned long __val = 0; for (; __lo < __hi; ++__lo) __val = *__lo + ((__val << 7) | (__val >> (numeric_limits::digits - 7))); return static_cast(__val); } template< _Tv> void __convert_to_v(const char* __in, _Tv& __out, ios_base::iostate& __err, const __c_locale& __cloc, int __base = 10); # 1967 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 3 template< _Tv> int __convert_from_v(char* __out, const int, const char* __fmt, _Tv __v, const __c_locale&, int __prec = -1) { int __ret; const char* __old = setlocale(0, "C"); if (__prec >= 0) __ret = sprintf(__out, __fmt, __prec, __v); else __ret = sprintf(__out, __fmt, __v); setlocale(0, __old); return __ret; } # 1991 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 3 template< _CharT, _Traits> void __pad(ios_base& __io, _CharT __fill, _CharT* __news, const _CharT* __olds, const streamsize __newlen, const streamsize __oldlen, const bool __num) { typedef _CharT char_type; typedef _Traits traits_type; typedef traits_type::int_type int_type; int_type __plen = static_cast(__newlen - __oldlen); char_type* __pads = static_cast(__builtin_alloca(sizeof(char_type) * __plen)); traits_type::assign(__pads, __plen, __fill); char_type* __beg; char_type* __end; size_t __mod = 0; size_t __beglen; ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; if (__adjust == ios_base::left) { __beg = const_cast(__olds); __beglen = __oldlen; __end = __pads; } else if (__adjust == ios_base::internal && __num) { locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); const char_type __minus = __ctype.widen('-'); const char_type __plus = __ctype.widen('+'); bool __testsign = __olds[0] == __minus || __olds[0] == __plus; bool __testhex = __ctype.widen('0') == __olds[0] && (__ctype.widen('x') == __olds[1] || __ctype.widen('X') == __olds[1]); if (__testhex) { __news[0] = __olds[0]; __news[1] = __olds[1]; __mod += 2; __news += 2; __beg = __pads; __beglen = __plen; __end = const_cast(__olds + __mod); } else if (__testsign) { __news[0] = __olds[0] == __plus ? __plus : __minus; ++__mod; ++__news; __beg = __pads; __beglen = __plen; __end = const_cast(__olds + __mod); } else { __beg = __pads; __beglen = __plen; __end = const_cast(__olds); } } else { __beg = __pads; __beglen = __plen; __end = const_cast(__olds); } traits_type::copy(__news, __beg, __beglen); traits_type::copy(__news + __beglen, __end, __newlen - __beglen - __mod); } template< _CharT> void __pad(ios_base& __io, _CharT __fill, _CharT* __news, const _CharT* __olds, const streamsize __newlen, const streamsize __oldlen, const bool __num) { return __pad<_CharT, char_traits<_CharT> >(__io, __fill, __news, __olds, __newlen, __oldlen, __num); } # 2090 "/usr/local/include/g++-v3/bits/locale_facets.tcc" 3 template< _CharT> bool __verify_grouping(const basic_string<_CharT>& __grouping, basic_string<_CharT>& __grouping_tmp) { int __i = 0; int __j = 0; const int __len = __grouping.size(); const int __n = __grouping_tmp.size(); bool __test = true; while (__test && __i < __n - 1) for (__j = 0; __test && __j < __len && __i < __n - 1; ++__j,++__i) __test &= __grouping[__j] == __grouping_tmp[__n - __i - 1]; __j == __len ? __j = 0 : __j; __test &= __grouping[__j] >= __grouping_tmp[__n - __i - 1]; return __test; } template< _CharT> _CharT* __add_grouping(_CharT* __s, _CharT __sep, const char* __gbeg, const char* __gend, const _CharT* __first, const _CharT* __last) { if (__last - __first > *__gbeg) { __s = __add_grouping(__s, __sep, (__gbeg + 1 == __gend ? __gbeg : __gbeg + 1), __gend, __first, __last - *__gbeg); __first = __last - *__gbeg; *__s++ = __sep; } do *__s++ = *__first++; while (__first != __last); return __s; } extern template class vector; extern template class moneypunct; extern template class moneypunct; extern template class moneypunct_byname; extern template class moneypunct_byname; extern template class money_get; extern template class money_put; extern template class moneypunct; extern template class moneypunct; extern template class moneypunct_byname; extern template class moneypunct_byname; extern template class money_get; extern template class money_put; extern template class numpunct; extern template class numpunct_byname; extern template class num_get; extern template class num_put; extern template class numpunct; extern template class numpunct_byname; extern template class num_get; extern template class num_put; extern template class __timepunct; extern template class time_put; extern template class time_put_byname; extern template class time_get; extern template class time_get_byname; extern template class __timepunct; extern template class time_put; extern template class time_put_byname; extern template class time_get; extern template class time_get_byname; extern template class messages; extern template class messages_byname; extern template class messages; extern template class messages_byname; extern template class ctype_byname; extern template class ctype_byname; extern template class codecvt_byname; extern template class codecvt_byname; extern template class collate; extern template class collate_byname; extern template class collate; extern template class collate_byname; extern template const codecvt& use_facet >(const locale&); extern template const collate& use_facet >(const locale&); extern template const numpunct& use_facet >(const locale&); extern template const num_put& use_facet >(const locale&); extern template const num_get& use_facet >(const locale&); extern template const moneypunct& use_facet >(const locale&); extern template const moneypunct& use_facet >(const locale&); extern template const money_put& use_facet >(const locale&); extern template const money_get& use_facet >(const locale&); extern template const __timepunct& use_facet<__timepunct >(const locale&); extern template const time_put& use_facet >(const locale&); extern template const time_get& use_facet >(const locale&); extern template const messages& use_facet >(const locale&); extern template const codecvt& use_facet >(locale const&); extern template const collate& use_facet >(const locale&); extern template const numpunct& use_facet >(const locale&); extern template const num_put& use_facet >(const locale&); extern template const num_get& use_facet >(const locale&); extern template const moneypunct& use_facet >(const locale&); extern template const moneypunct& use_facet >(const locale&); extern template const money_put& use_facet >(const locale&); extern template const money_get& use_facet >(const locale&); extern template const __timepunct& use_facet<__timepunct >(const locale&); extern template const time_put& use_facet >(const locale&); extern template const time_get& use_facet >(const locale&); extern template const messages& use_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet<__timepunct >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet<__timepunct >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); extern template bool has_facet >(const locale&); } # 47 "/usr/local/include/g++-v3/locale" 2 3 # 38 "/usr/local/include/g++-v3/bits/istream.tcc" 2 3 # 1 "/usr/local/include/g++-v3/ostream" 1 3 # 44 "/usr/local/include/g++-v3/ostream" 3 namespace std { template< _CharT, _Traits> class basic_ostream : virtual public basic_ios<_CharT, _Traits> { public: typedef _CharT char_type; typedef _Traits::int_type int_type; typedef _Traits::pos_type pos_type; typedef _Traits::off_type off_type; typedef _Traits traits_type; typedef basic_streambuf<_CharT, _Traits> __streambuf_type; typedef basic_ios<_CharT, _Traits> __ios_type; typedef basic_ostream<_CharT, _Traits> __ostream_type; typedef ostreambuf_iterator<_CharT, _Traits> __ostreambuf_iter; typedef num_put<_CharT, __ostreambuf_iter> __numput_type; typedef ctype<_CharT> __ctype_type; explicit basic_ostream(__streambuf_type* __sb) { this->init(__sb); } virtual ~basic_ostream() { } class sentry; friend class sentry; __ostream_type& operator<<(__ostream_type& (*__pf)(__ostream_type&)); __ostream_type& operator<<(__ios_type& (*__pf)(__ios_type&)); __ostream_type& operator<<(ios_base& (*__pf) (ios_base&)); __ostream_type& operator<<(long __n); __ostream_type& operator<<(unsigned long __n); __ostream_type& operator<<(bool __n); __ostream_type& operator<<(short __n) { ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; if (__fmt & ios_base::oct || __fmt & ios_base::hex) return this->operator<<(static_cast (static_cast(__n))); else return this->operator<<(static_cast(__n)); } __ostream_type& operator<<(unsigned short __n) { return this->operator<<(static_cast(__n)); } __ostream_type& operator<<(int __n) { ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; if (__fmt & ios_base::oct || __fmt & ios_base::hex) return this->operator<<(static_cast (static_cast(__n))); else return this->operator<<(static_cast(__n)); } __ostream_type& operator<<(unsigned int __n) { return this->operator<<(static_cast(__n)); } __ostream_type& operator<<(long long __n); __ostream_type& operator<<(unsigned long long __n); __ostream_type& operator<<(double __f); __ostream_type& operator<<(float __f) { return this->operator<<(static_cast(__f)); } __ostream_type& operator<<(long double __f); __ostream_type& operator<<(const void* __p); __ostream_type& operator<<(__streambuf_type* __sb); __ostream_type& put(char_type __c); __ostream_type& write(const char_type* __s, streamsize __n); __ostream_type& flush(); pos_type tellp(); __ostream_type& seekp(pos_type); __ostream_type& seekp(off_type, ios_base::seekdir); }; template < _CharT, _Traits> class basic_ostream<_CharT, _Traits>::sentry { bool _M_ok; basic_ostream<_CharT,_Traits>& _M_os; public: explicit sentry(basic_ostream<_CharT,_Traits>& __os); ~sentry() { if (_M_os.flags() & ios_base::unitbuf && !uncaught_exception()) { if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) _M_os.setstate(ios_base::badbit); } } operator bool() { return _M_ok; } }; template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c); template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) { return (__out << __out.widen(__c)); } template basic_ostream& operator<<(basic_ostream& __out, char __c); template basic_ostream& operator<<(basic_ostream& __out, signed char __c) { return (__out << static_cast(__c)); } template basic_ostream& operator<<(basic_ostream& __out, unsigned char __c) { return (__out << static_cast(__c)); } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s); template< _CharT, _Traits> basic_ostream<_CharT, _Traits> & operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); template basic_ostream& operator<<(basic_ostream& __out, const char* __s); template basic_ostream& operator<<(basic_ostream& __out, const signed char* __s) { return (__out << reinterpret_cast(__s)); } template basic_ostream & operator<<(basic_ostream& __out, const unsigned char* __s) { return (__out << reinterpret_cast(__s)); } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& endl(basic_ostream<_CharT, _Traits>& __os) { return flush(__os.put(__os.widen('\n'))); } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& ends(basic_ostream<_CharT, _Traits>& __os) { return __os.put(_CharT()); } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& flush(basic_ostream<_CharT, _Traits>& __os) { return __os.flush(); } } # 1 "/usr/local/include/g++-v3/bits/ostream.tcc" 1 3 # 36 "/usr/local/include/g++-v3/bits/ostream.tcc" 3 namespace std { template< _CharT, _Traits> basic_ostream<_CharT, _Traits>::sentry:: sentry(basic_ostream<_CharT,_Traits>& __os) : _M_ok(__os.good()), _M_os(__os) { if (_M_ok && __os.tie()) __os.tie()->flush(); } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>:: operator<<(__ostream_type& (*__pf)(__ostream_type&)) { sentry __cerb(*this); if (__cerb) { try { __pf(*this); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>:: operator<<(__ios_type& (*__pf)(__ios_type&)) { sentry __cerb(*this); if (__cerb) { try { __pf(*this); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>:: operator<<(ios_base& (*__pf)(ios_base&)) { sentry __cerb(*this); if (__cerb) { try { __pf(*this); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(__streambuf_type* __sbin) { sentry __cerb(*this); if (__cerb) { try { streamsize __xtrct = 0; if (__sbin) { __streambuf_type* __sbout = this->rdbuf(); __xtrct = __copy_streambufs(*this, __sbin, __sbout); } else this->setstate(ios_base::badbit); if (!__xtrct) this->setstate(ios_base::failbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(bool __n) { sentry __cerb(*this); if (__cerb) { try { if (_M_check_facet(_M_fnumput)) if (_M_fnumput->put(*this, *this, this->fill(), __n).failed()) this->setstate(ios_base::badbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(long __n) { sentry __cerb(*this); if (__cerb) { try { char_type __c = this->fill(); ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; if (_M_check_facet(_M_fnumput)) { bool __b = false; if (__fmt & ios_base::oct || __fmt & ios_base::hex) { unsigned long __l = static_cast(__n); __b = _M_fnumput->put(*this, *this, __c, __l).failed(); } else __b = _M_fnumput->put(*this, *this, __c, __n).failed(); if (__b) this->setstate(ios_base::badbit); } } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(unsigned long __n) { sentry __cerb(*this); if (__cerb) { try { if (_M_check_facet(_M_fnumput)) if (_M_fnumput->put(*this, *this, this->fill(), __n).failed()) this->setstate(ios_base::badbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(long long __n) { sentry __cerb(*this); if (__cerb) { try { char_type __c = this->fill(); ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; if (_M_check_facet(_M_fnumput)) { bool __b = false; if (__fmt & ios_base::oct || __fmt & ios_base::hex) { unsigned long long __l; __l = static_cast(__n); __b = _M_fnumput->put(*this, *this, __c, __l).failed(); } else __b = _M_fnumput->put(*this, *this, __c, __n).failed(); if (__b) this->setstate(ios_base::badbit); } } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(unsigned long long __n) { sentry __cerb(*this); if (__cerb) { try { if (_M_check_facet(_M_fnumput)) if (_M_fnumput->put(*this, *this, this->fill(), __n).failed()) this->setstate(ios_base::badbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(double __n) { sentry __cerb(*this); if (__cerb) { try { if (_M_check_facet(_M_fnumput)) if (_M_fnumput->put(*this, *this, this->fill(), __n).failed()) this->setstate(ios_base::badbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(long double __n) { sentry __cerb(*this); if (__cerb) { try { if (_M_check_facet(_M_fnumput)) if (_M_fnumput->put(*this, *this, this->fill(), __n).failed()) this->setstate(ios_base::badbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(const void* __n) { sentry __cerb(*this); if (__cerb) { try { if (_M_check_facet(_M_fnumput)) if (_M_fnumput->put(*this, *this, this->fill(), __n).failed()) this->setstate(ios_base::badbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::put(char_type __c) { sentry __cerb(*this); if (__cerb) { int_type __put = rdbuf()->sputc(__c); if (traits_type::eq_int_type(__put, traits_type::eof())) this->setstate(ios_base::badbit); } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::write(const _CharT* __s, streamsize __n) { sentry __cerb(*this); if (__cerb) { streamsize __put = this->rdbuf()->sputn(__s, __n); if ( __put != __n) this->setstate(ios_base::badbit); } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::flush() { sentry __cerb(*this); if (__cerb) { if (this->rdbuf() && this->rdbuf()->pubsync() == -1) this->setstate(ios_base::badbit); } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>::pos_type basic_ostream<_CharT, _Traits>::tellp() { pos_type __ret = pos_type(-1); bool __testok = this->fail() != true; if (__testok) __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); return __ret; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::seekp(pos_type __pos) { bool __testok = this->fail() != true; if (__testok) { pos_type __err = this->rdbuf()->pubseekpos(__pos, ios_base::out); if (__err == pos_type(off_type(-1))) this->setstate(ios_base::failbit); } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>:: seekp(off_type __off, ios_base::seekdir __d) { bool __testok = this->fail() != true; if (__testok) { pos_type __err = this->rdbuf()->pubseekoff(__off, __d, ios_base::out); if (__err == pos_type(off_type(-1))) this->setstate(ios_base::failbit); } return *this; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) { typedef basic_ostream<_CharT, _Traits> __ostream_type; __ostream_type::sentry __cerb(__out); if (__cerb) { try { streamsize __w = __out.width(); _CharT* __pads = static_cast<_CharT*>(__builtin_alloca((sizeof(_CharT) * __w) + 1)); __pads[0] = __c; streamsize __len = 1; if (__w > __len) { __pad(__out, __out.fill(), __pads, &__c, __w, __len, false); __len = __w; } __out.write(__pads, __len); __out.width(0); } catch(exception& __fail) { __out.setstate(ios_base::badbit); if ((__out.exceptions() & ios_base::badbit) != 0) throw; } } return __out; } template basic_ostream& operator<<(basic_ostream& __out, char __c) { typedef basic_ostream __ostream_type; __ostream_type::sentry __cerb(__out); if (__cerb) { try { streamsize __w = __out.width(); char* __pads = static_cast(__builtin_alloca(__w + 1)); __pads[0] = __c; streamsize __len = 1; if (__w > __len) { __pad(__out, __out.fill(), __pads, &__c, __w, __len, false); __len = __w; } __out.write(__pads, __len); __out.width(0); } catch(exception& __fail) { __out.setstate(ios_base::badbit); if ((__out.exceptions() & ios_base::badbit) != 0) throw; } } return __out; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) { typedef basic_ostream<_CharT, _Traits> __ostream_type; __ostream_type::sentry __cerb(__out); if (__cerb) { try { streamsize __w = __out.width(); _CharT* __pads = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __w)); streamsize __len = static_cast(_Traits::length(__s)); if (__w > __len) { __pad(__out, __out.fill(), __pads, __s, __w, __len, false); __s = __pads; __len = __w; } __out.write(__s, __len); __out.width(0); } catch(exception& __fail) { __out.setstate(ios_base::badbit); if ((__out.exceptions() & ios_base::badbit) != 0) throw; } } return __out; } template< _CharT, _Traits> basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) { typedef basic_ostream<_CharT, _Traits> __ostream_type; typedef char_traits __ctraits_type; __ostream_type::sentry __cerb(__out); if (__cerb) { size_t __clen = __ctraits_type::length(__s); _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * (__clen + 1))); for (size_t __i = 0; __i <= __clen; ++__i) __ws[__i] = __out.widen(__s[__i]); _CharT* __str = __ws; try { streamsize __len = static_cast(__clen); streamsize __w = __out.width(); _CharT* __pads = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __w)); if (__w > __len) { __pad(__out, __out.fill(), __pads, __ws, __w, __len, false); __str = __pads; __len = __w; } __out.write(__str, __len); __out.width(0); } catch(exception& __fail) { __out.setstate(ios_base::badbit); if ((__out.exceptions() & ios_base::badbit) != 0) throw; } } return __out; } template basic_ostream& operator<<(basic_ostream& __out, const char* __s) { typedef basic_ostream __ostream_type; __ostream_type::sentry __cerb(__out); if (__cerb) { try { streamsize __w = __out.width(); char* __pads = static_cast(__builtin_alloca(__w)); streamsize __len = static_cast(_Traits::length(__s)); if (__w > __len) { __pad(__out, __out.fill(), __pads, __s, __w, __len, false); __s = __pads; __len = __w; } __out.write(__s, __len); __out.width(0); } catch(exception& __fail) { __out.setstate(ios_base::badbit); if ((__out.exceptions() & ios_base::badbit) != 0) throw; } } return __out; } template< _CharT, _Traits, _Alloc> basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __out, const basic_string<_CharT, _Traits, _Alloc>& __str) { typedef basic_ostream<_CharT, _Traits> __ostream_type; __ostream_type::sentry __cerb(__out); if (__cerb) { const _CharT* __s = __str.data(); streamsize __w = __out.width(); _CharT* __pads = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __w)); streamsize __len = static_cast(__str.size()); if (__w > __len) { __pad(__out, __out.fill(), __pads, __s, __w, __len, false); __s = __pads; __len = __w; } streamsize __res = __out.rdbuf()->sputn(__s, __len); __out.width(0); if (__res != __len) __out.setstate(ios_base::failbit); } return __out; } extern template class basic_ostream; extern template ostream& endl(ostream&); extern template ostream& ends(ostream&); extern template ostream& flush(ostream&); extern template ostream& operator<<(ostream&, char); extern template ostream& operator<<(ostream&, unsigned char); extern template ostream& operator<<(ostream&, signed char); extern template ostream& operator<<(ostream&, const char*); extern template ostream& operator<<(ostream&, const unsigned char*); extern template ostream& operator<<(ostream&, const signed char*); # 712 "/usr/local/include/g++-v3/bits/ostream.tcc" 3 } # 276 "/usr/local/include/g++-v3/ostream" 2 3 # 39 "/usr/local/include/g++-v3/bits/istream.tcc" 2 3 namespace std { template< _CharT, _Traits> basic_istream<_CharT, _Traits>::sentry:: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskipws) { if (__in.good()) { if (__in.tie()) __in.tie()->flush(); if (!__noskipws && (__in.flags() & ios_base::skipws)) { const __int_type __eof = traits_type::eof(); const __ctype_type* __ctype = __in._M_get_fctype_ios(); __streambuf_type* __sb = __in.rdbuf(); __int_type __c = __sb->sgetc(); while (__c != __eof && __ctype->is(ctype_base::space, __c)) __c = __sb->snextc(); if (__c == __eof) __in.setstate(ios_base::eofbit); } } if (__in.good()) _M_ok = true; else { _M_ok = false; __in.setstate(ios_base::failbit); } } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(__istream_type& (*__pf)(__istream_type&)) { __pf(*this); return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(__ios_type& (*__pf)(__ios_type&)) { __pf(*this); return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(ios_base& (*__pf)(ios_base&)) { __pf(*this); return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(bool& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(short& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); long __l; if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __l); if (!(__err & ios_base::failbit) && (numeric_limits::min() <= __l && __l <= numeric_limits::max())) __n = __l; else __err |= ios_base::failbit; this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(unsigned short& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(int& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); long __l; if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __l); if (!(__err & ios_base::failbit) && (numeric_limits::min() <= __l && __l <= numeric_limits::max())) __n = __l; else __err |= ios_base::failbit; this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(unsigned int& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(long& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(unsigned long& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(long long& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(unsigned long long& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(float& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(double& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(long double& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(void*& __n) { sentry __cerb(*this, false); if (__cerb) { try { ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); if (_M_check_facet(_M_fnumget)) _M_fnumget->get(*this, 0, *this, __err, __n); this->setstate(__err); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: operator>>(__streambuf_type* __sbout) { sentry __cerb(*this, false); if (__cerb) { try { streamsize __xtrct = 0; if (__sbout) { __streambuf_type* __sbin = this->rdbuf(); __xtrct = __copy_streambufs(*this, __sbin, __sbout); } if (!__sbout || !__xtrct) this->setstate(ios_base::failbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>::int_type basic_istream<_CharT, _Traits>:: get(void) { const int_type __eof = traits_type::eof(); int_type __c = __eof; _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { try { __c = this->rdbuf()->sbumpc(); if (__c != __eof) _M_gcount = 1; else this->setstate(ios_base::eofbit | ios_base::failbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return __c; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: get(char_type& __c) { _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { try { const int_type __eof = traits_type::eof(); int_type __bufval = this->rdbuf()->sbumpc(); if (__bufval != __eof) { _M_gcount = 1; __c = traits_type::to_char_type(__bufval); } else this->setstate(ios_base::eofbit | ios_base::failbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: get(char_type* __s, streamsize __n, char_type __delim) { _M_gcount = 0; sentry __cerb(*this, true); if (__cerb && __n > 1) { try { const int_type __idelim = traits_type::to_int_type(__delim); const int_type __eof = traits_type::eof(); __streambuf_type* __sb = this->rdbuf(); int_type __c = __sb->sbumpc(); bool __testdelim = __c == __idelim; bool __testeof = __c == __eof; while (_M_gcount < __n - 1 && !__testeof && !__testdelim) { *__s++ = traits_type::to_char_type(__c); ++_M_gcount; __c = __sb->sbumpc(); __testeof = __c == __eof; __testdelim = __c == __idelim; } if (__testdelim || _M_gcount == __n - 1) __sb->sputbackc(__c); if (__testeof) this->setstate(ios_base::eofbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } *__s = char_type(); if (!_M_gcount) this->setstate(ios_base::failbit); return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: get(__streambuf_type& __sb, char_type __delim) { _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { int_type __c; __streambuf_type* __this_sb = this->rdbuf(); try { const int_type __idelim = traits_type::to_int_type(__delim); const int_type __eof = traits_type::eof(); __c = __this_sb->sbumpc(); bool __testdelim = __c == __idelim; bool __testeof = __c == __eof; bool __testput = true; while (!__testeof && !__testdelim && (__testput = __sb.sputc(traits_type::to_char_type(__c)) != __eof)) { ++_M_gcount; __c = __this_sb->sbumpc(); __testeof = __c == __eof; __testdelim = __c == __idelim; } if (__testdelim || !__testput) __this_sb->sputbackc(traits_type::to_char_type(__c)); if (__testeof) this->setstate(ios_base::eofbit); } catch(exception& __fail) { __this_sb->sputbackc(traits_type::to_char_type(__c)); } } if (!_M_gcount) this->setstate(ios_base::failbit); return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: getline(char_type* __s, streamsize __n, char_type __delim) { _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { try { __streambuf_type* __sb = this->rdbuf(); int_type __c = __sb->sbumpc(); ++_M_gcount; const int_type __idelim = traits_type::to_int_type(__delim); const int_type __eof = traits_type::eof(); bool __testdelim = __c == __idelim; bool __testeof = __c == __eof; while (_M_gcount < __n && !__testeof && !__testdelim) { *__s++ = traits_type::to_char_type(__c); __c = __sb->sbumpc(); ++_M_gcount; __testeof = __c == __eof; __testdelim = __c == __idelim; } if (__testeof) { --_M_gcount; this->setstate(ios_base::eofbit); } else if (!__testdelim) { --_M_gcount; __sb->sputbackc(traits_type::to_char_type(__c)); this->setstate(ios_base::failbit); } } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } *__s = char_type(); if (!_M_gcount) this->setstate(ios_base::failbit); return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: ignore(streamsize __n, int_type __delim) { _M_gcount = 0; sentry __cerb(*this, true); if (__cerb && __n > 0) { try { const int_type __idelim = traits_type::to_int_type(__delim); const int_type __eof = traits_type::eof(); __streambuf_type* __sb = this->rdbuf(); int_type __c = __sb->sbumpc(); bool __testdelim = __c == __idelim; bool __testeof = __c == __eof; __n = min(__n, numeric_limits::max()); while (_M_gcount < __n - 1 && !__testeof && !__testdelim) { ++_M_gcount; __c = __sb->sbumpc(); __testeof = __c == __eof; __testdelim = __c == __idelim; } if ((_M_gcount == __n - 1 && !__testeof) || __testdelim) ++_M_gcount; if (__testeof) this->setstate(ios_base::eofbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>::int_type basic_istream<_CharT, _Traits>:: peek(void) { int_type __c = traits_type::eof(); _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { try { __c = this->rdbuf()->sgetc(); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return __c; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: read(char_type* __s, streamsize __n) { _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { if (__n > 0) { try { const int_type __eof = traits_type::eof(); __streambuf_type* __sb = this->rdbuf(); int_type __c = __sb->sbumpc(); bool __testeof = __c == __eof; while (_M_gcount < __n - 1 && !__testeof) { *__s++ = traits_type::to_char_type(__c); ++_M_gcount; __c = __sb->sbumpc(); __testeof = __c == __eof; } if (__testeof) this->setstate(ios_base::eofbit | ios_base::failbit); else { *__s++ = traits_type::to_char_type(__c); ++_M_gcount; } } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } } else this->setstate(ios_base::failbit); return *this; } template< _CharT, _Traits> streamsize basic_istream<_CharT, _Traits>:: readsome(char_type* __s, streamsize __n) { const int_type __eof = traits_type::eof(); _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { if (__n > 0) { try { streamsize __num = this->rdbuf()->in_avail(); if (__num != static_cast(__eof)) { __num = min(__num, __n); _M_gcount = this->rdbuf()->sgetn(__s, __num); } else this->setstate(ios_base::eofbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } } else this->setstate(ios_base::failbit); return _M_gcount; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: putback(char_type __c) { sentry __cerb(*this, true); if (__cerb) { try { const int_type __eof = traits_type::eof(); __streambuf_type* __sb = this->rdbuf(); if (!__sb || __sb->sputbackc(__c) == __eof) this->setstate(ios_base::badbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } else this->setstate(ios_base::failbit); return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: unget(void) { _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { try { const int_type __eof = traits_type::eof(); __streambuf_type* __sb = this->rdbuf(); if (!__sb || __eof == __sb->sungetc()) this->setstate(ios_base::badbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } else this->setstate(ios_base::failbit); return *this; } template< _CharT, _Traits> int basic_istream<_CharT, _Traits>:: sync(void) { int __ret = traits_type::eof(); _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { try { __streambuf_type* __sb = this->rdbuf(); if (!__sb || __ret == __sb->pubsync()) this->setstate(ios_base::badbit); else __ret = 0; } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return __ret; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>::pos_type basic_istream<_CharT, _Traits>:: tellg(void) { pos_type __ret = pos_type(-1); _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { try { __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::in); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return __ret; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: seekg(pos_type __pos) { _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { try { pos_type __err = this->rdbuf()->pubseekpos(__pos, ios_base::in); if (__err == pos_type(off_type(-1))) this->setstate(ios_base::failbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: seekg(off_type __off, ios_base::seekdir __dir) { _M_gcount = 0; sentry __cerb(*this, true); if (__cerb) { try { pos_type __err = this->rdbuf()->pubseekoff(__off, __dir, ios_base::in); if (__err == pos_type(off_type(-1))) this->setstate(ios_base::failbit); } catch(exception& __fail) { this->setstate(ios_base::badbit); if ((this->exceptions() & ios_base::badbit) != 0) throw; } } return *this; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) { typedef basic_istream<_CharT, _Traits> __istream_type; __istream_type::sentry __cerb(__in, false); if (__cerb) { try { __in.get(__c); } catch(exception& __fail) { __in.setstate(ios_base::badbit); if ((__in.exceptions() & ios_base::badbit) != 0) throw; } } else __in.setstate(ios_base::failbit); return __in; } template< _CharT, _Traits> basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) { typedef basic_istream<_CharT, _Traits> __istream_type; typedef __istream_type::__streambuf_type __streambuf_type; typedef _Traits::int_type int_type; typedef _CharT char_type; typedef ctype<_CharT> __ctype_type; streamsize __extracted = 0; __istream_type::sentry __cerb(__in, false); if (__cerb) { try { streamsize __num = __in.width(); if (__num == 0) __num = numeric_limits::max(); __streambuf_type* __sb = __in.rdbuf(); const __ctype_type* __ctype = __in._M_get_fctype_ios(); int_type __c = __sb->sbumpc(); const int_type __eof = _Traits::eof(); bool __testsp = __ctype->is(ctype_base::space, __c); bool __testeof = __c == __eof; while (__extracted < __num - 1 && !__testeof && !__testsp) { *__s++ = __c; ++__extracted; __c = __sb->sbumpc(); __testeof = __c == __eof; __testsp = __ctype->is(ctype_base::space, __c); } if (!__testeof) __sb->sputbackc(__c); else __in.setstate(ios_base::eofbit); *__s = char_type(); __in.width(0); } catch(exception& __fail) { __in.setstate(ios_base::badbit); if ((__in.exceptions() & ios_base::badbit) != 0) throw; } } if (!__extracted) __in.setstate(ios_base::failbit); return __in; } template< _CharT, _Traits> basic_istream<_CharT,_Traits>& ws(basic_istream<_CharT,_Traits>& __in) { typedef basic_istream<_CharT, _Traits> __istream_type; typedef __istream_type::__streambuf_type __streambuf_type; typedef __istream_type::__ctype_type __ctype_type; typedef __istream_type::int_type __int_type; typedef __istream_type::char_type __char_type; __streambuf_type* __sb = __in.rdbuf(); const __ctype_type* __ctype = __in._M_get_fctype_ios(); const __int_type __eof = _Traits::eof(); __int_type __c; bool __testeof; bool __testsp; do { __c = __sb->sbumpc(); __testeof = __c == __eof; __testsp = __ctype->is(ctype_base::space, __c); } while (!__testeof && __testsp); if (!__testeof && !__testsp) __sb->sputbackc(__c); else __in.setstate(ios_base::eofbit); return __in; } template< _CharT, _Traits, _Alloc> basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __in, basic_string<_CharT, _Traits, _Alloc>& __str) { typedef basic_istream<_CharT, _Traits> __istream_type; typedef __istream_type::int_type __int_type; typedef __istream_type::__streambuf_type __streambuf_type; typedef __istream_type::__ctype_type __ctype_type; typedef basic_string<_CharT, _Traits, _Alloc> __string_type; typedef __string_type::size_type __size_type; __size_type __extracted = 0; __istream_type::sentry __cerb(__in, false); if (__cerb) { __str.erase(); streamsize __w = __in.width(); __size_type __n; __n = __w > 0 ? static_cast<__size_type>(__w) : __str.max_size(); __streambuf_type* __sb = __in.rdbuf(); const __ctype_type* __ctype = __in._M_get_fctype_ios(); __int_type __c = __sb->sbumpc(); const __int_type __eof = _Traits::eof(); bool __testsp = __ctype->is(ctype_base::space, __c); bool __testeof = __c == __eof; while (__extracted < __n && !__testeof && !__testsp) { __str += _Traits::to_char_type(__c); ++__extracted; __c = __sb->sbumpc(); __testeof = __c == __eof; __testsp = __ctype->is(ctype_base::space, __c); } if (!__testeof) __sb->sputbackc(__c); else __in.setstate(ios_base::eofbit); __in.width(0); } if (!__extracted) __in.setstate (ios_base::failbit); return __in; } template< _CharT, _Traits, _Alloc> basic_istream<_CharT, _Traits>& getline(basic_istream<_CharT, _Traits>& __in, basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) { typedef basic_istream<_CharT, _Traits> __istream_type; typedef __istream_type::int_type __int_type; typedef __istream_type::__streambuf_type __streambuf_type; typedef __istream_type::__ctype_type __ctype_type; typedef basic_string<_CharT, _Traits, _Alloc> __string_type; typedef __string_type::size_type __size_type; __size_type __extracted = 0; bool __testdelim = false; __istream_type::sentry __cerb(__in, true); if (__cerb) { __str.erase(); __size_type __n = __str.max_size(); __int_type __idelim = _Traits::to_int_type(__delim); __streambuf_type* __sb = __in.rdbuf(); __int_type __c = __sb->sbumpc(); const __int_type __eof = _Traits::eof(); __testdelim = __c == __idelim; bool __testeof = __c == __eof; while (__extracted <= __n && !__testeof && !__testdelim) { __str += _Traits::to_char_type(__c); ++__extracted; __c = __sb->sbumpc(); __testeof = __c == __eof; __testdelim = __c == __idelim; } if (__testeof) __in.setstate(ios_base::eofbit); } if (!__extracted && !__testdelim) __in.setstate(ios_base::failbit); return __in; } template inline basic_istream<_CharT,_Traits>& getline(basic_istream<_CharT, _Traits>& __in, basic_string<_CharT,_Traits,_Alloc>& __str) { return getline(__in, __str, __in.widen('\n')); } extern template class basic_istream; extern template istream& ws(istream&); extern template istream& operator>>(istream&, char&); extern template istream& operator>>(istream&, char*); extern template istream& operator>>(istream&, unsigned char&); extern template istream& operator>>(istream&, signed char&); extern template istream& operator>>(istream&, unsigned char*); extern template istream& operator>>(istream&, signed char*); } # 288 "/usr/local/include/g++-v3/istream" 2 3 # 46 "/usr/local/include/g++-v3/fstream" 2 3 # 1 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/basic_file.h" 1 3 # 43 "/usr/local/include/g++-v3/ia64-hp-hpux11.22/bits/basic_file.h" 3 namespace std { template< _CharT> class __basic_file; template<> class __basic_file { __c_file_type* _M_cfile; bool _M_cfile_created; public: __basic_file(__c_lock* __lock = 0); void _M_open_mode(ios_base::openmode __mode, int& __p_mode, int& __rw_mode, char* __c_mode); __basic_file* open(const char* __name, ios_base::openmode __mode, int __prot = 0664); __basic_file* sys_open(__c_file_type* __file, ios_base::openmode __mode); char sys_getc(); char sys_ungetc(char); __basic_file* close(); bool is_open(); int fd(); ~__basic_file(); streamsize xsputn(const char* __s, streamsize __n); streamsize xsgetn(char* __s, streamsize __n); streamoff seekoff(streamoff __off, ios_base::seekdir __way, ios_base::openmode __mode = ios_base::in | ios_base::out); streamoff seekpos(streamoff __pos, ios_base::openmode __mode = ios_base::in | ios_base::out); int sync(); }; } # 49 "/usr/local/include/g++-v3/fstream" 2 3 namespace std { template< _CharT, _Traits> class basic_filebuf : public basic_streambuf<_CharT, _Traits> { public: typedef _CharT char_type; typedef _Traits traits_type; typedef traits_type::int_type int_type; typedef traits_type::pos_type pos_type; typedef traits_type::off_type off_type; typedef basic_streambuf __streambuf_type; typedef basic_filebuf __filebuf_type; typedef __basic_file __file_type; typedef traits_type::state_type __state_type; typedef codecvt __codecvt_type; typedef __codecvt_type::result __res_type; typedef ctype __ctype_type; friend class ios_base; protected: __file_type* _M_file; __state_type _M_state_cur; __state_type _M_state_beg; __c_lock _M_lock; bool _M_buf_allocated; bool _M_last_overflowed; public: basic_filebuf(); basic_filebuf(__c_file_type* __f, ios_base::openmode __mode, int_type __s = static_cast(1024)); int fd(); virtual ~basic_filebuf() { this->close(); _M_last_overflowed = false; } bool is_open() const { return _M_file ? _M_file->is_open() : false; } __filebuf_type* open(const char* __s, ios_base::openmode __mode); __filebuf_type* close(); protected: void _M_allocate_internal_buffer(); void _M_destroy_internal_buffer(); void _M_allocate_pback_buffer(); void _M_allocate_file(); virtual streamsize showmanyc(); virtual int_type underflow(); virtual int_type pbackfail(int_type __c = _Traits::eof()); # 158 "/usr/local/include/g++-v3/fstream" 3 virtual int_type overflow(int_type __c = _Traits::eof()); # 168 "/usr/local/include/g++-v3/fstream" 3 int_type _M_really_overflow(int_type __c = _Traits::eof()); void _M_convert_to_external(char_type*, streamsize, streamsize&, streamsize&); virtual __streambuf_type* setbuf(char_type* __s, streamsize __n); virtual pos_type seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode = ios_base::in | ios_base::out); virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode = ios_base::in | ios_base::out); virtual int sync() { bool __testput = _M_out_cur && _M_out_beg < _M_out_end; if (__testput && !_M_file->sync()) { streamoff __cur = _M_file->seekoff(0, ios_base::cur); off_type __off = _M_out_cur - _M_out_beg; _M_really_overflow(); _M_file->seekpos(__cur + __off); } _M_last_overflowed = false; return 0; } virtual void imbue(const locale& __loc); virtual streamsize xsgetn(char_type* __s, streamsize __n) { streamsize __ret = 0; if (_M_pback_init) { while (__ret < __n && _M_in_cur < _M_in_end) { *__s = *_M_in_cur; ++__ret; ++__s; ++_M_in_cur; } _M_pback_destroy(); } if (__ret < __n) __ret += __streambuf_type::xsgetn(__s, __n - __ret); return __ret; } virtual streamsize xsputn(const char_type* __s, streamsize __n) { _M_pback_destroy(); return __streambuf_type::xsputn(__s, __n); } void _M_output_unshift(); }; template< _CharT, _Traits> class basic_ifstream : public basic_istream<_CharT, _Traits> { public: typedef _CharT char_type; typedef _Traits traits_type; typedef traits_type::int_type int_type; typedef traits_type::pos_type pos_type; typedef traits_type::off_type off_type; typedef basic_filebuf __filebuf_type; typedef basic_istream __istream_type; private: __filebuf_type _M_filebuf; public: basic_ifstream() : __istream_type(__null), _M_filebuf() { this->init(&_M_filebuf); } # 283 "/usr/local/include/g++-v3/fstream" 3 explicit basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) : __istream_type(__null), _M_filebuf() { this->init(&_M_filebuf); this->open(__s, __mode); } ~basic_ifstream() { } __filebuf_type* rdbuf() const { return const_cast<__filebuf_type*>(&_M_filebuf); } bool is_open() { return _M_filebuf.is_open(); } void open(const char* __s, ios_base::openmode __mode = ios_base::in) { if (_M_filebuf.open(__s, __mode | ios_base::in) == __null) this->setstate(ios_base::failbit); } void close() { if (!_M_filebuf.close()) this->setstate(ios_base::failbit); } }; template< _CharT, _Traits> class basic_ofstream : public basic_ostream<_CharT,_Traits> { public: typedef _CharT char_type; typedef _Traits traits_type; typedef traits_type::int_type int_type; typedef traits_type::pos_type pos_type; typedef traits_type::off_type off_type; typedef basic_filebuf __filebuf_type; typedef basic_ostream __ostream_type; private: __filebuf_type _M_filebuf; public: basic_ofstream() : __ostream_type(__null), _M_filebuf() { this->init(&_M_filebuf); } # 360 "/usr/local/include/g++-v3/fstream" 3 explicit basic_ofstream(const char* __s, ios_base::openmode __mode = ios_base::out|ios_base::trunc) : __ostream_type(__null), _M_filebuf() { this->init(&_M_filebuf); this->open(__s, __mode); } ~basic_ofstream() { } __filebuf_type* rdbuf() const { return const_cast<__filebuf_type*>(&_M_filebuf); } bool is_open() { return _M_filebuf.is_open(); } # 396 "/usr/local/include/g++-v3/fstream" 3 void open(const char* __s, ios_base::openmode __mode = ios_base::out | ios_base::trunc) { if (!_M_filebuf.open(__s, __mode | ios_base::out)) this->setstate(ios_base::failbit); } void close() { if (!_M_filebuf.close()) this->setstate(ios_base::failbit); } }; template< _CharT, _Traits> class basic_fstream : public basic_iostream<_CharT, _Traits> { public: typedef _CharT char_type; typedef _Traits traits_type; typedef traits_type::int_type int_type; typedef traits_type::pos_type pos_type; typedef traits_type::off_type off_type; typedef basic_filebuf __filebuf_type; typedef basic_ios __ios_type; typedef basic_iostream __iostream_type; private: __filebuf_type _M_filebuf; public: basic_fstream() : __iostream_type(__null), _M_filebuf() { this->init(&_M_filebuf); } # 452 "/usr/local/include/g++-v3/fstream" 3 explicit basic_fstream(const char* __s, ios_base::openmode __mode = ios_base::in | ios_base::out) : __iostream_type(__null), _M_filebuf() { this->init(&_M_filebuf); this->open(__s, __mode); } ~basic_fstream() { } __filebuf_type* rdbuf() const { return const_cast<__filebuf_type*>(&_M_filebuf); } bool is_open() { return _M_filebuf.is_open(); } # 488 "/usr/local/include/g++-v3/fstream" 3 void open(const char* __s, ios_base::openmode __mode = ios_base::in | ios_base::out) { if (!_M_filebuf.open(__s, __mode)) setstate(ios_base::failbit); } void close() { if (!_M_filebuf.close()) setstate(ios_base::failbit); } }; } # 1 "/usr/local/include/g++-v3/bits/fstream.tcc" 1 3 # 39 "/usr/local/include/g++-v3/bits/fstream.tcc" 3 namespace std { template< _CharT, _Traits> void basic_filebuf<_CharT, _Traits>:: _M_allocate_file() { if (!_M_file) { _M_buf_unified = true; try { _M_file = new __file_type(&_M_lock); } catch(...) { delete _M_file; throw; } } } template< _CharT, _Traits> void basic_filebuf<_CharT, _Traits>:: _M_allocate_internal_buffer() { if (!_M_buf && _M_buf_size_opt) { _M_buf_size = _M_buf_size_opt; try { _M_buf = new char_type[_M_buf_size]; } catch(...) { delete [] _M_buf; throw; } _M_buf_allocated = true; } } template< _CharT, _Traits> void basic_filebuf<_CharT, _Traits>:: _M_destroy_internal_buffer() { if (_M_buf_allocated) { delete [] _M_buf; _M_buf = __null; _M_buf_allocated = false; this->setg(__null, __null, __null); this->setp(__null, __null); } } template< _CharT, _Traits> void basic_filebuf<_CharT, _Traits>:: _M_allocate_pback_buffer() { if (!_M_pback && _M_pback_size) { try { _M_pback = new char_type[_M_pback_size]; } catch(...) { delete [] _M_pback; throw; } } } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>:: basic_filebuf() : __streambuf_type(), _M_file(__null), _M_state_cur(__state_type()), _M_state_beg(__state_type()), _M_buf_allocated(false), _M_last_overflowed(false) { } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>:: basic_filebuf(__c_file_type* __f, ios_base::openmode __mode, int_type __s) : __streambuf_type(), _M_file(__null), _M_state_cur(__state_type()), _M_state_beg(__state_type()), _M_buf_allocated(false), _M_last_overflowed(false) { _M_allocate_file(); _M_file->sys_open(__f, __mode); if (this->is_open()) { _M_mode = __mode; if (__s) { _M_buf_size_opt = __s; _M_allocate_internal_buffer(); _M_set_indeterminate(); } _M_allocate_pback_buffer(); } } template< _CharT, _Traits> int basic_filebuf<_CharT, _Traits>:: fd() { return _M_file->fd(); } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>::__filebuf_type* basic_filebuf<_CharT, _Traits>:: open(const char* __s, ios_base::openmode __mode) { __filebuf_type *__ret = __null; if (!this->is_open()) { _M_allocate_file(); _M_file->open(__s, __mode); if (this->is_open()) { _M_allocate_internal_buffer(); _M_allocate_pback_buffer(); _M_mode = __mode; _M_set_indeterminate(); if (__mode & ios_base::ate && this->seekoff(0, ios_base::end, __mode) < 0) this->close(); __ret = this; } } return __ret; } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>::__filebuf_type* basic_filebuf<_CharT, _Traits>:: close() { __filebuf_type *__ret = __null; if (this->is_open()) { const int_type __eof = traits_type::eof(); bool __testput = _M_out_cur && _M_out_beg < _M_out_end; if (__testput && _M_really_overflow(__eof) == __eof) return __ret; _M_mode = ios_base::openmode(0); _M_destroy_internal_buffer(); _M_pback_destroy(); if (_M_pback) { delete [] _M_pback; _M_pback = __null; } # 209 "/usr/local/include/g++-v3/bits/fstream.tcc" 3 __ret = this; } if (_M_file) { delete _M_file; _M_file = __null; } _M_last_overflowed = false; return __ret; } template< _CharT, _Traits> streamsize basic_filebuf<_CharT, _Traits>:: showmanyc() { streamsize __ret = -1; bool __testin = _M_mode & ios_base::in; if (__testin && this->is_open()) { if (_M_in_cur < _M_in_end) __ret = _M_in_end - _M_in_cur; else __ret = 0; } _M_last_overflowed = false; return __ret; } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: underflow() { int_type __ret = traits_type::eof(); bool __testin = _M_mode & ios_base::in; bool __testout = _M_mode & ios_base::out; if (__testin) { if (_M_pback_init) { _M_pback_destroy(); if (_M_in_cur < _M_in_end) return traits_type::to_int_type(*_M_in_cur); } bool __testget = _M_in_cur && _M_in_beg < _M_in_cur; bool __testinit = _M_is_indeterminate(); if (__testget) { if (__testout) _M_really_overflow(); else _M_file->seekoff(_M_in_cur - _M_in_beg, ios_base::cur, ios_base::in); } if (__testinit || __testget) { const locale __loc = this->getloc(); const __codecvt_type& __cvt = use_facet<__codecvt_type>(__loc); streamsize __elen = 0; streamsize __ilen = 0; if (__cvt.always_noconv()) { __elen = _M_file->xsgetn(reinterpret_cast(_M_in_beg), _M_buf_size); __ilen = __elen; } else { char* __buf = static_cast(__builtin_alloca(_M_buf_size)); __elen = _M_file->xsgetn(__buf, _M_buf_size); const char* __eend; char_type* __iend; __res_type __r = __cvt.in(_M_state_cur, __buf, __buf + __elen, __eend, _M_in_beg, _M_in_beg + _M_buf_size, __iend); if (__r == codecvt_base::ok) __ilen = __iend - _M_in_beg; else { __ilen = 0; _M_file->seekoff(-__elen, ios_base::cur, ios_base::in); } } if (0 < __ilen) { _M_set_determinate(__ilen); if (__testout) _M_out_cur = _M_in_cur; __ret = traits_type::to_int_type(*_M_in_cur); _M_file->seekoff(-__elen, ios_base::cur, ios_base::in); } } } _M_last_overflowed = false; return __ret; } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: pbackfail(int_type __i) { int_type __ret = traits_type::eof(); bool __testin = _M_mode & ios_base::in; if (__testin) { bool __testpb = _M_in_beg < _M_in_cur; char_type __c = traits_type::to_char_type(__i); bool __testeof = traits_type::eq_int_type(__i, __ret); if (__testpb) { bool __testout = _M_mode & ios_base::out; bool __testeq = traits_type::eq(__c, this->gptr()[-1]); if (!__testeof && __testeq) { --_M_in_cur; if (__testout) --_M_out_cur; __ret = __i; } else if (__testeof) { --_M_in_cur; if (__testout) --_M_out_cur; __ret = traits_type::not_eof(__i); } else if (!__testeof) { --_M_in_cur; if (__testout) --_M_out_cur; _M_pback_create(); *_M_in_cur = __c; __ret = __i; } } else { this->seekoff(-1, ios_base::cur); this->underflow(); if (!__testeof) { if (!traits_type::eq(__c, *_M_in_cur)) { _M_pback_create(); *_M_in_cur = __c; } __ret = __i; } else __ret = traits_type::not_eof(__i); } } _M_last_overflowed = false; return __ret; } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: overflow(int_type __c) { int_type __ret = traits_type::eof(); bool __testput = _M_out_cur && _M_out_cur < _M_buf + _M_buf_size; bool __testout = _M_mode & ios_base::out; if (__testout) { if (__testput) { *_M_out_cur = traits_type::to_char_type(__c); _M_out_cur_move(1); __ret = traits_type::not_eof(__c); } else __ret = this->_M_really_overflow(__c); } _M_last_overflowed = false; return __ret; } template< _CharT, _Traits> void basic_filebuf<_CharT, _Traits>:: _M_convert_to_external(_CharT* __ibuf, streamsize __ilen, streamsize& __elen, streamsize& __plen) { const locale __loc = this->getloc(); const __codecvt_type& __cvt = use_facet<__codecvt_type>(__loc); if (__cvt.always_noconv() && __ilen) { __elen += _M_file->xsputn(reinterpret_cast(__ibuf), __ilen); __plen += __ilen; } else { int __ext_multiplier = __cvt.encoding(); if (__ext_multiplier == -1 || __ext_multiplier == 0) __ext_multiplier = sizeof(char_type); streamsize __blen = __ilen * __ext_multiplier; char* __buf = static_cast(__builtin_alloca(__blen)); char* __bend; const char_type* __iend; __res_type __r = __cvt.out(_M_state_cur, __ibuf, __ibuf + __ilen, __iend, __buf, __buf + __blen, __bend); if (__r != codecvt_base::error) __blen = __bend - __buf; else __blen = 0; if (__blen) { __elen += _M_file->xsputn(__buf, __blen); __plen += __blen; } if (__r == codecvt_base::partial) { const char_type* __iresume = __iend; streamsize __rlen = _M_out_end - __iend; __r = __cvt.out(_M_state_cur, __iresume, __iresume + __rlen, __iend, __buf, __buf + __blen, __bend); if (__r != codecvt_base::error) __rlen = __bend - __buf; else __rlen = 0; if (__rlen) { __elen += _M_file->xsputn(__buf, __rlen); __plen += __rlen; } } } } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>::int_type basic_filebuf<_CharT, _Traits>:: _M_really_overflow(int_type __c) { int_type __ret = traits_type::eof(); bool __testput = _M_out_cur && _M_out_beg < _M_out_end; bool __testunbuffered = _M_file && !_M_buf_size; if (__testput || __testunbuffered) { streamsize __elen = 0; streamsize __plen = 0; if (!__testunbuffered) _M_convert_to_external(_M_out_beg, _M_out_end - _M_out_beg, __elen, __plen); if (!traits_type::eq_int_type(__c, traits_type::eof())) { char_type __pending = traits_type::to_char_type(__c); _M_convert_to_external(&__pending, 1, __elen, __plen); } if (__elen == __plen && !_M_file->sync()) { _M_set_indeterminate(); __ret = traits_type::not_eof(__c); } } _M_last_overflowed = true; return __ret; } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>::__streambuf_type* basic_filebuf<_CharT, _Traits>:: setbuf(char_type* __s, streamsize __n) { if (!this->is_open() && __s == 0 && __n == 0) _M_buf_size_opt = 0; else if (__s && __n) { _M_destroy_internal_buffer(); _M_buf = __s; _M_buf_size_opt = _M_buf_size = __n; _M_set_indeterminate(); _M_allocate_pback_buffer(); } _M_last_overflowed = false; return this; } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>::pos_type basic_filebuf<_CharT, _Traits>:: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) { pos_type __ret = pos_type(off_type(-1)); bool __testopen = this->is_open(); bool __testin = __mode & ios_base::in && _M_mode & ios_base::in; bool __testout = __mode & ios_base::out && _M_mode & ios_base::out; int __width = use_facet<__codecvt_type>(_M_buf_locale).encoding(); if (__width < 0) __width = 0; bool __testfail = __off != 0 && __width <= 0; if (__testopen && !__testfail && (__testin || __testout)) { _M_pback_destroy(); if (__way != ios_base::cur || __off != 0) { off_type __computed_off = __width * __off; bool __testget = _M_in_cur && _M_in_beg < _M_in_end; bool __testput = _M_out_cur && _M_out_beg < _M_out_end; if (__testput || _M_last_overflowed) { this->sync(); _M_output_unshift(); } else if (__testget && __way == ios_base::cur) __computed_off += _M_in_cur - _M_in_beg; __ret = _M_file->seekoff(__computed_off, __way, __mode); _M_set_indeterminate(); } else { __ret = _M_file->seekoff(__off, ios_base::cur, __mode); __ret += max(_M_out_cur, _M_in_cur) - _M_buf; } } _M_last_overflowed = false; return __ret; } template< _CharT, _Traits> basic_filebuf<_CharT, _Traits>::pos_type basic_filebuf<_CharT, _Traits>:: seekpos(pos_type __pos, ios_base::openmode __mode) { pos_type __ret; off_type __off = __pos; __ret = this->seekoff(__off, ios_base::beg, __mode); _M_last_overflowed = false; return __ret; } template< _CharT, _Traits> void basic_filebuf<_CharT, _Traits>:: _M_output_unshift() { } template< _CharT, _Traits> void basic_filebuf<_CharT, _Traits>:: imbue(const locale& __loc) { bool __testbeg = gptr() == eback() && pptr() == pbase(); if (__testbeg && _M_buf_locale != __loc) { _M_buf_locale = __loc; _M_buf_locale_init = true; } _M_last_overflowed = false; } extern template class basic_filebuf; extern template class basic_filebuf; extern template class basic_ifstream; extern template class basic_ifstream; extern template class basic_ofstream; extern template class basic_ofstream; extern template class basic_fstream; extern template class basic_fstream; } # 511 "/usr/local/include/g++-v3/fstream" 2 3 # 33 "/usr/local/include/g++-v3/backward/fstream.h" 2 3 using std::filebuf; using std::ifstream; using std::ofstream; using std::fstream; using std::streampos; # 19 "param.C" 2 # 1 "param.h" 1 # 17 "param.h" # 1 "/usr/include/aCC/iostream/fstream.h" 1 # 20 "/usr/include/aCC/iostream/fstream.h" # 1 "/usr/local/include/g++-v3/backward/iostream.h" 1 3 # 32 "/usr/local/include/g++-v3/backward/iostream.h" 3 # 1 "/usr/local/include/g++-v3/iostream" 1 3 # 43 "/usr/local/include/g++-v3/iostream" 3 namespace std { extern istream cin; extern ostream cout; extern ostream cerr; extern ostream clog; # 62 "/usr/local/include/g++-v3/iostream" 3 static ios_base::Init __ioinit; } # 33 "/usr/local/include/g++-v3/backward/iostream.h" 2 3 using std::iostream; using std::ostream; using std::istream; using std::ios; using std::streambuf; using std::cout; using std::cin; using std::cerr; using std::clog; using std::ws; using std::endl; using std::ends; using std::flush; # 21 "/usr/include/aCC/iostream/fstream.h" 2 class filebuf : public streambuf { public: static const int openprot ; public: filebuf() ; filebuf(int fd); filebuf(int fd, char* p, int l) ; int is_open() { return opened ; } int fd() { return xfd ; } filebuf* open(const char *name, int om, int prot=openprot); filebuf* attach(int fd) ; int detach() ; filebuf* close() ; ~filebuf() ; public: virtual int overflow(int=(-1)); virtual int underflow(); virtual int sync() ; virtual streampos seekoff(streamoff,ios::seek_dir,int) ; virtual streambuf* setbuf(char* p, int len) ; protected: int xfd; int mode ; char opened; streampos last_seek ; char* in_start; int last_op(); char lahead[2] ; }; class fstreambase : virtual public ios { public: fstreambase() ; fstreambase(const char* name, int mode, int prot=filebuf::openprot) ; fstreambase(int fd) ; fstreambase(int fd, char* p, int l) ; ~fstreambase() ; void open(const char* name, int mode, int prot=filebuf::openprot) ; void attach(int fd); int detach(); void close() ; void setbuf(char* p, int l) ; filebuf* rdbuf() { return &buf ; } private: filebuf buf ; protected: void verify(int) ; } ; class ifstream : public fstreambase, public istream { public: ifstream() ; ifstream(const char* name, int mode=ios::in, int prot=filebuf::openprot) ; ifstream(int fd) ; ifstream(int fd, char* p, int l) ; ~ifstream() ; filebuf* rdbuf() { return fstreambase::rdbuf(); } void open(const char* name, int mode=ios::in, int prot=filebuf::openprot) ; } ; class ofstream : public fstreambase, public ostream { public: ofstream() ; ofstream(const char* name, int mode=ios::out, int prot=filebuf::openprot) ; ofstream(int fd) ; ofstream(int fd, char* p, int l) ; ~ofstream() ; filebuf* rdbuf() { return fstreambase::rdbuf(); } void open(const char* name, int mode=ios::out, int prot=filebuf::openprot) ; } ; class fstream : public fstreambase, public iostream { public: fstream() ; fstream(const char* name, int mode, int prot=filebuf::openprot) ; fstream(int fd) ; fstream(int fd, char* p, int l) ; ~fstream() ; filebuf* rdbuf() { return fstreambase::rdbuf(); } void open(const char* name, int mode, int prot=filebuf::openprot) ; } ; # 18 "param.h" 2 # 1 "common.h" 1 enum bool { false, true }; # 21 "param.h" 2 class Parameter { public: enum paramtype { USER, PROGRAMMATIC, DERIVED }; enum requirement { REQUIRED , OPTIONAL }; enum securetype { UNSECURE=0x01, SECURE1=0x02, SECURE2=0x04, SECURE3=0x08, SECURE4=(UNSECURE|SECURE1), ALL=0x10 }; Parameter ( const char* Name, const char* Tag, paramtype Type, requirement IsRequired, securetype Security, int MinLength, int MaxLength); Parameter ( const char* Name, const char* Tag, paramtype Type, requirement IsRequired, securetype Security, int MinLength, int MaxLength, const char* DefaultValue); ~Parameter (); int operator == (const Parameter& p); RWCString Name (void) const; RWCString Tag (void) const; paramtype Type (void) const; RWCString Value (void) const; void Value (const RWCString& value); void Value (const char* pvalue); RWCString Errors (void) const; requirement IsRequired (void) const; int MinLength (void) const; int MaxLength (void) const; virtual RWCString TagValue (securetype securemode) const; securetype Security (void) const; bool AddAlternateTag (const char* AltTag); bool TagMatches (const RWCString& Tag); bool TagMatches (const char* Tag); virtual bool IsComplete (bool dir_flag=false); virtual bool Update (const RWCString& value, bool ForceUpdate=false); bool Update (const char* pvalue, bool ForceUpdate=false); friend ostream& operator << (ostream& out, Parameter& p); bool IsValid (const RWCString& Value); bool IsValid (const char* pValue); virtual ostream& Choices (ostream& out); protected: virtual RWCString ValidLength (void); virtual RWCString ValidChars (void); virtual bool ValidLength (const RWCString& Value); virtual bool ValidChars (const RWCString& Value); RWCString BadCharError (char BadChar, int CharPosition); void Errors (const RWCString& errortext); virtual RWCString PostProcess (const RWCString& value); virtual bool IsEnabled (void) const; private: RWCString Name_; RWCString Tag_; paramtype Type_; requirement IsRequired_; securetype Security_; RWCString Value_; int MinLength_; int MaxLength_; RWCString ErrorText; RWCString* MyAltTags[5]; int NumAltTags_; void ClearErrors (void); }; # 23 "param.C" 2 Parameter::Parameter ( const char* Name, const char* Tag, paramtype Type, requirement IsRequired, securetype Security, int MinLength, int MaxLength) : Name_(Name), Tag_(Tag), Type_(Type), Value_(""), IsRequired_ (IsRequired), Security_ (Security), MinLength_ (MinLength), MaxLength_ (MaxLength), ErrorText (""), NumAltTags_ (0) { } Parameter::Parameter ( const char* Name, const char* Tag, paramtype Type, requirement IsRequired, securetype Security, int MinLength, int MaxLength, const char* DefaultValue) : Name_(Name), Tag_(Tag), Type_(Type), IsRequired_ (IsRequired), Security_ (Security), MinLength_ (MinLength), MaxLength_ (MaxLength), Value_ (DefaultValue), ErrorText (""), NumAltTags_ (0) { } Parameter::~Parameter () { int i; for (i = 0; i < NumAltTags_; i++) { delete MyAltTags[i]; } } bool Parameter::IsComplete (bool dir_flag) { ClearErrors (); if (IsRequired_ == Parameter::OPTIONAL) return (true); if ((IsRequired_ == Parameter::REQUIRED) && (!Value_.isNull())) { return (true); } Errors (Errors() + "Error:\nParameter \""); Errors (Errors() + Name()); Errors (Errors() + "\" \nrequires a value.\n"); return (false); } RWCString Parameter::Name (void) const { return Name_; } RWCString Parameter::Tag (void) const { return Tag_; } RWCString Parameter::Value (void) const { return Value_; } void Parameter::Value (const RWCString& value) { Value_ = value; } void Parameter::Value (const char* pvalue) { Value_ = pvalue; } Parameter::paramtype Parameter::Type (void) const { return Type_; } Parameter::requirement Parameter::IsRequired (void) const { return IsRequired_; } Parameter::securetype Parameter::Security (void) const { return Security_; } int Parameter::MinLength (void) const { return MinLength_; } int Parameter::MaxLength (void) const { return MaxLength_; } int Parameter::operator == (const Parameter& p) { return ((p.Name() == this->Name()) && (p.Tag() == this->Tag())); } RWCString Parameter::TagValue (securetype securemode) const { RWCString Pair; Pair = ""; if (IsEnabled() && ((securemode == ALL) || (Security_ & securemode))) { Pair = Tag(); Pair += "="; Pair += Value(); Pair += "\n"; } return Pair; } void Parameter::ClearErrors(void) { ErrorText = ""; } RWCString Parameter::Errors(void) const { return ErrorText; } void Parameter::Errors(const RWCString& errortext) { ErrorText = errortext; } ostream& operator << (ostream& out, Parameter& p) { return out << " name = "<< p.Name_ << endl << " tag = "<< p.Tag_ << endl << " parameter type = "<< p.Type_ << endl << " requirement = "<< p.IsRequired_ << endl << " min length = "<< p.MinLength_ << endl << " max length = "<< p.MaxLength_ << endl << " current value = "<< p.Value_ << endl; } bool Parameter::Update (const RWCString& value, bool ForceUpdate) { RWCString FinalValue; if (IsValid (value)) { if (ForceUpdate == true) { FinalValue = PostProcess (value); Value (FinalValue); } return true; } return false; } bool Parameter::Update (const char* pvalue, bool ForceUpdate) { RWCString value; value = pvalue; return (Update(value,ForceUpdate)); } bool Parameter::IsValid (const RWCString& Value) { ClearErrors (); if (!ValidLength(Value) || !ValidChars(Value)) { return false; } return true; } bool Parameter::IsValid (const char* pValue) { RWCString Value; Value = pValue; return (IsValid(Value)); } bool Parameter::ValidLength (const RWCString& Value) { size_t len; char errorstring [64]; len = Value.length(); if ((len == 0) && ((IsRequired() == Parameter::OPTIONAL) || (Type() == Parameter::PROGRAMMATIC) || (Type() == Parameter::DERIVED))){ return true; } if ((len < MinLength()) || (len > MaxLength())) { ErrorText += "Error: Value:\n\""; ErrorText += Value; ErrorText += "\" for\n"; ErrorText += "\""; ErrorText += Name(); ErrorText += "\""; ErrorText += " 1) { strcat (LengthString,"s"); } strcat (LengthString,".\n"); } else { sprintf (LengthString,"between %d and %d characters.\n", Minimum,Maximum); } ValidString += LengthString; return ValidString; } bool Parameter::ValidChars (const RWCString& Value) { int i; int CharErrors; RWCString EText; for (i = 0, CharErrors = 0; i < Value.length(); i++) { if (iscntrl(Value[i])) { EText += BadCharError (Value[i],i+1); CharErrors++; } } if (CharErrors) { ErrorText += "Error: Syntax errors in:\n\""; ErrorText += Name(); ErrorText += "\" are:\n"; ValidString += "alphanumeric, space, and punctuation\n"; ValidString += "chars. No CTRL characters are accepted.\n"; return ValidString; } RWCString Parameter::BadCharError (char BadChar, int CharPosition) { RWCString BadCharString; char position [32]; char CharText [32]; BadChar &= 255; if (BadChar == 0) { } else if (BadChar < 040) { sprintf (CharText,"^%c",BadChar + 'A' - 1); } else if (BadChar == 0177) { sprintf (CharText,"DEL"); } else if (BadChar > 0177) { sprintf (CharText,"\\%03o",BadChar); } else { if(BadChar== 0134) sprintf(CharText,"%s","\\\\"); else sprintf (CharText,"%c",BadChar); } sprintf (position,"%d",CharPosition); BadCharString = "Bad character ("; BadCharString += CharText; BadCharString += ") at character position "; BadCharString += position; BadCharString += ".\n"; return BadCharString; } RWCString Parameter::PostProcess (const RWCString& value) { return value; } ostream& Parameter::Choices (ostream& out) { return out; } bool Parameter::IsEnabled (void) const { return true; } bool Parameter::TagMatches (const RWCString& Tag) { int i; if (Tag_ == Tag) return true; for (i = 0; i < NumAltTags_; i++) { if (*(MyAltTags[i]) == Tag) return true; } return false; } bool Parameter::TagMatches (const char* Tag) { RWCString RTag; RTag = Tag; return (TagMatches(RTag)); } bool Parameter::AddAlternateTag (const char* Tag) { if (NumAltTags_ < 5) { MyAltTags [NumAltTags_] = new RWCString (Tag); NumAltTags_++; return true; } return false; }