📄 pstreams.h.html
字号:
<font CLASS=keyword>virtual</font> <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* uerrmsg(<font CLASS=keytype>int</font> code);<font CLASS=preproc><font CLASS=keyword>public</font>:</font> iobase(<font CLASS=keytype>int</font> ibufsize <font CLASS=symbols>=</font> <font CLASS=symbols>-</font><font CLASS=integer>1</font>); <font CLASS=keyword>virtual</font> ~iobase(); <font CLASS=keytype>void</font> open(); <font CLASS=keytype>void</font> close(); <font CLASS=keytype>void</font> cancel(); <font CLASS=keytype>void</font> reopen() { open(); } <font CLASS=keytype>int</font> seek(<font CLASS=keytype>int</font> newpos, ioseekmode mode <font CLASS=symbols>=</font> IO_BEGIN); <font CLASS=keytype>void</font> error(<font CLASS=keytype>int</font> code, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* defmsg); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> flush(); <font CLASS=keyword>virtual</font> string get_errormsg(); <font CLASS=keyword>virtual</font> string get_errstmname(); <font CLASS=keyword>virtual</font> string get_streamname() <font CLASS=symbols>=</font> <font CLASS=integer>0</font>; <font CLASS=keytype>bool</font> get_active() { <font CLASS=keyword>return</font> active; } <font CLASS=keytype>void</font> set_active(<font CLASS=keytype>bool</font> newval); <font CLASS=keytype>bool</font> get_cancelled() { <font CLASS=keyword>return</font> cancelled; } <font CLASS=keytype>void</font> set_cancelled(<font CLASS=keytype>bool</font> newval) { cancelled <font CLASS=symbols>=</font> newval; } <font CLASS=keytype>int</font> get_handle() { <font CLASS=keyword>return</font> handle; } <font CLASS=keytype>int</font> get_bufsize() { <font CLASS=keyword>return</font> bufsize; } <font CLASS=keytype>void</font> set_bufsize(<font CLASS=keytype>int</font> newval); <font CLASS=keytype>int</font> get_stmerrno() { <font CLASS=keyword>return</font> stmerrno; } <font CLASS=keytype>int</font> get_status() { <font CLASS=keyword>return</font> status; } iostatusevent get_onstatus() { <font CLASS=keyword>return</font> onstatus; } <font CLASS=keytype>void</font> set_onstatus(iostatusevent newval) { onstatus <font CLASS=symbols>=</font> newval; }};<font CLASS=keyword>typedef</font> iobase* piobase;<font CLASS=keyword>extern</font> <font CLASS=keytype>int</font> defbufsize;<font CLASS=keyword>extern</font> <font CLASS=keytype>int</font> stmbalance;<font CLASS=comment>//</font><font CLASS=comment>// instm - abstract input stream</font><font CLASS=comment>//</font><font CLASS=keyword>const</font> <font CLASS=keytype>char</font> eofchar <font CLASS=symbols>=</font> <font CLASS=integer>0</font>;<font CLASS=keyword>class</font> instm: public iobase {<font CLASS=preproc><font CLASS=keyword>protected</font>:</font> <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> dorawread(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count); <font CLASS=keytype>int</font> rawread(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> bufvalidate(); <font CLASS=keytype>void</font> skipeol();<font CLASS=preproc><font CLASS=keyword>public</font>:</font> instm(<font CLASS=keytype>int</font> ibufsize <font CLASS=symbols>=</font> <font CLASS=symbols>-</font><font CLASS=integer>1</font>); <font CLASS=keyword>virtual</font> ~instm(); <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> classid(); <font CLASS=keytype>bool</font> get_eof(); <font CLASS=keytype>void</font> set_eof(<font CLASS=keytype>bool</font> ieof) { eof <font CLASS=symbols>=</font> ieof; } <font CLASS=keytype>bool</font> get_eol(); <font CLASS=keytype>int</font> get_dataavail(); <font CLASS=keytype>char</font> preview(); <font CLASS=keytype>char</font> get(); <font CLASS=keytype>void</font> putback(); string token(<font CLASS=keyword>const</font> cset& chars); string token(<font CLASS=keyword>const</font> cset& chars, <font CLASS=keytype>int</font> limit); <font CLASS=keytype>int</font> token(<font CLASS=keyword>const</font> cset& chars, char* buf, <font CLASS=keytype>int</font> size); string line(); string line(<font CLASS=keytype>int</font> limit); <font CLASS=keytype>int</font> line(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> size, <font CLASS=keytype>bool</font> eateol <font CLASS=symbols>=</font> <font CLASS=keyword>true</font>); <font CLASS=keytype>int</font> read(<font CLASS=keytype>void</font>* buf, <font CLASS=keytype>int</font> count); <font CLASS=keytype>int</font> skip(<font CLASS=keytype>int</font> count); <font CLASS=keytype>int</font> skiptoken(<font CLASS=keyword>const</font> cset& chars); <font CLASS=keytype>void</font> skipline(<font CLASS=keytype>bool</font> eateol <font CLASS=symbols>=</font> <font CLASS=keyword>true</font>); <font CLASS=keytype>int</font> tell(); <font CLASS=keytype>int</font> seek(<font CLASS=keytype>int</font> newpos, ioseekmode mode <font CLASS=symbols>=</font> IO_BEGIN);};<font CLASS=keyword>typedef</font> instm* pinstm;<font CLASS=comment>//</font><font CLASS=comment>// outstm - abstract output stream</font><font CLASS=comment>//</font><font CLASS=keyword>class</font> outstm: public iobase {<font CLASS=preproc><font CLASS=keyword>protected</font>:</font> <font CLASS=keytype>bool</font> flusheol; <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> dorawwrite(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count); <font CLASS=keytype>int</font> rawwrite(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> bufvalidate(); <font CLASS=keytype>void</font> bufadvance(<font CLASS=keytype>int</font> delta) { bufpos <font CLASS=symbols>+=</font> delta; <font CLASS=keyword>if</font> (bufend < bufpos) bufend <font CLASS=symbols>=</font> bufpos; } <font CLASS=keytype>bool</font> canwrite();<font CLASS=preproc><font CLASS=keyword>public</font>:</font> outstm(<font CLASS=keytype>bool</font> iflusheol <font CLASS=symbols>=</font> <font CLASS=keyword>false</font>, <font CLASS=keytype>int</font> ibufsize <font CLASS=symbols>=</font> -<font CLASS=integer>1</font>); <font CLASS=keyword>virtual</font> ~outstm(); <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> classid(); <font CLASS=keytype>bool</font> get_flusheol() { <font CLASS=keyword>return</font> flusheol; } <font CLASS=keytype>void</font> set_flusheol(<font CLASS=keytype>bool</font> newval) { flusheol <font CLASS=symbols>=</font> newval; } <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> flush(); <font CLASS=keytype>bool</font> get_eof() { <font CLASS=keyword>return</font> eof; } <font CLASS=keytype>void</font> put(<font CLASS=keytype>char</font> c); <font CLASS=keytype>void</font> put(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* str); <font CLASS=keytype>void</font> put(<font CLASS=keyword>const</font> string& str); <font CLASS=keytype>void</font> vputf(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* fmt, va_list); <font CLASS=keytype>void</font> putf(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* fmt, ...); <font CLASS=keytype>void</font> putline(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* str); <font CLASS=keytype>void</font> putline(<font CLASS=keyword>const</font> string& str); <font CLASS=keytype>void</font> puteol(); <font CLASS=keytype>int</font> write(<font CLASS=keyword>const</font> <font CLASS=keytype>void</font>* buf, <font CLASS=keytype>int</font> count); <font CLASS=keytype>int</font> tell() { <font CLASS=keyword>return</font> abspos <font CLASS=symbols>+</font> bufpos; } <font CLASS=keytype>int</font> seek(<font CLASS=keytype>int</font> newpos, ioseekmode mode <font CLASS=symbols>=</font> IO_BEGIN);};<font CLASS=keyword>typedef</font> outstm* poutstm;<font CLASS=comment>// %t and %T formats</font><font CLASS=keyword>extern</font> <font CLASS=keytype>char</font>* shorttimefmt; <font CLASS=comment>// "%d-%b-%Y %X"</font><font CLASS=keyword>extern</font> <font CLASS=keytype>char</font>* longtimefmt; <font CLASS=comment>// "%a %b %d %X %Y"</font><font CLASS=comment>//</font><font CLASS=comment>// internal class used in fdxstm</font><font CLASS=comment>//</font><font CLASS=keyword>class</font> fdxoutstm: public outstm{ <font CLASS=keyword>friend</font> <font CLASS=keyword>class</font> fdxstm;<font CLASS=preproc><font CLASS=keyword>protected</font>:</font> fdxstm* in; <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> chstat(<font CLASS=keytype>int</font> newstat); <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> uerrno(); <font CLASS=keyword>virtual</font> <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* uerrmsg(<font CLASS=keytype>int</font> code); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> doopen(); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> doclose(); <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> dorawwrite(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);<font CLASS=preproc><font CLASS=keyword>public</font>:</font> fdxoutstm(<font CLASS=keytype>int</font> ibufsize, fdxstm* iin); <font CLASS=keyword>virtual</font> ~fdxoutstm(); <font CLASS=keyword>virtual</font> string get_streamname();};<font CLASS=keyword>typedef</font> fdxstm* pfdxstm;<font CLASS=comment>//</font><font CLASS=comment>// fdxstm: abstract full-duplex stream (for sockets and pipes)</font><font CLASS=comment>//</font><font CLASS=keyword>class</font> fdxstm: public instm{ <font CLASS=keyword>friend</font> <font CLASS=keyword>class</font> fdxoutstm;<font CLASS=preproc><font CLASS=keyword>protected</font>:</font> fdxoutstm out; <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> dorawwrite(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);<font CLASS=preproc><font CLASS=keyword>public</font>:</font> fdxstm(<font CLASS=keytype>int</font> ibufsize <font CLASS=symbols>=</font> <font CLASS=symbols>-</font><font CLASS=integer>1</font>); <font CLASS=keyword>virtual</font> ~fdxstm(); <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> classid(); <font CLASS=keytype>void</font> set_bufsize(<font CLASS=keytype>int</font> newval); <font CLASS=comment>// sets both input and output buffer sizes</font> <font CLASS=keytype>void</font> open(); <font CLASS=comment>// rewritten to pass the call to the output stream too</font> <font CLASS=keytype>void</font> close(); <font CLASS=keytype>void</font> cancel(); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> flush(); <font CLASS=keytype>int</font> tell(<font CLASS=keytype>bool</font>); <font CLASS=comment>// true for input and false for output</font> // output interface: pretend <font CLASS=keyword>this</font> <font CLASS=keyword>class</font> is derived both // from instm and outstm. actually we can<font CLASS=sinquot>'t use multiple // inheritance here, since this is a full-duplex stream, // hence everything must be duplicated for input and output void putf(const char* fmt, ...); void put(char c) { out.put(c); } void put(const char* str) { out.put(str); } void put(const string& str) { out.put(str); } void putline(const char* str) { out.putline(str); } void putline(const string& str) { out.putline(str); } void puteol() { out.puteol(); } int write(const void* buf, int count) { return out.write(buf, count); } bool get_flusheol() { return out.get_flusheol(); } void set_flusheol(bool newval) { out.set_flusheol(newval); } operator outstm&() { return out; }};<font CLASS=comment>//</font><font CLASS=comment>// abstract input filter class</font><font CLASS=comment>//</font><font CLASS=keyword>class</font> infilter: public instm {<font CLASS=preproc><font CLASS=keyword>protected</font>:</font> instm* stm; <font CLASS=keytype>char</font>* savebuf; <font CLASS=keytype>int</font> savecount; string postponed; <font CLASS=keytype>void</font> copytobuf(string& s); <font CLASS=keytype>void</font> copytobuf(pconst& buf, <font CLASS=keytype>int</font>& count); <font CLASS=keytype>bool</font> copytobuf(<font CLASS=keytype>char</font> c); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> freenotify(component* sender); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> doopen(); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> doclose(); <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> dorawread(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dofilter() <font CLASS=symbols>=</font> <font CLASS=integer>0</font>; <font CLASS=keytype>bool</font> bufavail() { <font CLASS=keyword>return</font> savecount > <font CLASS=integer>0</font>; } <font CLASS=keytype>void</font> post(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count); <font CLASS=keytype>void</font> post(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s); <font CLASS=keytype>void</font> post(<font CLASS=keytype>char</font> c); <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> post(string s);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -