aboutsummaryrefslogblamecommitdiffstats
path: root/doc/api-documentation/html/swmodule_8h-source.html
blob: d6e9fa7e01a01e490ddb96dd7ec5226731513f18 (plain) (tree)
1
2
3
4
5
6
7




                                                                                   
                                    
        






















                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
      









                                                                                            
      

                                                                       
      































                                                                                                                                                                                                                                                       
      














                                                                                                                                                                  
      












                                                                                                                                                                            
      





















































































































































































                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
      


                                                                                                                    

                                                             
                                                 

       
<!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>swmodule.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.17 -->
<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="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical 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="namespacemembers.html">Namespace Members</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
<hr><h1>swmodule.h</h1><div class="fragment"><pre>00001 <span class="comment">/******************************************************************************</span>
00002 <span class="comment">*  swmodule.h  - code for base class 'module'.  Module is the basis for all</span>
00003 <span class="comment">*                 types of modules (e.g. texts, commentaries, maps, lexicons,</span>
00004 <span class="comment">*                 etc.)</span>
00005 <span class="comment">*</span>
00006 <span class="comment">* $Id: swmodule_8h-source.html,v 1.9 2002/10/31 11:30:16 joachim Exp $</span>
00007 <span class="comment">*</span>
00008 <span class="comment">* Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</span>
00009 <span class="comment">*       CrossWire Bible Society</span>
00010 <span class="comment">*       P. O. Box 2528</span>
00011 <span class="comment">*       Tempe, AZ  85280-2528</span>
00012 <span class="comment">*</span>
00013 <span class="comment">* This program is free software; you can redistribute it and/or modify it</span>
00014 <span class="comment">* under the terms of the GNU General Public License as published by the</span>
00015 <span class="comment">* Free Software Foundation version 2.</span>
00016 <span class="comment">*</span>
00017 <span class="comment">* This program is distributed in the hope that it will be useful, but</span>
00018 <span class="comment">* WITHOUT ANY WARRANTY; without even the implied warranty of</span>
00019 <span class="comment">* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
00020 <span class="comment">* General Public License for more details.</span>
00021 <span class="comment">*</span>
00022 <span class="comment">*/</span>
00023 
00024 <span class="preprocessor">#ifndef SWMODULE_H</span>
00025 <span class="preprocessor"></span><span class="preprocessor">#define SWMODULE_H</span>
00026 <span class="preprocessor"></span>
00027 <span class="preprocessor">#include &lt;swdisp.h&gt;</span>
00028 <span class="preprocessor">#include &lt;swkey.h&gt;</span>
00029 <span class="preprocessor">#include &lt;listkey.h&gt;</span>
00030 <span class="preprocessor">#include &lt;swfilter.h&gt;</span>
00031 <span class="preprocessor">#include &lt;swconfig.h&gt;</span>
00032 <span class="preprocessor">#include &lt;swcacher.h&gt;</span>
00033 <span class="preprocessor">#include &lt;list&gt;</span>
00034 
00035 <span class="preprocessor">#include &lt;defs.h&gt;</span>
00036 <span class="preprocessor">#include &lt;multimapwdef.h&gt;</span>
00037 
00038 SWORD_NAMESPACE_START
00039 
00040 <span class="preprocessor">#define SWMODULE_OPERATORS \</span>
00041 <span class="preprocessor">        operator const char *() { return RenderText(); } \</span>
00042 <span class="preprocessor">        operator SWKey &amp;() { return *getKey(); } \</span>
00043 <span class="preprocessor">        operator SWKey *() { return getKey(); } \</span>
00044 <span class="preprocessor">        SWModule &amp;operator &lt;&lt;(const char *inbuf) { setEntry(inbuf); return *this; } \</span>
00045 <span class="preprocessor">        SWModule &amp;operator &lt;&lt;(const SWKey *sourceKey) { linkEntry(sourceKey); return *this; } \</span>
00046 <span class="preprocessor">        SWModule &amp;operator -=(int steps) { decrement(steps); return *this; } \</span>
00047 <span class="preprocessor">        SWModule &amp;operator +=(int steps) { increment(steps); return *this; } \</span>
00048 <span class="preprocessor">        SWModule &amp;operator ++(int) { return *this += 1; } \</span>
00049 <span class="preprocessor">        SWModule &amp;operator --(int) { return *this -= 1; } \</span>
00050 <span class="preprocessor">        SWModule &amp;operator =(SW_POSITION p) { setPosition(p); return *this; }</span>
00051 <span class="preprocessor"></span>
00052 
00053 <span class="keyword">typedef</span> std::list &lt; SWFilter * &gt;FilterList;
00054 
00055 <span class="keyword">typedef</span> std::map &lt; std::string, std::string, std::less &lt; std::string &gt; &gt; AttributeValue;
00056 <span class="keyword">typedef</span> std::map &lt; std::string, AttributeValue, std::less &lt; std::string &gt; &gt; AttributeList;
00057 <span class="keyword">typedef</span> std::map &lt; std::string, AttributeList, std::less &lt; std::string &gt; &gt; AttributeTypeList;
00058 
00059 <span class="preprocessor">#define SWTextDirection char</span>
00060 <span class="preprocessor"></span><span class="preprocessor">#define SWTextEncoding char</span>
00061 <span class="preprocessor"></span><span class="preprocessor">#define SWTextMarkup char</span>
00062 <span class="preprocessor"></span>
00063 <span class="keyword">enum</span> {DIRECTION_LTR = 0, DIRECTION_RTL, DIRECTION_BIDI};
00064 <span class="keyword">enum</span> {FMT_UNKNOWN = 0, FMT_PLAIN, FMT_THML, FMT_GBF, FMT_HTML, FMT_HTMLHREF, FMT_RTF, FMT_OSIS};
00065 <span class="keyword">enum</span> {ENC_UNKNOWN = 0, ENC_LATIN1, ENC_UTF8, ENC_SCSU, ENC_UTF16, ENC_RTF, ENC_HTML};
00066 
<a name="l00075"></a><a class="code" href="classsword_1_1_s_w_module.html">00075</a> <span class="keyword">class </span>SWDLLEXPORT <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a> : <span class="keyword">public</span> SWCacher {
00076 
00077 <span class="keyword">protected</span>:
00078 
00079         ConfigEntMap ownConfig;
00080         ConfigEntMap *config;
00081         <span class="keyword">mutable</span> AttributeTypeList entryAttributes;
00082         <span class="keyword">mutable</span> <span class="keywordtype">bool</span> procEntAttr;
00083 
00084         <span class="keywordtype">char</span> error;
00085         <span class="keywordtype">bool</span> skipConsecutiveLinks;
00086 
<a name="l00088"></a><a class="code" href="classsword_1_1_s_w_module.html#n6">00088</a>         <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> *key;
00089 
00090         <a class="code" href="classsword_1_1_list_key.html">ListKey</a> listkey;
00091         <span class="keywordtype">char</span> *modname;
00092         <span class="keywordtype">char</span> *moddesc;
00093         <span class="keywordtype">char</span> *modtype;
00094         <span class="keywordtype">char</span> *modlang;  
00095 
00096         <span class="keywordtype">char</span> direction;
00097         <span class="keywordtype">char</span> markup;
00098         <span class="keywordtype">char</span> encoding;
00099 
<a name="l00101"></a><a class="code" href="classsword_1_1_s_w_module.html#n15">00101</a>         <a class="code" href="classsword_1_1_s_w_display.html">SWDisplay</a> *disp;
00102 
00103         <span class="keyword">static</span> <a class="code" href="classsword_1_1_s_w_display.html">SWDisplay</a> rawdisp;
00104         <span class="keywordtype">char</span> *entrybuf;
00105         <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> entrybufallocsize;
00106 
<a name="l00108"></a><a class="code" href="classsword_1_1_s_w_module.html#n18">00108</a>         FilterList *stripFilters;
00109 
<a name="l00111"></a><a class="code" href="classsword_1_1_s_w_module.html#n19">00111</a>         FilterList *rawFilters;
00112 
<a name="l00114"></a><a class="code" href="classsword_1_1_s_w_module.html#n20">00114</a>         FilterList *renderFilters;
00115 
<a name="l00117"></a><a class="code" href="classsword_1_1_s_w_module.html#n21">00117</a>         FilterList *optionFilters;
00118 
<a name="l00120"></a><a class="code" href="classsword_1_1_s_w_module.html#n22">00120</a>         FilterList *encodingFilters;
00121 
00122         <span class="keywordtype">int</span> entrySize;
00123         <span class="keyword">mutable</span> <span class="keywordtype">long</span> entryIndex;         <span class="comment">// internal common storage for index</span>
00124 
00125         <span class="keyword">public</span>:
00132         <span class="keyword">static</span> <span class="keywordtype">void</span> nullPercent(<span class="keywordtype">char</span> percent, <span class="keywordtype">void</span> *userData);
<a name="l00137"></a><a class="code" href="classsword_1_1_s_w_module.html#m0">00137</a>         <span class="keywordtype">bool</span> terminateSearch;
00150         <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *imodname = 0, <span class="keyword">const</span> <span class="keywordtype">char</span> *imoddesc = 0, <a class="code" href="classsword_1_1_s_w_display.html">SWDisplay</a> * idisp = 0, <span class="keywordtype">char</span> *imodtype = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN, <span class="keyword">const</span> <span class="keywordtype">char</span>* modlang = 0);
00153         <span class="keyword">virtual</span> ~<a class="code" href="classsword_1_1_s_w_module.html">SWModule</a>();
00158         <span class="keyword">virtual</span> <span class="keywordtype">char</span> Error();
<a name="l00162"></a><a class="code" href="classsword_1_1_s_w_module.html#a3">00162</a>         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> isUnicode()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (encoding == (char)ENC_UTF8 || encoding == (char)ENC_SCSU); }
00163 
00164         <span class="comment">// These methods are useful for modules that come from a standard SWORD install (most do).</span>
00165         <span class="comment">// SWMgr will call setConfig.  The user may use getConfig and getConfigEntry (if they</span>
00166         <span class="comment">// are not comfortable with, or don't wish to use  stl maps).</span>
00167         <span class="keyword">virtual</span> <span class="keyword">const</span> ConfigEntMap &amp;getConfig()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *config; }
00168         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setConfig(ConfigEntMap *config);
00169         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *getConfigEntry(<span class="keyword">const</span> <span class="keywordtype">char</span> *key) <span class="keyword">const</span>;
00170 
<a name="l00174"></a><a class="code" href="classsword_1_1_s_w_module.html#a7">00174</a>         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">int</span> getEntrySize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> entrySize; }
<a name="l00183"></a><a class="code" href="classsword_1_1_s_w_module.html#a8">00183</a>         <span class="keywordtype">char</span> SetKey(<span class="keyword">const</span> <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> *ikey) { <span class="keywordflow">return</span> setKey(ikey); }
00184         <span class="keyword">virtual</span> <span class="keywordtype">char</span> setKey(<span class="keyword">const</span> SWKey *ikey);
00185         
00186 
00187         <span class="keyword">virtual</span> <span class="keywordtype">long</span> Index()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> entryIndex; }
00188         <span class="keyword">virtual</span> <span class="keywordtype">long</span> Index(<span class="keywordtype">long</span> iindex) { entryIndex = iindex; <span class="keywordflow">return</span> entryIndex; }
00189 
<a name="l00196"></a><a class="code" href="classsword_1_1_s_w_module.html#a12">00196</a>         <span class="keywordtype">char</span> SetKey(<span class="keyword">const</span> <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> &amp;ikey) { <span class="keywordflow">return</span> setKey(ikey); }
00197         <span class="keywordtype">char</span> setKey(<span class="keyword">const</span> SWKey &amp;ikey) { <span class="keywordflow">return</span> SetKey(&amp;ikey); }
00198 
<a name="l00203"></a><a class="code" href="classsword_1_1_s_w_module.html#a14">00203</a>         <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> &amp;Key()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *getKey(); }
00204         SWKey *getKey() <span class="keyword">const</span>;
00205 
<a name="l00213"></a><a class="code" href="classsword_1_1_s_w_module.html#a16">00213</a>         <span class="keywordtype">char</span> Key(<span class="keyword">const</span> <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> &amp; ikey) { <span class="keywordflow">return</span> setKey(ikey); }
00214 
00215         <span class="comment">/******************************************************************************</span>
00216 <span class="comment">         * SWModule::KeyText - Sets/gets module KeyText</span>
00217 <span class="comment">         *</span>
00218 <span class="comment">         * ENT: ikeytext - value which to set keytext</span>
00219 <span class="comment">         *              [0] - only get</span>
00220 <span class="comment">         *</span>
00221 <span class="comment">         * RET: pointer to keytext</span>
00222 <span class="comment">         */</span>
00223         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *KeyText(<span class="keyword">const</span> <span class="keywordtype">char</span> *ikeytext = 0) {
00224                 <span class="keywordflow">if</span> (ikeytext) setKey(ikeytext);
00225                 <span class="keywordflow">return</span> *getKey();
00226         }
00227 
00232         <span class="keyword">virtual</span> <span class="keywordtype">char</span> Display();
00233 
00240         <span class="keyword">virtual</span> SWDisplay *Disp(SWDisplay * idisp = 0);
00247         <span class="keyword">virtual</span> <span class="keywordtype">char</span> *Name(<span class="keyword">const</span> <span class="keywordtype">char</span> *imodname = 0);
00254         <span class="keyword">virtual</span> <span class="keywordtype">char</span> *Description(<span class="keyword">const</span> <span class="keywordtype">char</span> *imoddesc = 0);
00261         <span class="keyword">virtual</span> <span class="keywordtype">char</span> *Type(<span class="keyword">const</span> <span class="keywordtype">char</span> *imodtype = 0);
00268         <span class="keyword">virtual</span> <span class="keywordtype">char</span> Direction(<span class="keywordtype">signed</span> <span class="keywordtype">char</span> newdir = -1);
00275         <span class="keyword">virtual</span> <span class="keywordtype">char</span> Encoding(<span class="keywordtype">signed</span> <span class="keywordtype">char</span> enc = -1);
00282         <span class="keyword">virtual</span> <span class="keywordtype">char</span> Markup(<span class="keywordtype">signed</span> <span class="keywordtype">char</span> enc = -1);
00289         <span class="keyword">virtual</span> <span class="keywordtype">char</span> *Lang(<span class="keyword">const</span> <span class="keywordtype">char</span> *imodlang = 0);
00290 
00291         <span class="comment">// search methods</span>
00292 
00304         <span class="keyword">virtual</span> ListKey &amp; Search(<span class="keyword">const</span> <span class="keywordtype">char</span> *istr, <span class="keywordtype">int</span> searchType = 0, <span class="keywordtype">int</span> flags = 0,
00305                         SWKey * scope = 0,
00306                         <span class="keywordtype">bool</span> * justCheckIfSupported = 0,
00307                         <span class="keywordtype">void</span> (*percent) (<span class="keywordtype">char</span>, <span class="keywordtype">void</span> *) = &amp;nullPercent,
00308                         <span class="keywordtype">void</span> *percentUserData = 0);
00312         <span class="keyword">virtual</span> <span class="keywordtype">signed</span> <span class="keywordtype">char</span> createSearchFramework() { <span class="keywordflow">return</span> 0; }                               <span class="comment">// special search framework</span>
00316 <span class="comment"></span>        <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hasSearchFramework() { <span class="keywordflow">return</span> <span class="keyword">false</span>; }                             <span class="comment">// special search framework</span>
<a name="l00321"></a><a class="code" href="classsword_1_1_s_w_module.html#a30">00321</a> <span class="comment"></span>        <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSearchOptimallySupported(<span class="keyword">const</span> <span class="keywordtype">char</span> *istr, <span class="keywordtype">int</span> searchType,
00322                         <span class="keywordtype">int</span> flags, <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> * scope) {
00323                 <span class="keywordtype">bool</span> retVal = <span class="keyword">false</span>;
00324                 Search(istr, searchType, flags, scope, &amp;retVal);
00325                 <span class="keywordflow">return</span> retVal;
00326         }
00333         <span class="keyword">virtual</span> SWKey *CreateKey();
00338 <span class="preprocessor">#ifndef SWIG </span>
00339 <span class="preprocessor"></span>        <span class="keyword">virtual</span> <span class="keywordtype">char</span> *getRawEntry() = 0;
00340 <span class="preprocessor">#else</span>
00341 <span class="preprocessor"></span>        <span class="keyword">virtual</span> <span class="keywordtype">char</span> *getRawEntry() {};
00342 <span class="preprocessor">#endif  </span>
00343 <span class="preprocessor"></span>
00344 
00345         <span class="comment">// write interface ----------------------------</span>
<a name="l00349"></a><a class="code" href="classsword_1_1_s_w_module.html#a33">00349</a> <span class="comment"></span>        <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isWritable() { <span class="keywordflow">return</span> <span class="keyword">false</span>; }
<a name="l00354"></a><a class="code" href="classsword_1_1_s_w_module.html#d1">00354</a>         <span class="keyword">static</span> <span class="keywordtype">signed</span> <span class="keywordtype">char</span> createModule(<span class="keyword">const</span> <span class="keywordtype">char</span> *) { <span class="keywordflow">return</span> -1; }
<a name="l00359"></a><a class="code" href="classsword_1_1_s_w_module.html#a34">00359</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setEntry(<span class="keyword">const</span> <span class="keywordtype">char</span> *inbuf, <span class="keywordtype">long</span> len = -1) { }
<a name="l00363"></a><a class="code" href="classsword_1_1_s_w_module.html#a35">00363</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> linkEntry(<span class="keyword">const</span> <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> *sourceKey) { }
<a name="l00367"></a><a class="code" href="classsword_1_1_s_w_module.html#a36">00367</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> deleteEntry() {}
00368 
00369         <span class="comment">// end write interface ------------------------</span>
00370 
00376         <span class="keyword">virtual</span> <span class="keywordtype">void</span> decrement(<span class="keywordtype">int</span> steps = 1);
00382         <span class="keyword">virtual</span> <span class="keywordtype">void</span> increment(<span class="keywordtype">int</span> steps = 1);
00388         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setPosition(SW_POSITION p);
<a name="l00393"></a><a class="code" href="classsword_1_1_s_w_module.html#a40">00393</a>         <span class="keyword">virtual</span> <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a> &amp; AddRenderFilter(SWFilter * newfilter) {
00394                 renderFilters-&gt;push_back (newfilter);
00395                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00396         }
<a name="l00401"></a><a class="code" href="classsword_1_1_s_w_module.html#a41">00401</a>         <span class="keyword">virtual</span> <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a> &amp; RemoveRenderFilter(SWFilter * oldfilter) {
00402                 renderFilters-&gt;remove (oldfilter);
00403                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00404         }
<a name="l00410"></a><a class="code" href="classsword_1_1_s_w_module.html#a42">00410</a>         <span class="keyword">virtual</span> <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a> &amp; ReplaceRenderFilter(SWFilter * oldfilter, SWFilter * newfilter) {
00411                 FilterList::iterator iter;
00412                 <span class="keywordflow">for</span> (iter = renderFilters-&gt;begin(); iter != renderFilters-&gt;end(); iter++) {
00413                         <span class="keywordflow">if</span> (*iter == oldfilter)
00414                                 *iter = newfilter;
00415                 }
00416                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00417         }
<a name="l00424"></a><a class="code" href="classsword_1_1_s_w_module.html#a43">00424</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> renderFilter(<span class="keywordtype">char</span> *buf, <span class="keywordtype">long</span> size, <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> *key) {
00425                 filterBuffer(renderFilters, buf, size, key);
00426         }
<a name="l00431"></a><a class="code" href="classsword_1_1_s_w_module.html#a44">00431</a>         <span class="keyword">virtual</span> <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a> &amp; AddEncodingFilter(SWFilter * newfilter) {
00432                 encodingFilters-&gt;push_back (newfilter);
00433                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00434         }
<a name="l00439"></a><a class="code" href="classsword_1_1_s_w_module.html#a45">00439</a>         <span class="keyword">virtual</span> <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a> &amp; RemoveEncodingFilter(SWFilter * oldfilter) {
00440                 encodingFilters-&gt;remove (oldfilter);
00441                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00442         }
<a name="l00448"></a><a class="code" href="classsword_1_1_s_w_module.html#a46">00448</a>         <span class="keyword">virtual</span> <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a> &amp; ReplaceEncodingFilter(SWFilter * oldfilter, SWFilter * newfilter) {
00449                 FilterList::iterator iter;
00450                 <span class="keywordflow">for</span> (iter = encodingFilters-&gt;begin(); iter != encodingFilters-&gt;end(); iter++) {
00451                         <span class="keywordflow">if</span> (*iter == oldfilter)
00452                                 *iter = newfilter;
00453                 }
00454                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00455         }
<a name="l00462"></a><a class="code" href="classsword_1_1_s_w_module.html#a47">00462</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> encodingFilter(<span class="keywordtype">char</span> *buf, <span class="keywordtype">long</span> size, <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> *key) {
00463                 filterBuffer(encodingFilters, buf, size, key);
00464         }
<a name="l00469"></a><a class="code" href="classsword_1_1_s_w_module.html#a48">00469</a>         <span class="keyword">virtual</span> <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a> &amp; AddStripFilter(SWFilter * newfilter) {
00470                 stripFilters-&gt;push_back (newfilter);
00471                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00472         }
<a name="l00479"></a><a class="code" href="classsword_1_1_s_w_module.html#a49">00479</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> stripFilter(<span class="keywordtype">char</span> *buf, <span class="keywordtype">long</span> size, <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> *key) {
00480                 filterBuffer(stripFilters, buf, size, key);
00481         }
<a name="l00486"></a><a class="code" href="classsword_1_1_s_w_module.html#a50">00486</a>         <span class="keyword">virtual</span> <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a> &amp; AddRawFilter(SWFilter * newfilter) {
00487                 rawFilters-&gt;push_back (newfilter);
00488                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00489         }
<a name="l00497"></a><a class="code" href="classsword_1_1_s_w_module.html#a51">00497</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> filterBuffer(FilterList *filters, <span class="keywordtype">char</span> *buf, <span class="keywordtype">long</span> size, <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> *key) {
00498                 FilterList::iterator it;
00499                 <span class="keywordflow">for</span> (it = filters-&gt;begin(); it != filters-&gt;end(); it++) {
00500                         (*it)-&gt;ProcessText(buf, size, key, <span class="keyword">this</span>);
00501                 }
00502         }
<a name="l00509"></a><a class="code" href="classsword_1_1_s_w_module.html#a52">00509</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> rawFilter(<span class="keywordtype">char</span> *buf, <span class="keywordtype">long</span> size, <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> *key) {
00510                 filterBuffer(rawFilters, buf, size, key);
00511         }
<a name="l00516"></a><a class="code" href="classsword_1_1_s_w_module.html#a53">00516</a>         <span class="keyword">virtual</span> <a class="code" href="classsword_1_1_s_w_module.html">SWModule</a> &amp; AddOptionFilter(SWFilter * newfilter) {
00517                 optionFilters-&gt;push_back(newfilter);
00518                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00519         }
<a name="l00526"></a><a class="code" href="classsword_1_1_s_w_module.html#a54">00526</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> optionFilter(<span class="keywordtype">char</span> *buf, <span class="keywordtype">long</span> size, <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> *key) {
00527                 filterBuffer(optionFilters, buf, size, key);
00528         }
00536         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *StripText(<span class="keywordtype">char</span> *buf = 0, <span class="keywordtype">int</span> len = -1);
00544         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *RenderText(<span class="keywordtype">char</span> *buf = 0, <span class="keywordtype">int</span> len = -1, <span class="keywordtype">bool</span> render = <span class="keyword">true</span>);
00550         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *StripText(SWKey * tmpKey);
00556         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *RenderText(SWKey * tmpKey);
00557 
<a name="l00564"></a><a class="code" href="classsword_1_1_s_w_module.html#a59">00564</a>         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setSkipConsecutiveLinks(<span class="keywordtype">bool</span> val) { skipConsecutiveLinks = val; }
00565         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> getSkipConsecutiveLinks() { <span class="keywordflow">return</span> skipConsecutiveLinks; }
00566         <span class="keyword">virtual</span> AttributeTypeList &amp;getEntryAttributes()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> entryAttributes; }
00567         <span class="keyword">virtual</span> <span class="keywordtype">void</span> processEntryAttributes(<span class="keywordtype">bool</span> val)<span class="keyword"> const </span>{ procEntAttr = val; }
00568         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isProcessEntryAttributes()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> procEntAttr; }
00569 
00570 
00571 
00572         <span class="comment">// OPERATORS -----------------------------------------------------------------</span>
00573         
00574         SWMODULE_OPERATORS
00575 
00576 };
00577 
00578 SWORD_NAMESPACE_END
00579 <span class="preprocessor">#endif</span>
</pre></div><hr><address style="align: right;"><small>Generated on Thu Oct 31 12:11:28 2002 for The Sword Project by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.17 </small></address>
</body>
</html>