⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptypes.h.html

📁 PTypes是一个扩充了多线程和网络功能的STL库
💻 HTML
📖 第 1 页 / 共 5 页
字号:
    <font CLASS=keytype>void</font>  dofree(<font CLASS=keytype>int</font> index, <font CLASS=keytype>int</font> count);    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dofree(<font CLASS=keytype>void</font>* obj);        <font CLASS=comment>// pure method; defined in tobjlist instances</font>    <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> compare(<font CLASS=keyword>const</font> <font CLASS=keytype>void</font>* key, <font CLASS=keyword>const</font> <font CLASS=keytype>void</font>* obj) <font CLASS=keyword>const</font>;  <font CLASS=comment>// pure method; defined in _strlist</font><font CLASS=preproc><font CLASS=keyword>public</font>:</font>    _objlist();    <font CLASS=keyword>virtual</font> ~_objlist();    <font CLASS=keytype>int</font>   get_count() <font CLASS=keyword>const</font>                 { <font CLASS=keyword>return</font> count; }    <font CLASS=keytype>void</font>  set_count(<font CLASS=keytype>int</font> newcount);    <font CLASS=keytype>int</font>   get_capacity() <font CLASS=keyword>const</font>              { <font CLASS=keyword>return</font> capacity; }    <font CLASS=keytype>void</font>  set_capacity(<font CLASS=keytype>int</font> newcap)          { tpodlist&lt;<font CLASS=keytype>void</font>*,<font CLASS=keyword>true</font>&gt;::set_capacity(newcap); }    <font CLASS=keytype>void</font>  clear()                           { set_count(<font CLASS=integer>0</font>); }    <font CLASS=keytype>void</font>  pack()                            { tpodlist&lt;<font CLASS=keytype>void</font>*,<font CLASS=keyword>true</font>&gt;::pack(); }    <font CLASS=keytype>void</font>  ins(<font CLASS=keytype>int</font> index, <font CLASS=keytype>void</font>* obj)         { tpodlist&lt;<font CLASS=keytype>void</font>*,<font CLASS=keyword>true</font>&gt;::ins(index, obj); }    <font CLASS=keytype>void</font>  add(<font CLASS=keytype>void</font>* obj)                    { tpodlist&lt;<font CLASS=keytype>void</font>*,<font CLASS=keyword>true</font>&gt;::add(obj); }    <font CLASS=keytype>void</font>  put(<font CLASS=keytype>int</font> index, <font CLASS=keytype>void</font>* obj)         { idx(index); doput(index, obj); }    <font CLASS=keytype>void</font>* <font CLASS=keyword>operator</font> [](<font CLASS=keytype>int</font> index) <font CLASS=keyword>const</font>      { idx(index); <font CLASS=keyword>return</font> doget(index); }    <font CLASS=keytype>void</font>* top() <font CLASS=keyword>const</font>                       { idx(<font CLASS=integer>0</font>); <font CLASS=keyword>return</font> doget(count <font CLASS=symbols>-</font> <font CLASS=integer>1</font>); }    <font CLASS=keytype>void</font>* pop()                             { idx(<font CLASS=integer>0</font>); <font CLASS=keyword>return</font> dopop(); }    <font CLASS=keytype>void</font>  del(<font CLASS=keytype>int</font> index)                    { idx(index); dodel(index); }    <font CLASS=keytype>void</font>  del(<font CLASS=keytype>int</font> index, <font CLASS=keytype>int</font> count)         { idx(index); dodel(index, count); }    <font CLASS=keytype>int</font>   indexof(<font CLASS=keytype>void</font>* obj) <font CLASS=keyword>const</font>;    <font CLASS=keytype>bool</font>  search(<font CLASS=keyword>const</font> <font CLASS=keytype>void</font>* key, <font CLASS=keytype>int</font>&amp; index) <font CLASS=keyword>const</font>;};<font CLASS=comment>// the tobjlist template implements a list of pointers to arbitrary</font><font CLASS=comment>// structures. optionally can automatically free objects (ownobjects)</font><font CLASS=comment>// when removed from a list. only 2 virtual functions are being</font><font CLASS=comment>// instantiated by this template, the rest is static code in _objlist.</font><font CLASS=keyword>template</font> &lt;<font CLASS=keyword>class</font> X&gt; <font CLASS=keyword>class</font> tobjlist: <font CLASS=keyword>public</font> _objlist{<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>    X* doget(<font CLASS=keytype>int</font> index) <font CLASS=keyword>const</font>               { <font CLASS=keyword>return</font> (X*)_objlist::doget(index); }    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dofree(<font CLASS=keytype>void</font>* obj);<font CLASS=preproc><font CLASS=keyword>public</font>:</font>    tobjlist(<font CLASS=keytype>bool</font> ownobjects <font CLASS=symbols>=</font> <font CLASS=keyword>false</font>): _objlist(ownobjects)  {}    <font CLASS=keyword>virtual</font> ~tobjlist();    <font CLASS=keytype>bool</font>  get_ownobjects() <font CLASS=keyword>const</font>            { <font CLASS=keyword>return</font> config.ownobjects; }    <font CLASS=keytype>void</font>  set_ownobjects(<font CLASS=keytype>bool</font> newval)       { config.ownobjects <font CLASS=symbols>=</font> newval; }    <font CLASS=keytype>void</font>  ins(<font CLASS=keytype>int</font> index, X* obj)            { _objlist::ins(index, obj); }    <font CLASS=keytype>void</font>  add(X* obj)                       { _objlist::add(obj); }    <font CLASS=keytype>void</font>  put(<font CLASS=keytype>int</font> index, X* obj)            { _objlist::put(index, obj); }    X*    <font CLASS=keyword>operator</font> [](<font CLASS=keytype>int</font> index) <font CLASS=keyword>const</font>      { idx(index); <font CLASS=keyword>return</font> (X*)doget(index); }    X*    top() <font CLASS=keyword>const</font>                       { <font CLASS=keyword>return</font> (X*)_objlist::top(); }    X*    pop()                             { <font CLASS=keyword>return</font> (X*)_objlist::pop(); }    <font CLASS=keytype>int</font>   indexof(X* obj) <font CLASS=keyword>const</font>             { <font CLASS=keyword>return</font> _objlist::indexof(obj); }<font CLASS=preproc>#ifdef</font> PTYPES19_COMPAT     <font CLASS=keyword>friend</font> <font CLASS=keyword>inline</font> <font CLASS=keytype>void</font> ins(tobjlist&amp; s, <font CLASS=keytype>int</font> i, X* obj)          { s.ins(i, obj); }    <font CLASS=keyword>friend</font> <font CLASS=keyword>inline</font> <font CLASS=keytype>int</font>  add(tobjlist&amp; s, X* obj)                 { s.add(obj); <font CLASS=keyword>return</font> s.get_count() <font CLASS=symbols>-</font> <font CLASS=integer>1</font>; }    <font CLASS=keyword>friend</font> <font CLASS=keyword>inline</font> <font CLASS=keytype>void</font> put(tobjlist&amp; s, <font CLASS=keytype>int</font> i, X* obj)          { s.put(i, obj); }    <font CLASS=keyword>friend</font> <font CLASS=keyword>inline</font> <font CLASS=keytype>int</font>  indexof(<font CLASS=keyword>const</font> tobjlist&amp; s, X* obj)       { <font CLASS=keyword>return</font> s.indexof(obj); }    <font CLASS=keyword>friend</font> <font CLASS=keyword>inline</font> <font CLASS=keytype>int</font>  push(tobjlist&amp; s, X* obj)                { s.add(obj); <font CLASS=keyword>return</font> s.get_count() <font CLASS=symbols>-</font> <font CLASS=integer>1</font>; }    <font CLASS=keyword>friend</font> <font CLASS=keyword>inline</font> X*   pop(tobjlist&amp; s)                         { <font CLASS=keyword>return</font> (X*)s.pop(); }    <font CLASS=keyword>friend</font> <font CLASS=keyword>inline</font> X*   top(<font CLASS=keyword>const</font> tobjlist&amp; s)                   { <font CLASS=keyword>return</font> (X*)s.top(); }    <font CLASS=keyword>friend</font> <font CLASS=keyword>inline</font> X*   get(<font CLASS=keyword>const</font> tobjlist&amp; s, <font CLASS=keytype>int</font> i)            { <font CLASS=keyword>return</font> (X*)s[i]; }<font CLASS=preproc>#endif</font> };<font CLASS=keyword>template</font> &lt;<font CLASS=keyword>class</font> X&gt; <font CLASS=keytype>void</font> tobjlist&lt;X&gt;::dofree(<font CLASS=keytype>void</font>* item){    <font CLASS=keyword>delete</font> (X*)item;}<font CLASS=keyword>template</font> &lt;<font CLASS=keyword>class</font> X&gt; tobjlist&lt;X&gt;::~tobjlist(){    set_count(<font CLASS=integer>0</font>);}<font CLASS=comment>// -------------------------------------------------------------------- //</font><font CLASS=comment>// --- tstrlist ------------------------------------------------------- //</font><font CLASS=comment>// -------------------------------------------------------------------- //</font><font CLASS=comment>// _strlist is a base for the tstrlist template</font><font CLASS=keyword>enum</font> slflags{    SL_SORTED <font CLASS=symbols>=</font> 0x0001,    SL_DUPLICATES <font CLASS=symbols>=</font> 0x0002,    SL_CASESENS <font CLASS=symbols>=</font> 0x0004,    SL_OWNOBJECTS <font CLASS=symbols>=</font> 0x0008,};<font CLASS=keyword>struct</font> _stritem{    string key;    <font CLASS=keytype>void</font>* obj;    _stritem(<font CLASS=keyword>const</font> string&amp; ikey, <font CLASS=keytype>void</font>* iobj)        : key(ikey), obj(iobj)  {}};<font CLASS=keyword>class</font> _strlist: <font CLASS=keyword>protected</font> tobjlist&lt;_stritem&gt;{<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>    <font CLASS=keytype>static</font> <font CLASS=keytype>void</font> sortederror();    <font CLASS=keytype>static</font> <font CLASS=keytype>void</font> notsortederror();    <font CLASS=keytype>static</font> <font CLASS=keytype>void</font> duperror();    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dofree(<font CLASS=keytype>void</font>* item);    <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font>  compare(<font CLASS=keyword>const</font> <font CLASS=keytype>void</font>* key, <font CLASS=keyword>const</font> <font CLASS=keytype>void</font>* item) <font CLASS=keyword>const</font>;    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dofreeobj(<font CLASS=keytype>void</font>* obj);          <font CLASS=comment>// pure; tstrlist overrides it</font>    <font CLASS=keyword>const</font> string&amp; dogetkey(<font CLASS=keytype>int</font> index) <font CLASS=keyword>const</font>             { <font CLASS=keyword>return</font> doget(index)<font CLASS=symbols>-</font>&gt;key; }    <font CLASS=keytype>void</font>* dogetobj(<font CLASS=keytype>int</font> index) <font CLASS=keyword>const</font>                     { <font CLASS=keyword>return</font> doget(index)<font CLASS=symbols>-</font>&gt;obj; }    <font CLASS=keytype>void</font>  doins(<font CLASS=keytype>int</font> index, <font CLASS=keyword>const</font> string&amp; key, <font CLASS=keytype>void</font>* obj);    <font CLASS=keytype>void</font>  doput(<font CLASS=keytype>int</font> index, <font CLASS=keyword>const</font> string&amp; key, <font CLASS=keytype>void</font>* obj);    <font CLASS=keytype>void</font>  doput(<font CLASS=keytype>int</font> index, <font CLASS=keytype>void</font>* obj);<font CLASS=preproc><font CLASS=keyword>public</font>:</font>    _strlist(<font CLASS=keytype>int</font> flags <font CLASS=symbols>=</font> <font CLASS=integer>0</font>);    <font CLASS=keyword>virtual</font> ~_strlist();    <font CLASS=keytype>int</font>   get_count() <font CLASS=keyword>const</font>                             { <font CLASS=keyword>return</font> count; }    <font CLASS=keytype>void</font>  set_count(<font CLASS=keytype>int</font> newcount)                       { tobjlist&lt;_stritem&gt;::set_count(newcount); }    <font CLASS=keytype>int</font>   get_capacity() <font CLASS=keyword>const</font>                          { <font CLASS=keyword>return</font> capacity; }    <font CLASS=keytype>void</font>  set_capacity(<font CLASS=keytype>int</font> newcap)                      { tobjlist&lt;_stritem&gt;::set_capacity(newcap); }    <font CLASS=keytype>void</font>  clear()                                       { tobjlist&lt;_stritem&gt;::clear(); }    <font CLASS=keytype>void</font>  pack()                                        { tobjlist&lt;_stritem&gt;::pack(); }    <font CLASS=keytype>bool</font>  get_sorted() <font CLASS=keyword>const</font>                            { <font CLASS=keyword>return</font> config.sorted; }    <font CLASS=keytype>bool</font>  get_duplicates() <font CLASS=keyword>const</font>                        { <font CLASS=keyword>return</font> config.duplicates; }    <font CLASS=keytype>bool</font>  get_casesens() <font CLASS=keyword>const</font>                          { <font CLASS=keyword>return</font> config.casesens; }    <font CLASS=keytype>bool</font>  get_ownobjects() <font CLASS=keyword>const</font>                        { <font CLASS=keyword>return</font> config.ownslobjects; }    <font CLASS=keytype>void</font>  set_ownobjects(<font CLASS=keytype>bool</font> newval)                   { config.ownslobjects <font CLASS=symbols>=</font> newval; }    <font CLASS=keytype>void</font>  ins(<font CLASS=keytype>int</font> index, <font CLASS=keyword>const</font> string&amp; key, <font CLASS=keytype>void</font>* obj)  { idxa(index); doins(index, key, obj); }    <font CLASS=keytype>void</font>  put(<font CLASS=keytype>int</font> index, <font CLASS=keyword>const</font> string&amp; key, <font CLASS=keytype>void</font>* obj)  { idx(index); doput(index, key, obj); }    <font CLASS=keytype>void</font>  put(<font CLASS=keytype>int</font> index, <font CLASS=keytype>void</font>* obj)                     { idx(index); doput(index, obj); }    <font CLASS=keytype>int</font>   put(<font CLASS=keyword>const</font> string&amp; key, <font CLASS=keytype>void</font>* obj);    <font CLASS=keytype>int</font>   add(<font CLASS=keyword>const</font> string&amp; key, <font CLASS=keytype>void</font>* obj);    <font CLASS=keytype>void</font>* <font CLASS=keyword>operator</font> [](<font CLASS=keytype>int</font> index) <font CLASS=keyword>const</font>                  { idx(index); <font CLASS=keyword>return</font> dogetobj(index); }    <font CLASS=keytype>void</font>* <font CLASS=keyword>operator</font> [](<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* key) <font CLASS=keyword>const</font>;    <font CLASS=keyword>const</font> string&amp; getkey(<font CLASS=keytype>int</font> index) <font CLASS=keyword>const</font>               { idx(index); <font CLASS=keyword>return</font> dogetkey(index); }    <font CLASS=keytype>bool</font>  search(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* key, <font CLASS=keytype>int</font>&amp; index) <font CLASS=keyword>const</font>     { <font CLASS=keyword>return</font> _objlist::search(key, index); }    <font CLASS=keytype>void</font>  del(<font CLASS=keytype>int</font> index)                                { idx(index); dodel(index); }    <font CLASS=keytype>void</font>  del(<font CLASS=keytype>int</font> index, <font CLASS=keytype>int</font> delcount)            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -