📄 ptypes.h.html
字号:
<font CLASS=preproc>#define</font> PTR_TO_PSTRING(p) (pstring(&(p))) <font CLASS=preproc>#define</font> PTR_TO_STRING(p) (*PTR_TO_PSTRING(p)) <font CLASS=keyword>extern</font> <font CLASS=keytype>char</font>* emptystr;<font CLASS=keyword>class</font> string { <font CLASS=keyword>friend</font> <font CLASS=keyword>class</font> variant;<font CLASS=preproc><font CLASS=keyword>protected</font>:</font> <font CLASS=keytype>char</font>* data; <font CLASS=keytype>static</font> <font CLASS=keytype>void</font> idxerror(); <font CLASS=keytype>void</font> _alloc(<font CLASS=keytype>int</font>); <font CLASS=keytype>void</font> _realloc(<font CLASS=keytype>int</font>); <font CLASS=keytype>void</font> _free(); <font CLASS=keytype>void</font> initialize() { data <font CLASS=symbols>=</font> emptystr; } <font CLASS=keytype>void</font> initialize(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*, <font CLASS=keytype>int</font>); <font CLASS=keytype>void</font> initialize(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*); <font CLASS=keytype>void</font> initialize(<font CLASS=keytype>char</font>); <font CLASS=keytype>void</font> initialize(<font CLASS=keyword>const</font> string& s); <font CLASS=keytype>void</font> initialize(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*, <font CLASS=keytype>int</font>, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*, <font CLASS=keytype>int</font>); <font CLASS=keytype>void</font> initialize(<font CLASS=keyword>const</font> variant&); <font CLASS=keytype>void</font> finalize(); <font CLASS=keytype>void</font> assign(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*, <font CLASS=keytype>int</font>); <font CLASS=keytype>void</font> assign(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*); <font CLASS=keytype>void</font> assign(<font CLASS=keyword>const</font> string&); <font CLASS=keytype>void</font> assign(<font CLASS=keytype>char</font>);<font CLASS=preproc>#ifdef</font> CHECK_BOUNDS <font CLASS=keytype>void</font> idx(<font CLASS=keytype>int</font> index) <font CLASS=keyword>const</font> { <font CLASS=keyword>if</font> (<font CLASS=keytype>unsigned</font>(index) ><font CLASS=symbols>=</font> <font CLASS=keytype>unsigned</font>(STR_LENGTH(data))) idxerror(); }<font CLASS=preproc>#else</font> <font CLASS=keytype>void</font> idx(<font CLASS=keytype>int</font>) <font CLASS=keyword>const</font> { }<font CLASS=preproc>#endif</font> string(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s1, <font CLASS=keytype>int</font> len1, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s2, <font CLASS=keytype>int</font> len2) { initialize(s1, len1, s2, len2); }<font CLASS=preproc><font CLASS=keyword>public</font>:</font> <font CLASS=keyword>friend</font> <font CLASS=keytype>int</font> length(<font CLASS=keyword>const</font> string& s); <font CLASS=keyword>friend</font> <font CLASS=keytype>int</font> refcount(<font CLASS=keyword>const</font> string& s); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> assign(string& s, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> len); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> clear(string& s); <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> isempty(<font CLASS=keyword>const</font> string& s); <font CLASS=keyword>friend</font> <font CLASS=keytype>char</font>* setlength(string&, <font CLASS=keytype>int</font>); <font CLASS=keyword>friend</font> <font CLASS=keytype>char</font>* unique(string&); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> concat(string& s, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc, <font CLASS=keytype>int</font> catlen); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> concat(string& s, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s1); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> concat(string& s, <font CLASS=keytype>char</font> s1); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> concat(string& s, <font CLASS=keyword>const</font> string& s1); <font CLASS=keyword>friend</font> string copy(<font CLASS=keyword>const</font> string& s, <font CLASS=keytype>int</font> from, <font CLASS=keytype>int</font> cnt); <font CLASS=keyword>friend</font> string copy(<font CLASS=keyword>const</font> string& s, <font CLASS=keytype>int</font> from); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> ins(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s1, <font CLASS=keytype>int</font> s1len, string& s, <font CLASS=keytype>int</font> at); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> ins(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s1, string& s, <font CLASS=keytype>int</font> at); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> ins(<font CLASS=keytype>char</font> s1, string& s, <font CLASS=keytype>int</font> at); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> ins(<font CLASS=keyword>const</font> string& s1, string& s, <font CLASS=keytype>int</font> at); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> del(string& s, <font CLASS=keytype>int</font> at, <font CLASS=keytype>int</font> cnt); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> del(string& s, <font CLASS=keytype>int</font> at); <font CLASS=keyword>friend</font> <font CLASS=keytype>int</font> pos(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s1, <font CLASS=keyword>const</font> string& s); <font CLASS=keyword>friend</font> <font CLASS=keytype>int</font> pos(<font CLASS=keytype>char</font> s1, <font CLASS=keyword>const</font> string& s); <font CLASS=keyword>friend</font> <font CLASS=keytype>int</font> pos(<font CLASS=keyword>const</font> string& s1, <font CLASS=keyword>const</font> string& s); <font CLASS=keyword>friend</font> <font CLASS=keytype>int</font> rpos(<font CLASS=keytype>char</font> s1, <font CLASS=keyword>const</font> string& s); <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> contains(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s1, <font CLASS=keytype>int</font> len, <font CLASS=keyword>const</font> string& s, <font CLASS=keytype>int</font> at); <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> contains(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s1, <font CLASS=keyword>const</font> string& s, <font CLASS=keytype>int</font> at); <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> contains(<font CLASS=keytype>char</font> s1, <font CLASS=keyword>const</font> string& s, <font CLASS=keytype>int</font> at); <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> contains(<font CLASS=keyword>const</font> string& s1, <font CLASS=keyword>const</font> string& s, <font CLASS=keytype>int</font> at); <font CLASS=keyword>friend</font> string dup(<font CLASS=keyword>const</font> string& s); string() { initialize(); } string(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc, <font CLASS=keytype>int</font> initlen) { initialize(sc, initlen); } string(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc) { initialize(sc); } string(<font CLASS=keytype>char</font> c) { initialize(c); } string(<font CLASS=keyword>const</font> string& s) { initialize(s); } ~string() { finalize(); }<font CLASS=preproc>#ifdef</font> VARIANT_TYPECAST_HACK string(<font CLASS=keyword>const</font> variant& v) { initialize(v); }<font CLASS=preproc>#endif</font> string& <font CLASS=keyword>operator</font><font CLASS=symbols>=</font> (<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc) { assign(sc); <font CLASS=keyword>return</font> *<font CLASS=keyword>this</font>; } string& <font CLASS=keyword>operator</font><font CLASS=symbols>=</font> (<font CLASS=keytype>char</font> c) { assign(c); <font CLASS=keyword>return</font> *<font CLASS=keyword>this</font>; } string& <font CLASS=keyword>operator</font><font CLASS=symbols>=</font> (<font CLASS=keyword>const</font> string& s) { assign(s); <font CLASS=keyword>return</font> *<font CLASS=keyword>this</font>; } string& <font CLASS=keyword>operator</font><font CLASS=symbols>+=</font> (<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc) { concat(*<font CLASS=keyword>this</font>, sc); <font CLASS=keyword>return</font> *<font CLASS=keyword>this</font>; } string& <font CLASS=keyword>operator</font><font CLASS=symbols>+=</font> (<font CLASS=keytype>char</font> c) { concat(*<font CLASS=keyword>this</font>, c); <font CLASS=keyword>return</font> *<font CLASS=keyword>this</font>; } string& <font CLASS=keyword>operator</font><font CLASS=symbols>+=</font> (<font CLASS=keyword>const</font> string& s) { concat(*<font CLASS=keyword>this</font>, s); <font CLASS=keyword>return</font> *<font CLASS=keyword>this</font>; } string <font CLASS=keyword>operator</font><font CLASS=symbols>+</font> (<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc) <font CLASS=keyword>const</font>; string <font CLASS=keyword>operator</font><font CLASS=symbols>+</font> (<font CLASS=keytype>char</font> c) <font CLASS=keyword>const</font>; string <font CLASS=keyword>operator</font><font CLASS=symbols>+</font> (<font CLASS=keyword>const</font> string& s) <font CLASS=keyword>const</font>; <font CLASS=keyword>friend</font> string <font CLASS=keyword>operator</font><font CLASS=symbols>+</font> (<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc, <font CLASS=keyword>const</font> string& s); <font CLASS=keyword>friend</font> string <font CLASS=keyword>operator</font><font CLASS=symbols>+</font> (<font CLASS=keytype>char</font> c, <font CLASS=keyword>const</font> string& s); <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>==</font> (<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc) <font CLASS=keyword>const</font> { <font CLASS=keyword>return</font> strcmp(data, sc) <font CLASS=symbols>==</font> <font CLASS=integer>0</font>; } <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>==</font> (<font CLASS=keytype>char</font>) <font CLASS=keyword>const</font>; <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>==</font> (<font CLASS=keyword>const</font> string&) <font CLASS=keyword>const</font>; <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>!=</font> (<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc) <font CLASS=keyword>const</font> { <font CLASS=keyword>return</font> <font CLASS=symbols>!</font>(*<font CLASS=keyword>this</font> == sc); } <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>!=</font> (<font CLASS=keytype>char</font> c) <font CLASS=keyword>const</font> { <font CLASS=keyword>return</font> <font CLASS=symbols>!</font>(*<font CLASS=keyword>this</font> == c); } <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>!=</font> (<font CLASS=keyword>const</font> string& s) <font CLASS=keyword>const</font> { <font CLASS=keyword>return</font> <font CLASS=symbols>!</font>(*<font CLASS=keyword>this</font> == s); } <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>==</font> (<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*, <font CLASS=keyword>const</font> string&); <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>==</font> (<font CLASS=keytype>char</font>, <font CLASS=keyword>const</font> string&); <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>!=</font> (<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*, <font CLASS=keyword>const</font> string&); <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>!=</font> (<font CLASS=keytype>char</font>, <font CLASS=keyword>const</font> string&); <font CLASS=keyword>operator</font> <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*() <font CLASS=keyword>const</font> { <font CLASS=keyword>return</font> data; } <font CLASS=keyword>operator</font> <font CLASS=keyword>const</font> uchar*() <font CLASS=keyword>const</font> { <font CLASS=keyword>return</font> (uchar*)data; } <font CLASS=keytype>char</font>& <font CLASS=keyword>operator</font>[] (<font CLASS=keytype>int</font> i) { idx(i); <font CLASS=keyword>return</font> unique(*<font CLASS=keyword>this</font>)[i]; } <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>& <font CLASS=keyword>operator</font>[] (<font CLASS=keytype>int</font> i) <font CLASS=keyword>const</font> { idx(i); <font CLASS=keyword>return</font> data[i]; } <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> initialize(string& s); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> initialize(string& s, <font CLASS=keyword>const</font> string& s1); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> initialize(string& s, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s1); <font CLASS=keyword>friend</font> <font CLASS=keytype>void</font> finalize(string& s);};<font CLASS=keyword>typedef</font> string* pstring;<font CLASS=keyword>inline</font> <font CLASS=keytype>int</font> length(<font CLASS=keyword>const</font> string& s) { <font CLASS=keyword>return</font> STR_LENGTH(s.data); }<font CLASS=keyword>inline</font> <font CLASS=keytype>int</font> refcount(<font CLASS=keyword>const</font> string& s) { <font CLASS=keyword>return</font> STR_REFCOUNT(s.data); }<font CLASS=keyword>inline</font> <font CLASS=keytype>void</font> assign(string& s, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> len) { s.assign(buf, len); }<font CLASS=keyword>inline</font> <font CLASS=keytype>void</font> clear(string& s) { s.finalize(); }<font CLASS=keyword>inline</font> <font CLASS=keytype>bool</font> isempty(<font CLASS=keyword>const</font> string& s) { <font CLASS=keyword>return</font> length(s) <font CLASS=symbols>==</font> <font CLASS=integer>0</font>; }<font CLASS=keyword>inline</font> <font CLASS=keytype>int</font> pos(<font CLASS=keyword>const</font> string& s1, <font CLASS=keyword>const</font> string& s) { <font CLASS=keyword>return</font> pos(s1.data, s); }<font CLASS=keyword>inline</font> <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>==</font> (<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc, <font CLASS=keyword>const</font> string& s){ <font CLASS=keyword>return</font> s <font CLASS=symbols>==</font> sc; }<font CLASS=keyword>inline</font> <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>==</font> (<font CLASS=keytype>char</font> c, <font CLASS=keyword>const</font> string& s) { <font CLASS=keyword>return</font> s <font CLASS=symbols>==</font> c; }<font CLASS=keyword>inline</font> <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>!=</font> (<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* sc, <font CLASS=keyword>const</font> string& s){ <font CLASS=keyword>return</font> s <font CLASS=symbols>!=</font> sc; }<font CLASS=keyword>inline</font> <font CLASS=keytype>bool</font> <font CLASS=keyword>operator</font><font CLASS=symbols>!=</font> (<font CLASS=keytype>char</font> c, <font CLASS=keyword>const</font> string& s) { <font CLASS=keyword>return</font> s <font CLASS=symbols>!=</font> c; }<font CLASS=keyword>inline</font> <font CLASS=keytype>void</font> initialize(string& s) { s.initialize(); }<font CLASS=keyword>inline</font> <font CLASS=keytype>void</font> initialize(string& s, <font CLASS=keyword>const</font> string& s1) { s.initialize(s1); }<font CLASS=keyword>inline</font> <font CLASS=keytype>void</font> initialize(string& s, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* s1) { s.initialize(s1); }<font CLASS=keyword>inline</font> <font CLASS=keytype>void</font> finalize(string& s) { s.finalize(); }<font CLASS=keyword>extern</font> <font CLASS=keytype>int</font> stralloc;<font CLASS=keyword>extern</font> string nullstring;<font CLASS=comment>// -------------------------------------------------------------------- //</font><font CLASS=comment>// --- string utilities ----------------------------------------------- //</font><font CLASS=comment>// -------------------------------------------------------------------- //</font>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -