1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml">
4
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
<title>tesseract: /usr/local/google/home/jbreiden/tesseract-ocr-read-only/neural_networks/runtime/neuron.h Source File</title>
8
<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
<link href="doxygen.css" rel="stylesheet" type="text/css" />
10
<link href="navtree.css" rel="stylesheet" type="text/css"/>
11
<script type="text/javascript" src="jquery.js"></script>
12
<script type="text/javascript" src="resize.js"></script>
13
<script type="text/javascript" src="navtree.js"></script>
14
<script type="text/javascript">
15
$(document).ready(initResizable);
17
<link href="search/search.css" rel="stylesheet" type="text/css"/>
18
<script type="text/javascript" src="search/search.js"></script>
19
<script type="text/javascript">
20
$(document).ready(function() { searchBox.OnSelectItem(0); });
25
<div id="top"><!-- do not remove this div! -->
29
<table cellspacing="0" cellpadding="0">
31
<tr style="height: 56px;">
34
<td style="padding-left: 0.5em;">
35
<div id="projectname">tesseract
36
 <span id="projectnumber">3.03</span>
48
<!-- Generated by Doxygen 1.7.6.1 -->
49
<script type="text/javascript">
50
var searchBox = new SearchBox("searchBox", "search",false,'Search');
52
<div id="navrow1" class="tabs">
54
<li><a href="index.html"><span>Main Page</span></a></li>
55
<li><a href="pages.html"><span>Related Pages</span></a></li>
56
<li><a href="modules.html"><span>Modules</span></a></li>
57
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
58
<li><a href="annotated.html"><span>Classes</span></a></li>
59
<li class="current"><a href="files.html"><span>Files</span></a></li>
61
<div id="MSearchBox" class="MSearchBoxInactive">
63
<img id="MSearchSelect" src="search/mag_sel.png"
64
onmouseover="return searchBox.OnSearchSelectShow()"
65
onmouseout="return searchBox.OnSearchSelectHide()"
67
<input type="text" id="MSearchField" value="Search" accesskey="S"
68
onfocus="searchBox.OnSearchFieldFocus(true)"
69
onblur="searchBox.OnSearchFieldFocus(false)"
70
onkeyup="searchBox.OnSearchFieldChange(event)"/>
71
</span><span class="right">
72
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
78
<div id="navrow2" class="tabs2">
80
<li><a href="files.html"><span>File List</span></a></li>
81
<li><a href="globals.html"><span>File Members</span></a></li>
85
<div id="side-nav" class="ui-resizable side-nav-resizable">
87
<div id="nav-tree-contents">
90
<div id="splitbar" style="-moz-user-select:none;"
91
class="ui-resizable-handle">
94
<script type="text/javascript">
95
initNavTree('a01078.html','');
97
<div id="doc-content">
99
<div class="headertitle">
100
<div class="title">/usr/local/google/home/jbreiden/tesseract-ocr-read-only/neural_networks/runtime/neuron.h</div> </div>
102
<div class="contents">
103
<a href="a01078.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Copyright 2008 Google Inc.</span>
104
<a name="l00002"></a>00002 <span class="comment">// All Rights Reserved.</span>
105
<a name="l00003"></a>00003 <span class="comment">// Author: ahmadab@google.com (Ahmad Abdulkader)</span>
106
<a name="l00004"></a>00004 <span class="comment">//</span>
107
<a name="l00005"></a>00005 <span class="comment">// neuron.h: Declarations of a class for an object that</span>
108
<a name="l00006"></a>00006 <span class="comment">// represents a single neuron in a neural network</span>
109
<a name="l00007"></a>00007 <span class="comment">//</span>
110
<a name="l00008"></a>00008
111
<a name="l00009"></a>00009 <span class="preprocessor">#ifndef NEURON_H</span>
112
<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define NEURON_H</span>
113
<a name="l00011"></a>00011 <span class="preprocessor"></span>
114
<a name="l00012"></a>00012 <span class="preprocessor">#include <math.h></span>
115
<a name="l00013"></a>00013 <span class="preprocessor">#include <vector></span>
116
<a name="l00014"></a>00014
117
<a name="l00015"></a>00015 <span class="preprocessor">#ifdef USE_STD_NAMESPACE</span>
118
<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="keyword">using</span> std::vector;
119
<a name="l00017"></a>00017 <span class="preprocessor">#endif</span>
120
<a name="l00018"></a>00018 <span class="preprocessor"></span>
121
<a name="l00019"></a>00019 <span class="keyword">namespace </span><a class="code" href="a01266.html#afed58feacb84df2de88bdd613cfdba6d">tesseract</a> {
122
<a name="l00020"></a>00020
123
<a name="l00021"></a>00021 <span class="comment">// Input Node bias values</span>
124
<a name="l00022"></a>00022 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">float</span> kInputNodeBias = 0.0f;
125
<a name="l00023"></a>00023
126
<a name="l00024"></a><a class="code" href="a00470.html">00024</a> <span class="keyword">class </span><a class="code" href="a00470.html">Neuron</a> {
127
<a name="l00025"></a>00025 <span class="keyword">public</span>:
128
<a name="l00026"></a>00026 <span class="comment">// Types of nodes</span>
129
<a name="l00027"></a><a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccc">00027</a> <span class="keyword">enum</span> <a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccc">NeuronTypes</a> {
130
<a name="l00028"></a><a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccca8a5c16f1c34dd4b835bcbedfdcd2a8b3">00028</a> <a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccca8a5c16f1c34dd4b835bcbedfdcd2a8b3">Unknown</a> = 0,
131
<a name="l00029"></a><a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69cccabf08baf29ab216392a1f0ad5c439d220">00029</a> <a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69cccabf08baf29ab216392a1f0ad5c439d220">Input</a>,
132
<a name="l00030"></a><a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccca98cb3df28d5382cccc5471de1a31cc45">00030</a> <a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccca98cb3df28d5382cccc5471de1a31cc45">Hidden</a>,
133
<a name="l00031"></a><a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccca7763743f69f362cb5e9f885457389f14">00031</a> <a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccca7763743f69f362cb5e9f885457389f14">Output</a>
134
<a name="l00032"></a>00032 };
135
<a name="l00033"></a>00033 <a class="code" href="a00470.html#a7cad293101c8b65b5cc7330abd989cba">Neuron</a>();
136
<a name="l00034"></a>00034 <a class="code" href="a00470.html#aabed977ad58b676ecbbe061065d66f51">~Neuron</a>();
137
<a name="l00035"></a>00035 <span class="comment">// set the forward dirty flag indicating that the</span>
138
<a name="l00036"></a>00036 <span class="comment">// activation of the net is not fresh</span>
139
<a name="l00037"></a><a class="code" href="a00470.html#a54f61762c8e4573804bea699ff7b9311">00037</a> <span class="keywordtype">void</span> <a class="code" href="a00470.html#a54f61762c8e4573804bea699ff7b9311">Clear</a>() {
140
<a name="l00038"></a>00038 <a class="code" href="a00470.html#a2b109732594a4fd6240995520eb9a225">frwd_dirty_</a> = <span class="keyword">true</span>;
141
<a name="l00039"></a>00039 }
142
<a name="l00040"></a>00040 <span class="comment">// Read a binary representation of the neuron info from</span>
143
<a name="l00041"></a>00041 <span class="comment">// an input buffer.</span>
144
<a name="l00042"></a><a class="code" href="a00470.html#a2620b6621c27ccc5386978fabbc5d045">00042</a> <span class="keyword">template</span> <<span class="keyword">class</span> BuffType> <span class="keywordtype">bool</span> <a class="code" href="a00470.html#a2620b6621c27ccc5386978fabbc5d045">ReadBinary</a>(BuffType *input_buff) {
145
<a name="l00043"></a>00043 <span class="keywordtype">float</span> val;
146
<a name="l00044"></a>00044 <span class="keywordflow">if</span> (input_buff->Read(&val, <span class="keyword">sizeof</span>(val)) != <span class="keyword">sizeof</span>(val)) {
147
<a name="l00045"></a>00045 <span class="keywordflow">return</span> <span class="keyword">false</span>;
148
<a name="l00046"></a>00046 }
149
<a name="l00047"></a>00047 <span class="comment">// input nodes should have no biases</span>
150
<a name="l00048"></a>00048 <span class="keywordflow">if</span> (<a class="code" href="a00470.html#a4373a2ce8c99d78cb25cd9e68bc6b106">node_type_</a> == <a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69cccabf08baf29ab216392a1f0ad5c439d220">Input</a>) {
151
<a name="l00049"></a>00049 <a class="code" href="a00470.html#a51752dcc36486a7299eeb6ae3761fcd4">bias_</a> = kInputNodeBias;
152
<a name="l00050"></a>00050 } <span class="keywordflow">else</span> {
153
<a name="l00051"></a>00051 <a class="code" href="a00470.html#a51752dcc36486a7299eeb6ae3761fcd4">bias_</a> = val;
154
<a name="l00052"></a>00052 }
155
<a name="l00053"></a>00053 <span class="comment">// read fanin count</span>
156
<a name="l00054"></a>00054 <span class="keywordtype">int</span> <a class="code" href="a00470.html#a640f3c1af33401c7b7da18ccd49ee68e">fan_in_cnt</a>;
157
<a name="l00055"></a>00055 <span class="keywordflow">if</span> (input_buff->Read(&fan_in_cnt, <span class="keyword">sizeof</span>(fan_in_cnt)) !=
158
<a name="l00056"></a>00056 <span class="keyword">sizeof</span>(<a class="code" href="a00470.html#a640f3c1af33401c7b7da18ccd49ee68e">fan_in_cnt</a>)) {
159
<a name="l00057"></a>00057 <span class="keywordflow">return</span> <span class="keyword">false</span>;
160
<a name="l00058"></a>00058 }
161
<a name="l00059"></a>00059 <span class="comment">// validate fan-in cnt</span>
162
<a name="l00060"></a>00060 <span class="keywordflow">if</span> (fan_in_cnt != <a class="code" href="a00470.html#a94802e87a7f08527f75cb9e051cc0605">fan_in_</a>.size()) {
163
<a name="l00061"></a>00061 <span class="keywordflow">return</span> <span class="keyword">false</span>;
164
<a name="l00062"></a>00062 }
165
<a name="l00063"></a>00063 <span class="comment">// read the weights</span>
166
<a name="l00064"></a>00064 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in = 0; in < <a class="code" href="a00470.html#a640f3c1af33401c7b7da18ccd49ee68e">fan_in_cnt</a>; in++) {
167
<a name="l00065"></a>00065 <span class="keywordflow">if</span> (input_buff->Read(&val, <span class="keyword">sizeof</span>(val)) != <span class="keyword">sizeof</span>(val)) {
168
<a name="l00066"></a>00066 <span class="keywordflow">return</span> <span class="keyword">false</span>;
169
<a name="l00067"></a>00067 }
170
<a name="l00068"></a>00068 *(<a class="code" href="a00470.html#ad56351b172a4616dceec90f5d7fe984b">fan_in_weights_</a>[in]) = val;
171
<a name="l00069"></a>00069 }
172
<a name="l00070"></a>00070 <span class="keywordflow">return</span> <span class="keyword">true</span>;
173
<a name="l00071"></a>00071 }
174
<a name="l00072"></a>00072
175
<a name="l00073"></a>00073 <span class="comment">// Add a new connection from this neuron *From*</span>
176
<a name="l00074"></a>00074 <span class="comment">// a target neuron using specfied params</span>
177
<a name="l00075"></a>00075 <span class="comment">// Note that what is actually copied in this function are pointers to the</span>
178
<a name="l00076"></a>00076 <span class="comment">// specified Neurons and weights and not the actualt values. This is by</span>
179
<a name="l00077"></a>00077 <span class="comment">// design to centralize the alloction of neurons and weights and so</span>
180
<a name="l00078"></a>00078 <span class="comment">// increase the locality of reference and improve cache-hits resulting</span>
181
<a name="l00079"></a>00079 <span class="comment">// in a faster net. This technique resulted in a 2X-10X speedup</span>
182
<a name="l00080"></a>00080 <span class="comment">// (depending on network size and processor)</span>
183
<a name="l00081"></a>00081 <span class="keywordtype">void</span> <a class="code" href="a00470.html#a7363a0f331c6b0d493b05280fd9dab46">AddFromConnection</a>(<a class="code" href="a00470.html">Neuron</a> *neuron_vec,
184
<a name="l00082"></a>00082 <span class="keywordtype">float</span> *wts_offset,
185
<a name="l00083"></a>00083 <span class="keywordtype">int</span> from_cnt);
186
<a name="l00084"></a>00084 <span class="comment">// Set the type of a neuron</span>
187
<a name="l00085"></a>00085 <span class="keywordtype">void</span> <a class="code" href="a00470.html#af4e0f355208188f9d6017166153d18f9">set_node_type</a>(<a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccc">NeuronTypes</a> type);
188
<a name="l00086"></a>00086 <span class="comment">// Computes the output of the node by</span>
189
<a name="l00087"></a>00087 <span class="comment">// "pulling" the output of the fan-in nodes</span>
190
<a name="l00088"></a>00088 <span class="keywordtype">void</span> <a class="code" href="a00470.html#aacf58b3d21f61bf84e2815931f869464">FeedForward</a>();
191
<a name="l00089"></a>00089 <span class="comment">// fast computation of sigmoid function using a lookup table</span>
192
<a name="l00090"></a>00090 <span class="comment">// defined in sigmoid_table.cpp</span>
193
<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code" href="a00470.html#a6b38598355a4ebd977f20f0582db3d49">Sigmoid</a>(<span class="keywordtype">float</span> activation);
194
<a name="l00092"></a>00092 <span class="comment">// Accessor functions</span>
195
<a name="l00093"></a><a class="code" href="a00470.html#ac5d956e226190d1cf2d021493beeb1b8">00093</a> <span class="keywordtype">float</span> <a class="code" href="a00470.html#ac5d956e226190d1cf2d021493beeb1b8">output</a>()<span class="keyword"> const </span>{
196
<a name="l00094"></a>00094 <span class="keywordflow">return</span> <a class="code" href="a00470.html#aecec05557a84adbe5ebc74714bae0d93">output_</a>;
197
<a name="l00095"></a>00095 }
198
<a name="l00096"></a><a class="code" href="a00470.html#ab672142abe2db452d9085ecb6689e25d">00096</a> <span class="keywordtype">void</span> <a class="code" href="a00470.html#ab672142abe2db452d9085ecb6689e25d">set_output</a>(<span class="keywordtype">float</span> out_val) {
199
<a name="l00097"></a>00097 <a class="code" href="a00470.html#aecec05557a84adbe5ebc74714bae0d93">output_</a> = out_val;
200
<a name="l00098"></a>00098 }
201
<a name="l00099"></a><a class="code" href="a00470.html#a0c1f2386bd491c36c87852b4a6bfa121">00099</a> <span class="keywordtype">int</span> <a class="code" href="a00470.html#a0c1f2386bd491c36c87852b4a6bfa121">id</a>()<span class="keyword"> const </span>{
202
<a name="l00100"></a>00100 <span class="keywordflow">return</span> <a class="code" href="a00470.html#acf182e566805bb493276be54e8b07b5a">id_</a>;
203
<a name="l00101"></a>00101 }
204
<a name="l00102"></a><a class="code" href="a00470.html#a640f3c1af33401c7b7da18ccd49ee68e">00102</a> <span class="keywordtype">int</span> <a class="code" href="a00470.html#a640f3c1af33401c7b7da18ccd49ee68e">fan_in_cnt</a>()<span class="keyword"> const </span>{
205
<a name="l00103"></a>00103 <span class="keywordflow">return</span> <a class="code" href="a00470.html#a94802e87a7f08527f75cb9e051cc0605">fan_in_</a>.size();
206
<a name="l00104"></a>00104 }
207
<a name="l00105"></a><a class="code" href="a00470.html#a34a3470583c330d6e6c46a3e2a81c012">00105</a> <a class="code" href="a00470.html">Neuron</a> * <a class="code" href="a00470.html#a34a3470583c330d6e6c46a3e2a81c012">fan_in</a>(<span class="keywordtype">int</span> idx)<span class="keyword"> const </span>{
208
<a name="l00106"></a>00106 <span class="keywordflow">return</span> <a class="code" href="a00470.html#a94802e87a7f08527f75cb9e051cc0605">fan_in_</a>[idx];
209
<a name="l00107"></a>00107 }
210
<a name="l00108"></a><a class="code" href="a00470.html#ac92db227c777f36a8c6aee05c1f1d766">00108</a> <span class="keywordtype">float</span> <a class="code" href="a00470.html#ac92db227c777f36a8c6aee05c1f1d766">fan_in_wts</a>(<span class="keywordtype">int</span> idx)<span class="keyword"> const </span>{
211
<a name="l00109"></a>00109 <span class="keywordflow">return</span> *(<a class="code" href="a00470.html#ad56351b172a4616dceec90f5d7fe984b">fan_in_weights_</a>[idx]);
212
<a name="l00110"></a>00110 }
213
<a name="l00111"></a><a class="code" href="a00470.html#a29d8526568d7b1a5df75065712e03868">00111</a> <span class="keywordtype">void</span> <a class="code" href="a00470.html#a29d8526568d7b1a5df75065712e03868">set_id</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) {
214
<a name="l00112"></a>00112 <a class="code" href="a00470.html#acf182e566805bb493276be54e8b07b5a">id_</a> = <a class="code" href="a00470.html#a0c1f2386bd491c36c87852b4a6bfa121">id</a>;
215
<a name="l00113"></a>00113 }
216
<a name="l00114"></a><a class="code" href="a00470.html#a76332b030bf687b40e64dda184e618a0">00114</a> <span class="keywordtype">float</span> <a class="code" href="a00470.html#a76332b030bf687b40e64dda184e618a0">bias</a>()<span class="keyword"> const </span>{
217
<a name="l00115"></a>00115 <span class="keywordflow">return</span> <a class="code" href="a00470.html#a51752dcc36486a7299eeb6ae3761fcd4">bias_</a>;
218
<a name="l00116"></a>00116 }
219
<a name="l00117"></a><a class="code" href="a00470.html#aa42ba2b8ca765112ad135ad4383e9a2f">00117</a> <a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccc">Neuron::NeuronTypes</a> <a class="code" href="a00470.html#aa42ba2b8ca765112ad135ad4383e9a2f">node_type</a>()<span class="keyword"> const </span>{
220
<a name="l00118"></a>00118 <span class="keywordflow">return</span> <a class="code" href="a00470.html#a4373a2ce8c99d78cb25cd9e68bc6b106">node_type_</a>;
221
<a name="l00119"></a>00119 }
222
<a name="l00120"></a>00120
223
<a name="l00121"></a>00121 <span class="keyword">protected</span>:
224
<a name="l00122"></a>00122 <span class="comment">// Type of Neuron</span>
225
<a name="l00123"></a><a class="code" href="a00470.html#a4373a2ce8c99d78cb25cd9e68bc6b106">00123</a> <a class="code" href="a00470.html#aaca04e8e86b6305b6ef5cafa97a69ccc">NeuronTypes</a> <a class="code" href="a00470.html#a4373a2ce8c99d78cb25cd9e68bc6b106">node_type_</a>;
226
<a name="l00124"></a>00124 <span class="comment">// unqique id of the neuron</span>
227
<a name="l00125"></a><a class="code" href="a00470.html#acf182e566805bb493276be54e8b07b5a">00125</a> <span class="keywordtype">int</span> <a class="code" href="a00470.html#acf182e566805bb493276be54e8b07b5a">id_</a>;
228
<a name="l00126"></a>00126 <span class="comment">// node bias</span>
229
<a name="l00127"></a><a class="code" href="a00470.html#a51752dcc36486a7299eeb6ae3761fcd4">00127</a> <span class="keywordtype">float</span> <a class="code" href="a00470.html#a51752dcc36486a7299eeb6ae3761fcd4">bias_</a>;
230
<a name="l00128"></a>00128 <span class="comment">// node net activation</span>
231
<a name="l00129"></a><a class="code" href="a00470.html#af5b3c2c30dea3732624df7e23b62f8df">00129</a> <span class="keywordtype">float</span> <a class="code" href="a00470.html#af5b3c2c30dea3732624df7e23b62f8df">activation_</a>;
232
<a name="l00130"></a>00130 <span class="comment">// node output</span>
233
<a name="l00131"></a><a class="code" href="a00470.html#aecec05557a84adbe5ebc74714bae0d93">00131</a> <span class="keywordtype">float</span> <a class="code" href="a00470.html#aecec05557a84adbe5ebc74714bae0d93">output_</a>;
234
<a name="l00132"></a>00132 <span class="comment">// pointers to fanin nodes</span>
235
<a name="l00133"></a><a class="code" href="a00470.html#a94802e87a7f08527f75cb9e051cc0605">00133</a> vector<Neuron *> <a class="code" href="a00470.html#a94802e87a7f08527f75cb9e051cc0605">fan_in_</a>;
236
<a name="l00134"></a>00134 <span class="comment">// pointers to fanin weights</span>
237
<a name="l00135"></a><a class="code" href="a00470.html#ad56351b172a4616dceec90f5d7fe984b">00135</a> vector<float *> <a class="code" href="a00470.html#ad56351b172a4616dceec90f5d7fe984b">fan_in_weights_</a>;
238
<a name="l00136"></a>00136 <span class="comment">// Sigmoid function lookup table used for fast computation</span>
239
<a name="l00137"></a>00137 <span class="comment">// of sigmoid function</span>
240
<a name="l00138"></a><a class="code" href="a00470.html#a3e21eafa1a7015d1a14a321621e724aa">00138</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="a00470.html#a3e21eafa1a7015d1a14a321621e724aa">kSigmoidTable</a>[];
241
<a name="l00139"></a>00139 <span class="comment">// flag determining if the activation of the node</span>
242
<a name="l00140"></a>00140 <span class="comment">// is fresh or not (dirty)</span>
243
<a name="l00141"></a><a class="code" href="a00470.html#a2b109732594a4fd6240995520eb9a225">00141</a> <span class="keywordtype">bool</span> <a class="code" href="a00470.html#a2b109732594a4fd6240995520eb9a225">frwd_dirty_</a>;
244
<a name="l00142"></a>00142 <span class="comment">// Initializer</span>
245
<a name="l00143"></a>00143 <span class="keywordtype">void</span> <a class="code" href="a00470.html#aa7d2dbd60eb9b1658235231328d433f6">Init</a>();
246
<a name="l00144"></a>00144 };
247
<a name="l00145"></a>00145 }
248
<a name="l00146"></a>00146
249
<a name="l00147"></a>00147 <span class="preprocessor">#endif // NEURON_H__</span>
250
</pre></div></div><!-- contents -->
252
<!-- window showing the filter options -->
253
<div id="MSearchSelectWindow"
254
onmouseover="return searchBox.OnSearchSelectShow()"
255
onmouseout="return searchBox.OnSearchSelectHide()"
256
onkeydown="return searchBox.OnSearchSelectKey(event)">
257
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Defines</a></div>
259
<!-- iframe showing the search results (closed by default) -->
260
<div id="MSearchResultsWindow">
261
<iframe src="javascript:void(0)" frameborder="0"
262
name="MSearchResults" id="MSearchResults">
266
<div id="nav-path" class="navpath">
268
<li class="navelem"><a class="el" href="a01078.html">neuron.h</a> </li>
270
<li class="footer">Generated on Mon Feb 3 2014 10:59:10 for tesseract by
271
<a href="http://www.doxygen.org/index.html">
272
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.6.1 </li>