📄 p784.c
字号:
struct __streambuf { // NOTE: If this is changed, also change __FILE in stdio/stdio.h! int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ char* _gptr; /* Current get pointer */ char* _egptr; /* End of get area. */ char* _eback; /* Start of putback+get area. */ char* _pbase; /* Start of put area. */ char* _pptr; /* Current put pointer. */ char* _epptr; /* End of put area. */ char* _base; /* Start of reserve area. */ char* _ebuf; /* End of reserve area. */ struct streambuf *_chain;};struct streambuf : private __streambuf { friend class ios; friend class istream; friend class ostream; protected: static streambuf* _list_all; /* List of open streambufs. */ streambuf*& xchain() { return _chain; } void _un_link(); void _link_in(); char* gptr() const { return _gptr; } char* pptr() const { return _pptr; } char* egptr() const { return _egptr; } char* epptr() const { return _epptr; } char* pbase() const { return _pbase; } char* eback() const { return _eback; } char* ebuf() const { return _ebuf; } char* base() const { return _base; } void xput_char(char c) { *_pptr++ = c; } int xflags() { return _flags; } int xflags(int f) { int fl = _flags; _flags = f; return fl; } void xsetflags(int f) { _flags |= f; } void gbump(int n) { _gptr += n; } void pbump(int n) { _pptr += n; } void setb(char* b, char* eb, int a=0); void setp(char* p, char* ep) { _pbase=_pptr=p; _epptr=ep; } void setg(char* eb, char* g, char *eg) { _eback=eb; _gptr=g; _egptr=eg; } public: static int flush_all(); static void flush_all_linebuffered(); // Flush all line buffered files. virtual int underflow(); // Leave public for now virtual int overflow(int c = (-1) ); // Leave public for now virtual int doallocate(); virtual streampos seekoff(streamoff, _seek_dir, int mode=ios::in|ios::out); virtual streampos seekpos(streampos pos, int mode = ios::in|ios::out); int sputbackc(char c); int sungetc(); streambuf(); virtual ~streambuf(); int unbuffered() { return _flags & 2 ? 1 : 0; } int linebuffered() { return _flags & 0x4000 ? 1 : 0; } void unbuffered(int i) { if (i) _flags |= 2 ; else _flags &= ~2 ; } void linebuffered(int i) { if (i) _flags |= 0x4000 ; else _flags &= ~0x4000 ; } int allocate() { if (base() || unbuffered()) return 0; else return doallocate(); } virtual int sync(); virtual int pbackfail(int c); virtual int ungetfail(); virtual streambuf* setbuf(char* p, int len); int in_avail() { return _egptr - _gptr; } int out_waiting() { return _pptr - _pbase; } virtual int sputn(const char* s, int n); virtual int sgetn(char* s, int n); long sgetline(char* buf, size_t n, char delim, int putback_delim); int sbumpc() { if (_gptr >= _egptr && underflow() == (-1) ) return (-1) ; else return *(unsigned char*)_gptr++; } int sgetc() { if (_gptr >= _egptr && underflow() == (-1) ) return (-1) ; else return *(unsigned char*)_gptr; } int snextc() { if (++_gptr >= _egptr && underflow() == (-1) ) return (-1) ; else return *(unsigned char*)_gptr; } int sputc(int c) { if (_pptr >= _epptr) return overflow(c); return *_pptr++ = c, (unsigned char)c; } int vscan(char const *fmt0, char* ap); int vform(char const *fmt0, char* ap);};struct __file_fields { char _fake; char _shortbuf[1]; short _fileno; int _blksize; char* _save_gptr; char* _save_egptr; long _offset;};class filebuf : public streambuf { struct __file_fields _fb; void init(); public: filebuf(); filebuf(int fd); filebuf(int fd, char* p, int len); ~filebuf(); filebuf* attach(int fd); filebuf* open(const char *filename, const char *mode); filebuf* open(const char *filename, int mode, int prot = 0664); virtual int underflow(); virtual int overflow(int c = (-1) ); int is_open() { return _fb._fileno >= 0; } int fd() { return is_open() ? _fb._fileno : (-1) ; } filebuf* close(); virtual int doallocate(); virtual streampos seekoff(streamoff, _seek_dir, int mode=ios::in|ios::out); int sputn(const char* s, int n); int sgetn(char* s, int n); protected: // See documentation in filebuf.C. virtual int pbackfail(int c); virtual int sync(); int is_reading() { return eback() != egptr(); } char* cur_ptr() { return is_reading() ? gptr() : pptr(); } /* System's idea of pointer */ char* file_ptr() { return _fb._save_gptr ? _fb._save_egptr : egptr(); } int do_flush(); // Low-level operations (Usually invoke system calls.) virtual int sys_read(char* buf, size_t size); virtual long sys_seek(long , _seek_dir); virtual long sys_write(const void*, long); virtual int sys_stat(void*); // Actually, a (struct stat*) virtual int sys_close();};inline int ios::readable() { return rdbuf()->_flags & 4 ; }inline int ios::writable() { return rdbuf()->_flags & 8 ; }inline int ios::is_open() {return rdbuf()->_flags & 4 +8 ;}//# 25 "/projects/gnu-cygnus/gnu-cygnus-8/common/g++-include/iostream.h" 2class istream; class ostream;typedef istream& (*__imanip)(istream&);typedef ostream& (*__omanip)(ostream&);extern istream& ws(istream& ins);extern ostream& flush(ostream& outs);extern ostream& endl(ostream& outs);extern ostream& ends(ostream& outs);class ostream : public ios{ void do_osfx(); public: ostream(); ostream(streambuf* sb, ostream* tied=(__null) ); ~ostream(); int opfx() { if (!good()) return 0; if (_tie) _tie->flush(); return 1; } void osfx() { if (flags() & (ios::unitbuf|ios::stdio)) do_osfx(); } streambuf* ostreambuf() const { return _strbuf; } ostream& flush(); ostream& put(char c); ostream& write(const char *s, int n); ostream& write(const unsigned char *s, int n) { return write((char*)s, n);} ostream& write(const void *s, int n) { return write((char*)s, n);} ostream& seekp(streampos); ostream& seekp(streamoff, _seek_dir); streampos tellp(); ostream& form(const char *format ...); ostream& vform(const char *format, char* args);};ostream& operator<<(ostream&, char c);ostream& operator<<(ostream& os, unsigned char c) { return os << (char)c; }//ostream& operator<<(ostream &os, signed char c) { return os << (char)c; }extern ostream& operator<<(ostream&, const char *s);inline ostream& operator<<(ostream& os, const unsigned char *s){ return os << (const char*)s; }//inline ostream& operator<<(ostream& os, const signed char *s)//{ return os << (const char*)s; }ostream& operator<<(ostream&, void *p);ostream& operator<<(ostream&, int n);ostream& operator<<(ostream&, long n);ostream& operator<<(ostream&, unsigned int n);ostream& operator<<(ostream&, unsigned long n);ostream& operator<<(ostream& os, short n) {return os << (int)n;}ostream& operator<<(ostream& os, unsigned short n){return os << (unsigned int)n;}ostream& operator<<(ostream&, float n);ostream& operator<<(ostream&, double n);ostream& operator<<(ostream& os, __omanip func) { return (*func)(os); }ostream& operator<<(ostream&, streambuf*);class istream : public ios{ size_t _gcount; public: istream(); istream(streambuf* sb, ostream*tied=(__null) ); ~istream(); streambuf* istreambuf() const { return _strbuf; } istream& get(char& c); istream& get(unsigned char& c); istream& read(char *ptr, int n); istream& read(unsigned char *ptr, int n) { return read((char*)ptr, n); } istream& read(void *ptr, int n) { return read((char*)ptr, n); } int get() { return _strbuf->sbumpc(); } istream& getline(char* ptr, int len, char delim = '\n'); istream& get(char* ptr, int len, char delim = '\n'); istream& gets(char **s, char delim = '\n'); int ipfx(int need) { if (!good()) { set(ios::failbit); return 0; } if (_tie && (need == 0 || rdbuf()->in_avail())) ; //??? THIS LINE IS QUESTIONABLE */ if (!need && (flags() & ios::skipws) && !ws(*this)) return 0; return 1; } int ipfx0() { // Optimized version of ipfx(0). if (!good()) { set(ios::failbit); return 0; } if (_tie) _tie->flush(); if ((flags() & ios::skipws) && !ws(*this)) return 0; return 1; } int ipfx1() { // Optimized version of ipfx(1). if (!good()) { set(ios::failbit); return 0; } if (_tie && rdbuf()->in_avail() == 0) _tie->flush(); return 1; } size_t gcount() { return _gcount; } istream& seekg(streampos); istream& seekg(streamoff, _seek_dir); streampos tellg(); istream& putback(char ch) { if (good() && _strbuf->sputbackc(ch) == (-1) ) clear(ios::badbit); return *this;} istream& unget() { if (good() && _strbuf->sungetc() == (-1) ) clear(ios::badbit); return *this;} istream& unget(char ch) { return putback(ch); } int skip(int i);};istream& operator>>(istream&, char*);istream& operator>>(istream& is, unsigned char* p) { return is >> (char*)p; }//istream& operator>>(istream& is, signed char* p) { return is >> (char*)p; }istream& operator>>(istream&, char& c);istream& operator>>(istream&, unsigned char& c);//istream& operator>>(istream&, signed char& c);istream& operator>>(istream&, int&);istream& operator>>(istream&, long&);istream& operator>>(istream&, short&);istream& operator>>(istream&, unsigned int&);istream& operator>>(istream&, unsigned long&);istream& operator>>(istream&, unsigned short&);istream& operator>>(istream&, float&);istream& operator>>(istream&, double&);istream& operator>>(istream& is, __imanip func) { return (*func)(is); }class iostream : public ios { size_t _gcount; public: iostream(); operator istream&() { return *(istream*)this; } operator ostream&() { return *(ostream*)this; } ~iostream(); // NOTE: These duplicate istream methods. istream& get(char& c) { return ((istream*)this)->get(c); } istream& get(unsigned char& c) { return ((istream*)this)->get(c); } istream& read(char *ptr, int n) { return ((istream*)this)->read(ptr, n); } istream& read(unsigned char *ptr, int n) { return ((istream*)this)->read((char*)ptr, n); } istream& read(void *ptr, int n) { return ((istream*)this)->read((char*)ptr, n); } int get() { return _strbuf->sbumpc(); } istream& getline(char* ptr, int len, char delim = '\n') { return ((istream*)this)->getline(ptr, len, delim); } istream& get(char* ptr, int len, char delim = '\n') { return ((istream*)this)->get(ptr, len, delim); } istream& gets(char **s, char delim = '\n') { return ((istream*)this)->gets(s, delim); } int ipfx(int need) { return ((istream*)this)->ipfx(need); } int ipfx0() { return ((istream*)this)->ipfx0(); } int ipfx1() { return ((istream*)this)->ipfx1(); } size_t gcount() { return _gcount; } istream& putback(char ch) { return ((istream*)this)->putback(ch); } istream& unget() { return ((istream*)this)->unget(); } istream& seekg(streampos pos) { return ((istream*)this)->seekg(pos); } istream& seekg(streamoff off, _seek_dir dir) { return ((istream*)this)->seekg(off, dir); } streampos tellg() { return ((istream*)this)->tellg(); } istream& unget(char ch) { return putback(ch); } // NOTE: These duplicate ostream methods. int opfx() { return ((ostream*)this)->opfx(); } void osfx() { ((ostream*)this)->osfx(); } ostream& flush() { return ((ostream*)this)->flush(); } ostream& put(char c) { return ((ostream*)this)->put(c); } ostream& write(const char *s, int n) { return ((ostream*)this)->write(s, n); } ostream& write(const unsigned char *s, int n) { return ((ostream*)this)->write((char*)s, n); } ostream& write(const void *s, int n) { return ((ostream*)this)->write((char*)s, n); } ostream& form(const char *format ...); ostream& vform(const char *format, char* args) { return ((ostream*)this)->vform(format, args); } ostream& seekp(streampos pos) { return ((ostream*)this)->seekp(pos); } ostream& seekp(streamoff off, _seek_dir dir) { return ((ostream*)this)->seekp(off, dir); } streampos tellp() { return ((ostream*)this)->tellp(); }};extern istream cin;extern ostream cout, cerr, clog; // clog->rdbuf() == cerr->rdbuf()inline ostream& ostream::put(char c) { _strbuf->sputc(c); return *this; }struct Iostream_init { } ; // Compatibility hack for AT&T libraray.//# 7 "/projects/gnu-cygnus/gnu-cygnus-8/common/g++-include/stream.h" 2extern char* form(char*, ...);extern char* dec(long, int=0);extern char* dec(int, int=0);extern char* dec(unsigned long, int=0);extern char* dec(unsigned int, int=0);extern char* hex(long, int=0);extern char* hex(int, int=0);extern char* hex(unsigned long, int=0);extern char* hex(unsigned int, int=0);extern char* oct(long, int=0);extern char* oct(int, int=0);extern char* oct(unsigned long, int=0);extern char* oct(unsigned int, int=0);inline istream& WS(istream& str) { return ws(str); }//# 26 "/projects/gnu-cygnus/gnu-cygnus-8/common/g++-include/String.h" 2//# 1 "/projects/gnu-cygnus/gnu-cygnus-8/common/g++-include/Regex.h" 1// This may look like C code, but it is really -*- C++ -*-/*Copyright (C) 1988 Free Software Foundation written by Doug Lea (dl@rocky.oswego.edu)This file is part of the GNU C++ Library. This library is freesoftware; you can redistribute it and/or modify it under the terms ofthe GNU Library General Public License as published by the FreeSoftware Foundation; either version 2 of the License, or (at youroption) any later version. This library is distributed in the hopethat it will be useful, but WITHOUT ANY WARRANTY; without even theimplied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULARPURPOSE. See the GNU Library General Public License for more details.You should have received a copy of the GNU Library General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*///#pragma interfacestruct re_pattern_buffer; // defined elsewherestruct re_registers;class Regex{private: Regex(const Regex&) {} // no X(X&) void operator = (const Regex&) {} // no assignmentprotected: re_pattern_buffer* buf; re_registers* reg;public: Regex(const char* t, int fast = 0, int bufsize = 40, const char* transtable = 0); ~Regex(); int match(const char* s, int len, int pos = 0) const; int search(const char* s, int len, int& matchlen, int startpos = 0) const; int match_info(int& start, int& length, int nth = 0) const; int OK() const; // representation invariant};// some built in regular expressionsextern const Regex RXwhite; // = "[ \n\t\r\v\f]+"extern const Regex RXint; // = "-?[0-9]+"extern const Regex RXdouble; // = "-?\\(\\([0-9]+\\.[0-9]*\\)\\| // \\([0-9]+\\)\\|\\(\\.[0-9]+\\)\\) // \\([eE][---+]?[0-9]+\\)?"extern const Regex RXalpha; // = "[A-Za-z]+"extern const Regex RXlowercase; // = "[a-z]+"extern const Regex RXuppercase; // = "[A-Z]+"extern const Regex RXalphanum; // = "[0-9A-Za-z]+"extern const Regex RXidentifier; // = "[A-Za-z_][A-Za-z0-9_]*"//# 27 "/projects/gnu-cygnus/gnu-cygnus-8/common/g++-include/String.h" 2struct StrRep // internal String representations{ unsigned short len; // string length unsigned short sz; // allocated space char s[1]; // the string starts here // (at least 1 char for trailing null) // allocated & expanded via non-public fcts};// primitive ops on StrReps -- nearly all String fns go through these.StrRep* Salloc(StrRep*, const char*, int, int);StrRep* Scopy(StrRep*, StrRep*);StrRep* Sresize(StrRep*, int);StrRep* Scat(StrRep*, const char*, int, const char*, int);StrRep* Scat(StrRep*, const char*, int,const char*,int, const char*,int);StrRep* Sprepend(StrRep*, const char*, int);StrRep* Sreverse(StrRep*, StrRep*);StrRep* Supcase(StrRep*, StrRep*);StrRep* Sdowncase(StrRep*, StrRep*);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -