blob: 4c13704e6b9bc70aacc228227bdceee327a61649 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3"/>
<title>Lucene.Net: contrib/Analyzers/Miscellaneous/PrefixAwareTokenStream.cs Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="lucene-net-icon-128x128.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Lucene.Net
&#160;<span id="projectnumber">3.0.3</span>
</div>
<div id="projectbrief">Lucene.Net is a .NET port of the Java Lucene Indexing Library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="Index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Packages</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Properties</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_3a8d697be1e2feab9f01acc78e9570fb.html">contrib</a></li><li class="navelem"><a class="el" href="dir_d6f46d6f08706e7c5949ba49fb409a42.html">Analyzers</a></li><li class="navelem"><a class="el" href="dir_11809c4608d50a5bbef7a42d07a500fd.html">Miscellaneous</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">PrefixAwareTokenStream.cs</div> </div>
</div><!--header-->
<div class="contents">
<a href="_prefix_aware_token_stream_8cs.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * contributor license agreements. See the NOTICE file distributed with</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * this work for additional information regarding copyright ownership.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * (the &quot;License&quot;); you may not use this file except in compliance with</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the License. You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * limitations under the License.</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">using</span> Lucene.Net.Analysis.Tokenattributes;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">using</span> Lucene.Net.Index;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">namespace </span>Lucene.Net.Analysis.Miscellaneous</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_miscellaneous_1_1_prefix_aware_token_filter.html"> 32</a></span>&#160; <span class="keyword">public</span> <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_miscellaneous_1_1_prefix_aware_token_filter.html" title="Joins two token streams and leaves the last token of the first stream available to be used when updat...">PrefixAwareTokenFilter</a> : <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token_stream.html" title="A TokenStream enumerates the sequence of tokens, either from Fields of a Document or from query text...">TokenStream</a></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_flags_attribute.html" title="This attribute can be used to pass different flags down the Tokenizer chain, eg from one TokenFilter ...">IFlagsAttribute</a> _flagsAtt;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_offset_attribute.html" title="The start and end character offset of a Token. ">IOffsetAttribute</a> _offsetAtt;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_flags_attribute.html" title="This attribute can be used to pass different flags down the Tokenizer chain, eg from one TokenFilter ...">IFlagsAttribute</a> _pFlagsAtt;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_offset_attribute.html" title="The start and end character offset of a Token. ">IOffsetAttribute</a> _pOffsetAtt;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_payload_attribute.html" title="The payload of a Token. See also Payload.">IPayloadAttribute</a> _pPayloadAtt;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_position_increment_attribute.html" title="The positionIncrement determines the position of this token relative to the previous Token in a Token...">IPositionIncrementAttribute</a> _pPosIncrAtt;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_term_attribute.html" title="The term text of a Token.">ITermAttribute</a> _pTermAtt;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_type_attribute.html" title="A Token&#39;s lexical type. The Default value is &quot;word&quot;. ">ITypeAttribute</a> _pTypeAtt;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_payload_attribute.html" title="The payload of a Token. See also Payload.">IPayloadAttribute</a> _payloadAtt;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_position_increment_attribute.html" title="The positionIncrement determines the position of this token relative to the previous Token in a Token...">IPositionIncrementAttribute</a> _posIncrAtt;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html" title="A Token is an occurrence of a term from the text of a field. It consists of a term&#39;s text...">Token</a> _previousPrefixToken = <span class="keyword">new</span> <a class="code" href="_snowball_filter_8cs.html#a6f0cf8ca71e14fbb50a33080d0492fff">Token</a>();</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html" title="A Token is an occurrence of a term from the text of a field. It consists of a term&#39;s text...">Token</a> _reusableToken = <span class="keyword">new</span> <a class="code" href="_snowball_filter_8cs.html#a6f0cf8ca71e14fbb50a33080d0492fff">Token</a>();</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_term_attribute.html" title="The term text of a Token.">ITermAttribute</a> _termAtt;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">private</span> readonly <a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_type_attribute.html" title="A Token&#39;s lexical type. The Default value is &quot;word&quot;. ">ITypeAttribute</a> _typeAtt;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">private</span> <span class="keywordtype">bool</span> _prefixExhausted;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_miscellaneous_1_1_prefix_aware_token_filter.html#afa5df143b69cbd2762f936ee58268ae4"> 53</a></span>&#160; <span class="keyword">public</span> <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_miscellaneous_1_1_prefix_aware_token_filter.html" title="Joins two token streams and leaves the last token of the first stream available to be used when updat...">PrefixAwareTokenFilter</a>(<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token_stream.html" title="A TokenStream enumerates the sequence of tokens, either from Fields of a Document or from query text...">TokenStream</a> prefix, <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token_stream.html" title="A TokenStream enumerates the sequence of tokens, either from Fields of a Document or from query text...">TokenStream</a> suffix) : base(suffix)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; Suffix = suffix;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; Prefix = prefix;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; _prefixExhausted = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// ReSharper disable DoNotCallOverridableMethodsInConstructor</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; _termAtt = AddAttribute&lt;ITermAttribute&gt;();</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; _posIncrAtt = AddAttribute&lt;IPositionIncrementAttribute&gt;();</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; _payloadAtt = AddAttribute&lt;IPayloadAttribute&gt;();</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; _offsetAtt = AddAttribute&lt;IOffsetAttribute&gt;();</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; _typeAtt = AddAttribute&lt;ITypeAttribute&gt;();</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; _flagsAtt = AddAttribute&lt;IFlagsAttribute&gt;();</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">// ReSharper restore DoNotCallOverridableMethodsInConstructor</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; _pTermAtt = prefix.AddAttribute&lt;<a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_term_attribute.html" title="The term text of a Token.">ITermAttribute</a>&gt;();</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; _pPosIncrAtt = prefix.AddAttribute&lt;<a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_position_increment_attribute.html" title="The positionIncrement determines the position of this token relative to the previous Token in a Token...">IPositionIncrementAttribute</a>&gt;();</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; _pPayloadAtt = prefix.AddAttribute&lt;<a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_payload_attribute.html" title="The payload of a Token. See also Payload.">IPayloadAttribute</a>&gt;();</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; _pOffsetAtt = prefix.AddAttribute&lt;<a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_offset_attribute.html" title="The start and end character offset of a Token. ">IOffsetAttribute</a>&gt;();</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; _pTypeAtt = prefix.AddAttribute&lt;<a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_type_attribute.html" title="A Token&#39;s lexical type. The Default value is &quot;word&quot;. ">ITypeAttribute</a>&gt;();</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; _pFlagsAtt = prefix.AddAttribute&lt;<a class="code" href="interface_lucene_1_1_net_1_1_analysis_1_1_tokenattributes_1_1_i_flags_attribute.html" title="This attribute can be used to pass different flags down the Tokenizer chain, eg from one TokenFilter ...">IFlagsAttribute</a>&gt;();</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_miscellaneous_1_1_prefix_aware_token_filter.html#a685e3c240d2769dce211ff8ffbffd07b"> 76</a></span>&#160; <span class="keyword">public</span> <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token_stream.html" title="A TokenStream enumerates the sequence of tokens, either from Fields of a Document or from query text...">TokenStream</a> Prefix { <span class="keyword">get</span>; <span class="keyword">set</span>; }</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_miscellaneous_1_1_prefix_aware_token_filter.html#a1ca1fdd3fb44994c09773dedcbad85f5"> 78</a></span>&#160; <span class="keyword">public</span> <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token_stream.html" title="A TokenStream enumerates the sequence of tokens, either from Fields of a Document or from query text...">TokenStream</a> Suffix { <span class="keyword">get</span>; <span class="keyword">set</span>; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_miscellaneous_1_1_prefix_aware_token_filter.html#a64bece4ca461d75b10789d6cb3b6e65f"> 80</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> sealed <span class="keywordtype">bool</span> IncrementToken()</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> (!_prefixExhausted)</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html" title="A Token is an occurrence of a term from the text of a field. It consists of a term&#39;s text...">Token</a> nextToken = GetNextPrefixInputToken(_reusableToken);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span> (nextToken == null)</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; _prefixExhausted = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; _previousPrefixToken.Reinit(nextToken);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// Make it a deep copy</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_index_1_1_payload.html" title="A Payload is metadata that can be stored together with each occurrence of a term. This metadata is st...">Payload</a> p = _previousPrefixToken.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_payload.html#a552df0ce6a4eec54d856cb357113cf7b" title="Creates an empty payload and does not allocate a byte array. ">Payload</a>;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (p != null)</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; _previousPrefixToken.Payload = (<a class="code" href="core_2_analysis_2_token_8cs.html#aba3faac25c0f0a8ba32b9ec6854f2657">Payload</a>) p.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_payload.html#a5a8e85764e5ae04eaf766d600cca7327" title="Clones this payload by creating a copy of the underlying byte array. ">Clone</a>();</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; SetCurrentToken(nextToken);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html" title="A Token is an occurrence of a term from the text of a field. It consists of a term&#39;s text...">Token</a> nextSuffixToken = GetNextSuffixInputToken(_reusableToken);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (nextSuffixToken == null)</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; nextSuffixToken = UpdateSuffixToken(nextSuffixToken, _previousPrefixToken);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; SetCurrentToken(nextSuffixToken);</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">private</span> <span class="keywordtype">void</span> SetCurrentToken(<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html" title="A Token is an occurrence of a term from the text of a field. It consists of a term&#39;s text...">Token</a> token)</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (token == null) <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; ClearAttributes();</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; _termAtt.SetTermBuffer(token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a452174268b8297bbfd5a3fb464cbe04c" title="Returns the internal termBuffer character array which you can then directly alter. If the array is too small for your token, use ResizeTermBuffer(int) to increase it. After altering the buffer be sure to call SetTermLength to record the number of valid characters that were placed into the termBuffer. ">TermBuffer</a>(), 0, token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a06d3ac24f755c433802c6200a60dbda4" title="Return number of valid characters (length of the term) in the termBuffer array. ">TermLength</a>());</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; _posIncrAtt.PositionIncrement = token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a18cc1de69d72cea8f63246b9437a1399" title="Set the position increment. This determines the position of this token relative to the previous Token...">PositionIncrement</a>;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; _flagsAtt.Flags =token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a7a2c75871d2e56906e8329e8dfe92125" title="EXPERIMENTAL: While we think this is here to stay, we may want to change it to be a long...">Flags</a>;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; _offsetAtt.SetOffset(token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a421271c40ecfd6be5852f55a4a08ccb0" title="Gets or sets this Token&#39;s starting offset, the position of the first character corresponding to this ...">StartOffset</a>, token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a8dac36e25c06d03003cf46748858026f" title="Gets or sets this Token&#39;s ending offset, one greater than the position of the last character correspo...">EndOffset</a>);</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; _typeAtt.Type = token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a61943bcca47590fc996a1ced87587ebc" title="Returns this Token&#39;s lexical type. Defaults to &quot;word&quot;. ">Type</a>;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; _payloadAtt.Payload = token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#aed3aa6f2f6759e126b1d837c2049cee7" title="Returns this Token&#39;s payload.">Payload</a>;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">private</span> <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html" title="A Token is an occurrence of a term from the text of a field. It consists of a term&#39;s text...">Token</a> GetNextPrefixInputToken(<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html" title="A Token is an occurrence of a term from the text of a field. It consists of a term&#39;s text...">Token</a> token)</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (!Prefix.IncrementToken()) <span class="keywordflow">return</span> null;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#af33e3e56ddfaae9179d39da6ce0402dc" title="Copies the contents of buffer, starting at offset for length characters, into the termBuffer array...">SetTermBuffer</a>(_pTermAtt.TermBuffer(), 0, _pTermAtt.TermLength());</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a18cc1de69d72cea8f63246b9437a1399" title="Set the position increment. This determines the position of this token relative to the previous Token...">PositionIncrement</a> = _pPosIncrAtt.PositionIncrement;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a7a2c75871d2e56906e8329e8dfe92125" title="EXPERIMENTAL: While we think this is here to stay, we may want to change it to be a long...">Flags</a> = _pFlagsAtt.Flags;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a08be487236606c501726d84749755f64" title="Set the starting and ending offset. See StartOffset() and EndOffset() ">SetOffset</a>(_pOffsetAtt.StartOffset, _pOffsetAtt.EndOffset);</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a61943bcca47590fc996a1ced87587ebc" title="Returns this Token&#39;s lexical type. Defaults to &quot;word&quot;. ">Type</a> = _pTypeAtt.Type;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#aed3aa6f2f6759e126b1d837c2049cee7" title="Returns this Token&#39;s payload.">Payload</a> = _pPayloadAtt.<a class="code" href="class_lucene_1_1_net_1_1_index_1_1_payload.html#a552df0ce6a4eec54d856cb357113cf7b" title="Creates an empty payload and does not allocate a byte array. ">Payload</a>;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> token;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">private</span> <a class="code" href="_snowball_filter_8cs.html#a6f0cf8ca71e14fbb50a33080d0492fff">Token</a> GetNextSuffixInputToken(<a class="code" href="_snowball_filter_8cs.html#a6f0cf8ca71e14fbb50a33080d0492fff">Token</a> token)</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (!Suffix.IncrementToken()) <span class="keywordflow">return</span> null;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; token.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#af33e3e56ddfaae9179d39da6ce0402dc" title="Copies the contents of buffer, starting at offset for length characters, into the termBuffer array...">SetTermBuffer</a>(_termAtt.TermBuffer(), 0, _termAtt.TermLength());</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; token.PositionIncrement = _posIncrAtt.PositionIncrement;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; token.Flags = _flagsAtt.Flags;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; token.SetOffset(_offsetAtt.StartOffset, _offsetAtt.EndOffset);</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; token.Type = _typeAtt.Type;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; token.Payload = _payloadAtt.Payload;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> token;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
<div class="line"><a name="l00156"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_miscellaneous_1_1_prefix_aware_token_filter.html#a69a3ba5b46ab709739c86d27372c46ac"> 156</a></span>&#160; <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html" title="A Token is an occurrence of a term from the text of a field. It consists of a term&#39;s text...">Token</a> UpdateSuffixToken(<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html" title="A Token is an occurrence of a term from the text of a field. It consists of a term&#39;s text...">Token</a> suffixToken, <a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html" title="A Token is an occurrence of a term from the text of a field. It consists of a term&#39;s text...">Token</a> lastPrefixToken)</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; suffixToken.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a421271c40ecfd6be5852f55a4a08ccb0" title="Gets or sets this Token&#39;s starting offset, the position of the first character corresponding to this ...">StartOffset</a> = lastPrefixToken.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a8dac36e25c06d03003cf46748858026f" title="Gets or sets this Token&#39;s ending offset, one greater than the position of the last character correspo...">EndOffset</a> + suffixToken.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a421271c40ecfd6be5852f55a4a08ccb0" title="Gets or sets this Token&#39;s starting offset, the position of the first character corresponding to this ...">StartOffset</a>;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; suffixToken.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a8dac36e25c06d03003cf46748858026f" title="Gets or sets this Token&#39;s ending offset, one greater than the position of the last character correspo...">EndOffset</a> = lastPrefixToken.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a8dac36e25c06d03003cf46748858026f" title="Gets or sets this Token&#39;s ending offset, one greater than the position of the last character correspo...">EndOffset</a> + suffixToken.<a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_token.html#a8dac36e25c06d03003cf46748858026f" title="Gets or sets this Token&#39;s ending offset, one greater than the position of the last character correspo...">EndOffset</a>;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> suffixToken;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_miscellaneous_1_1_prefix_aware_token_filter.html#a6297281f2e8a4c003f1f2db39feee8ed"> 163</a></span>&#160; <span class="keyword">protected</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Dispose(<span class="keywordtype">bool</span> disposing)</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; Prefix.Dispose();</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; Suffix.Dispose();</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_analysis_1_1_miscellaneous_1_1_prefix_aware_token_filter.html#a55fb177f0b6174df2f638b3732b6bcc8"> 169</a></span>&#160; <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Reset()</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; base.Reset();</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span> (Prefix != null)</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; _prefixExhausted = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; Prefix.Reset();</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (Suffix != null)</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; Suffix.Reset();</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 3 2013 02:12:42 for Lucene.Net by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3
</small></address>
</body>
</html>