|
|
<!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> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="namespacemembers.html">Namespace Members</a> <a class="qindex" href="functions.html">Compound Members</a> </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 <swdisp.h></span>
00028 <span class="preprocessor">#include <swkey.h></span>
00029 <span class="preprocessor">#include <listkey.h></span>
00030 <span class="preprocessor">#include <swfilter.h></span>
00031 <span class="preprocessor">#include <swconfig.h></span>
00032 <span class="preprocessor">#include <swcacher.h></span>
00033 <span class="preprocessor">#include <list></span>
00034
00035 <span class="preprocessor">#include <defs.h></span>
00036 <span class="preprocessor">#include <multimapwdef.h></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 &() { return *getKey(); } \</span>
00043 <span class="preprocessor"> operator SWKey *() { return getKey(); } \</span>
00044 <span class="preprocessor"> SWModule &operator <<(const char *inbuf) { setEntry(inbuf); return *this; } \</span>
00045 <span class="preprocessor"> SWModule &operator <<(const SWKey *sourceKey) { linkEntry(sourceKey); return *this; } \</span>
00046 <span class="preprocessor"> SWModule &operator -=(int steps) { decrement(steps); return *this; } \</span>
00047 <span class="preprocessor"> SWModule &operator +=(int steps) { increment(steps); return *this; } \</span>
00048 <span class="preprocessor"> SWModule &operator ++(int) { return *this += 1; } \</span>
00049 <span class="preprocessor"> SWModule &operator --(int) { return *this -= 1; } \</span>
00050 <span class="preprocessor"> SWModule &operator =(SW_POSITION p) { setPosition(p); return *this; }</span>
00051 <span class="preprocessor"></span>
00052
00053 <span class="keyword">typedef</span> std::list < SWFilter * >FilterList;
00054
00055 <span class="keyword">typedef</span> std::map < std::string, std::string, std::less < std::string > > AttributeValue;
00056 <span class="keyword">typedef</span> std::map < std::string, AttributeValue, std::less < std::string > > AttributeList;
00057 <span class="keyword">typedef</span> std::map < std::string, AttributeList, std::less < std::string > > 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 &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> &ikey) { <span class="keywordflow">return</span> setKey(ikey); }
00197 <span class="keywordtype">char</span> setKey(<span class="keyword">const</span> SWKey &ikey) { <span class="keywordflow">return</span> SetKey(&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> &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> & 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 & 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> *) = &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, &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> & AddRenderFilter(SWFilter * newfilter) {
00394 renderFilters->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> & RemoveRenderFilter(SWFilter * oldfilter) {
00402 renderFilters->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> & ReplaceRenderFilter(SWFilter * oldfilter, SWFilter * newfilter) {
00411 FilterList::iterator iter;
00412 <span class="keywordflow">for</span> (iter = renderFilters->begin(); iter != renderFilters->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> & AddEncodingFilter(SWFilter * newfilter) {
00432 encodingFilters->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> & RemoveEncodingFilter(SWFilter * oldfilter) {
00440 encodingFilters->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> & ReplaceEncodingFilter(SWFilter * oldfilter, SWFilter * newfilter) {
00449 FilterList::iterator iter;
00450 <span class="keywordflow">for</span> (iter = encodingFilters->begin(); iter != encodingFilters->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> & AddStripFilter(SWFilter * newfilter) {
00470 stripFilters->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> & AddRawFilter(SWFilter * newfilter) {
00487 rawFilters->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->begin(); it != filters->end(); it++) {
00500 (*it)->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> & AddOptionFilter(SWFilter * newfilter) {
00517 optionFilters->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 &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>
|