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

📄 chmxx_8h-source.html

📁 It is a chm file viewer lib with source code
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>chmxx.h Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.2.18 --><center><a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center><hr><h1>chmxx.h</h1><a href="chmxx_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 00002 <span class="preprocessor">#ifndef __chm_h__</span>00003 <span class="preprocessor"></span><span class="preprocessor">#define __chm_h__</span>00004 <span class="preprocessor"></span>00005 <span class="preprocessor">#include &lt;string&gt;</span>00006 <span class="preprocessor">#include &lt;ostream&gt;</span>00007 <span class="preprocessor">#include &lt;istream&gt;</span>00008 <span class="preprocessor">#include &lt;vector&gt;</span>00009 <span class="preprocessor">#include &lt;list&gt;</span>00010 <span class="preprocessor">#include &lt;map&gt;</span>00011 00021 <span class="keyword">struct </span>chmFile;00022 <a name="l00027"></a><a class="code" href="namespacechm.html">00027</a> <span class="keyword">namespace </span>chm {00028 <a name="l00030"></a><a class="code" href="structchm_1_1chm__topics__tree.html">00030</a> <span class="keyword">struct </span><a class="code" href="structchm_1_1chm__topics__tree.html">chm_topics_tree</a> {<a name="l00031"></a><a class="code" href="structchm_1_1chm__topics__tree.html#m0">00031</a>   std::string <a class="code" href="structchm_1_1chm__topics__tree.html#m0">title</a>;  <a name="l00032"></a><a class="code" href="structchm_1_1chm__topics__tree.html#m1">00032</a>   std::string <a class="code" href="structchm_1_1chm__topics__tree.html#m1">path</a>;   <a name="l00033"></a><a class="code" href="structchm_1_1chm__topics__tree.html#m2">00033</a>   <a class="code" href="structchm_1_1chm__topics__tree.html">chm_topics_tree</a> *<a class="code" href="structchm_1_1chm__topics__tree.html#m2">parent</a>; <a name="l00034"></a><a class="code" href="structchm_1_1chm__topics__tree.html#m3">00034</a>   std::list&lt;chm_topics_tree *&gt; <a class="code" href="structchm_1_1chm__topics__tree.html#m3">children</a>; 00035 00036   <a class="code" href="structchm_1_1chm__topics__tree.html#a0">~chm_topics_tree</a> ();00037 };00038 <a name="l00040"></a><a class="code" href="structchm_1_1chm__search__document.html">00040</a> <span class="keyword">struct </span><a class="code" href="structchm_1_1chm__search__document.html">chm_search_document</a> {<a name="l00041"></a><a class="code" href="structchm_1_1chm__search__document.html#m0">00041</a>   std::string <a class="code" href="structchm_1_1chm__search__document.html#m0">title</a>;                <a name="l00042"></a><a class="code" href="structchm_1_1chm__search__document.html#m1">00042</a>   std::string <a class="code" href="structchm_1_1chm__search__document.html#m1">path</a>;                 <a name="l00043"></a><a class="code" href="structchm_1_1chm__search__document.html#m2">00043</a>   std::vector&lt;int&gt; <a class="code" href="structchm_1_1chm__search__document.html#m2">offsets</a>;         00044 };00045 <a name="l00047"></a><a class="code" href="structchm_1_1chm__search__match.html">00047</a> <span class="keyword">struct </span><a class="code" href="structchm_1_1chm__search__match.html">chm_search_match</a> {<a name="l00048"></a><a class="code" href="structchm_1_1chm__search__match.html#m0">00048</a>   <span class="keywordtype">int</span> <a class="code" href="structchm_1_1chm__search__match.html#m0">is_title</a>;                    <a name="l00049"></a><a class="code" href="structchm_1_1chm__search__match.html#m1">00049</a>   std::string <a class="code" href="structchm_1_1chm__search__match.html#m1">key</a>;                  <a name="l00050"></a><a class="code" href="structchm_1_1chm__search__match.html#m2">00050</a>   std::vector&lt;chm_search_document&gt; <a class="code" href="structchm_1_1chm__search__match.html#m2">documents</a>; 00051 };00052 <a name="l00054"></a><a class="code" href="classchm_1_1chmfile.html">00054</a> <span class="keyword">class </span><a class="code" href="classchm_1_1chmfile.html">chmfile</a> {00055 <span class="keyword">public</span>:00057   <a class="code" href="classchm_1_1chmfile.html#a0">chmfile</a> (<span class="keyword">const</span> std::string&amp; path);00058   <span class="keyword">virtual</span> <a class="code" href="classchm_1_1chmfile.html#a1">~chmfile</a> ();00059 00061   <span class="keywordtype">bool</span> <a class="code" href="classchm_1_1chmfile.html#a2">is_open</a> () <span class="keyword">const</span>;00062 00064   <span class="keywordtype">void</span> <a class="code" href="classchm_1_1chmfile.html#a3">close</a> ();00065 <a name="l00067"></a><a class="code" href="classchm_1_1chmfile.html#a4">00067</a>   <span class="keyword">inline</span> <a class="code" href="classchm_1_1chmfile.html#a4">operator bool</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classchm_1_1chmfile.html#a2">is_open</a>(); }00068 00070   <span class="keywordtype">bool</span> <a class="code" href="classchm_1_1chmfile.html#a5">read</a> (<span class="keyword">const</span> std::string&amp; path, std::ostream&amp; out) <span class="keyword">const</span>;00071 00074   <span class="keywordtype">bool</span> <a class="code" href="classchm_1_1chmfile.html#a5">read</a> (<span class="keyword">const</span> std::string&amp; path, std::vector&lt;char&gt;&amp; out) <span class="keyword">const</span>;00075 00077   <span class="keywordtype">bool</span> <a class="code" href="classchm_1_1chmfile.html#a5">read</a> (<span class="keyword">const</span> std::string&amp; path, <span class="keywordtype">char</span> *buf, size_t buf_size) <span class="keyword">const</span>;00078 00080   std::streamsize <a class="code" href="classchm_1_1chmfile.html#a8">file_size</a> (<span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span>;00081 00083   <span class="keywordtype">bool</span> <a class="code" href="classchm_1_1chmfile.html#a9">file_exists</a> (<span class="keyword">const</span> std::string&amp; path) <span class="keyword">const</span>;00084 <a name="l00086"></a><a class="code" href="classchm_1_1chmfile.html#s4">00086</a>   <span class="keyword">enum</span> <a class="code" href="classchm_1_1chmfile.html#s4">readdir_type</a> { <a class="code" href="classchm_1_1chmfile.html#s4s0">files</a> = 1, <a class="code" href="classchm_1_1chmfile.html#s4s1">dirs</a> = 2, <a class="code" href="classchm_1_1chmfile.html#s4s2">special</a> = 4, <a class="code" href="classchm_1_1chmfile.html#s4s3">meta</a> = 8 };00087 00090   <span class="keywordtype">bool</span> <a class="code" href="classchm_1_1chmfile.html#a10">readdir</a> (<span class="keyword">const</span> std::string&amp; path, std::list&lt;std::string&gt;&amp; entries, <span class="keywordtype">int</span> type = <a class="code" href="classchm_1_1chmfile.html#s4s0">files</a>|<a class="code" href="classchm_1_1chmfile.html#s4s1">dirs</a>) <span class="keyword">const</span>;00091 00096   std::streambuf* <a class="code" href="classchm_1_1chmfile.html#a11">open</a> (<span class="keyword">const</span> std::string&amp; path, size_t buf_size = 1024) <span class="keyword">const</span>;00097 <a name="l00098"></a><a class="code" href="classchm_1_1chmfile.html#a12">00098</a>   <span class="keyword">inline</span> <span class="keyword">const</span> std::string&amp; <a class="code" href="classchm_1_1chmfile.html#a12">get_title</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> title; }<a name="l00099"></a><a class="code" href="classchm_1_1chmfile.html#a13">00099</a>   <span class="keyword">inline</span> <span class="keyword">const</span> std::string&amp; <a class="code" href="classchm_1_1chmfile.html#a13">get_home_file</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> home_file; }<a name="l00100"></a><a class="code" href="classchm_1_1chmfile.html#a14">00100</a>   <span class="keyword">inline</span> <span class="keyword">const</span> std::string&amp; <a class="code" href="classchm_1_1chmfile.html#a14">get_generator</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> generator; }<a name="l00101"></a><a class="code" href="classchm_1_1chmfile.html#a15">00101</a>   <span class="keyword">inline</span> <span class="keyword">const</span> std::string&amp; <a class="code" href="classchm_1_1chmfile.html#a15">get_index_file</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> index_file; }<a name="l00102"></a><a class="code" href="classchm_1_1chmfile.html#a16">00102</a>   <span class="keyword">inline</span> <span class="keyword">const</span> std::string&amp; <a class="code" href="classchm_1_1chmfile.html#a16">get_topics_file</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> topics_file; }<a name="l00103"></a><a class="code" href="classchm_1_1chmfile.html#a17">00103</a>   <span class="keyword">inline</span> <span class="keyword">const</span> std::string&amp; <a class="code" href="classchm_1_1chmfile.html#a17">get_path</a> ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> path; }00104 00108   <span class="keyword">const</span> chm_topics_tree * <a class="code" href="classchm_1_1chmfile.html#a18">get_topics_tree</a> () <span class="keyword">const</span>;00109 00111   <span class="keywordtype">bool</span> <a class="code" href="classchm_1_1chmfile.html#a19">search_index</a> (<span class="keyword">const</span> std::string&amp; txt, std::list&lt;chm_search_match&gt;&amp; found,00112       <span class="keywordtype">bool</span> whole_words = <span class="keyword">true</span>, <span class="keywordtype">bool</span> titles_only = <span class="keyword">true</span>) <span class="keyword">const</span>;00113 00119   <span class="keywordtype">bool</span> <a class="code" href="classchm_1_1chmfile.html#a20">cache</a> (<span class="keyword">const</span> std::string&amp; path);00121   <span class="keywordtype">void</span> <a class="code" href="classchm_1_1chmfile.html#a21">cache_search_database</a> ();00122 00123 <span class="keyword">private</span>:00124   <span class="keyword">mutable</span> chmFile *chm;00125   std::string path;00126 00127   std::string title, home_file, generator, index_file, topics_file;00128 00129   <span class="keyword">mutable</span> chm_topics_tree *tree;00130 00131   <a class="code" href="classchm_1_1chmfile.html#a0">chmfile</a> (<span class="keyword">const</span> <a class="code" href="classchm_1_1chmfile.html#a0">chmfile</a>&amp;);00132   <a class="code" href="classchm_1_1chmfile.html#a0">chmfile</a>&amp; operator= (<span class="keyword">const</span> <a class="code" href="classchm_1_1chmfile.html#a0">chmfile</a>&amp;);00133 00134   <span class="keyword">typedef</span> std::map&lt;std::string,std::vector&lt;char&gt; &gt; cache_data_t;00135   cache_data_t cache_data;00136 };00137 <a name="l00148"></a><a class="code" href="classchm_1_1chmistream.html">00148</a> <span class="keyword">class </span><a class="code" href="classchm_1_1chmistream.html">chmistream</a> : <span class="keyword">public</span> std::istream {00149 <span class="keyword">public</span>:00151   <a class="code" href="classchm_1_1chmistream.html#a0">chmistream</a> (<span class="keyword">const</span> <a class="code" href="classchm_1_1chmfile.html">chmfile</a>&amp; chm, <span class="keyword">const</span> std::string&amp; path, size_t buf_size = 1024);00152 00155   std::streamsize <a class="code" href="classchm_1_1chmistream.html#a1">read_left</a> () <span class="keyword">const</span>;00156 00157   <span class="keyword">virtual</span> <a class="code" href="classchm_1_1chmistream.html#a2">~chmistream</a> ();00158 <a name="l00160"></a><a class="code" href="classchm_1_1chmistream.html#a3">00160</a>   <span class="keyword">inline</span> size_t <a class="code" href="classchm_1_1chmistream.html#a3">get_encint</a>()

⌨️ 快捷键说明

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