ruby-vpi 17.0.0 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. data/LICENSE +8 -6
  2. data/Rakefile +4 -4
  3. data/doc/common.css +6 -9
  4. data/doc/common.inc +3 -3
  5. data/doc/common.tpl +14 -6
  6. data/doc/history.html +152 -44
  7. data/doc/history.inc +55 -3
  8. data/doc/history.yaml +62 -2
  9. data/doc/intro.inc +20 -16
  10. data/doc/manual.doc +23 -9
  11. data/doc/manual.html +232 -200
  12. data/doc/memo.doc +7 -6
  13. data/doc/memo.html +28 -17
  14. data/doc/readme.doc +1 -1
  15. data/doc/readme.html +51 -35
  16. data/doc/rss.xml +96 -70
  17. data/ext/Rakefile +24 -11
  18. data/ext/swig_vpi.h +1 -1
  19. data/ext/swig_wrap.cin +17 -42
  20. data/lib/ruby-vpi/pli.tab +1 -0
  21. data/lib/ruby-vpi/runner.rb +34 -10
  22. data/lib/ruby-vpi/vpi.rb +483 -438
  23. data/ref/c/annotated.html +1 -1
  24. data/ref/c/common_8h.html +1 -1
  25. data/ref/c/files.html +1 -1
  26. data/ref/c/functions.html +1 -1
  27. data/ref/c/functions_vars.html +1 -1
  28. data/ref/c/globals.html +1 -1
  29. data/ref/c/globals_0x63.html +1 -1
  30. data/ref/c/globals_0x65.html +1 -1
  31. data/ref/c/globals_0x66.html +1 -1
  32. data/ref/c/globals_0x6d.html +1 -1
  33. data/ref/c/globals_0x70.html +1 -1
  34. data/ref/c/globals_0x72.html +1 -1
  35. data/ref/c/globals_0x73.html +1 -1
  36. data/ref/c/globals_0x74.html +1 -1
  37. data/ref/c/globals_0x76.html +1 -1
  38. data/ref/c/globals_0x78.html +1 -1
  39. data/ref/c/globals_defs.html +1 -1
  40. data/ref/c/globals_defs_0x65.html +1 -1
  41. data/ref/c/globals_defs_0x70.html +1 -1
  42. data/ref/c/globals_defs_0x76.html +1 -1
  43. data/ref/c/globals_defs_0x78.html +1 -1
  44. data/ref/c/globals_enum.html +1 -1
  45. data/ref/c/globals_eval.html +1 -1
  46. data/ref/c/globals_func.html +1 -1
  47. data/ref/c/globals_type.html +1 -1
  48. data/ref/c/globals_vars.html +1 -1
  49. data/ref/c/index.html +1 -1
  50. data/ref/c/main_8c.html +1 -1
  51. data/ref/c/main_8h.html +1 -1
  52. data/ref/c/relay_8c.html +1 -1
  53. data/ref/c/relay_8h.html +1 -1
  54. data/ref/c/structt__cb__data.html +1 -1
  55. data/ref/c/structt__vpi__delay.html +1 -1
  56. data/ref/c/structt__vpi__error__info.html +1 -1
  57. data/ref/c/structt__vpi__strengthval.html +1 -1
  58. data/ref/c/structt__vpi__systf__data.html +1 -1
  59. data/ref/c/structt__vpi__time.html +1 -1
  60. data/ref/c/structt__vpi__value.html +1 -1
  61. data/ref/c/structt__vpi__vecval.html +1 -1
  62. data/ref/c/structt__vpi__vlog__info.html +1 -1
  63. data/ref/c/verilog_8h.html +1 -1
  64. data/ref/c/vlog_8c.html +1 -1
  65. data/ref/c/vlog_8h.html +1 -1
  66. data/ref/c/vpi__user_8h.html +1 -1
  67. data/ref/ruby/classes/RDoc.html +5 -5
  68. data/ref/ruby/classes/RDoc.src/{M000058.html → M000061.html} +0 -0
  69. data/ref/ruby/classes/String.html +24 -24
  70. data/ref/ruby/classes/String.src/M000022.html +23 -5
  71. data/ref/ruby/classes/String.src/M000023.html +28 -5
  72. data/ref/ruby/classes/String.src/M000024.html +5 -23
  73. data/ref/ruby/classes/String.src/M000025.html +5 -28
  74. data/ref/ruby/classes/Vpi/Handle.html +94 -49
  75. data/ref/ruby/classes/Vpi/Handle.src/M000035.html +4 -4
  76. data/ref/ruby/classes/Vpi/Handle.src/M000036.html +4 -4
  77. data/ref/ruby/classes/Vpi/Handle.src/M000037.html +4 -4
  78. data/ref/ruby/classes/Vpi/Handle.src/M000038.html +4 -4
  79. data/ref/ruby/classes/Vpi/Handle.src/M000039.html +4 -4
  80. data/ref/ruby/classes/Vpi/Handle.src/M000040.html +4 -4
  81. data/ref/ruby/classes/Vpi/Handle.src/M000041.html +4 -4
  82. data/ref/ruby/classes/Vpi/Handle.src/M000042.html +4 -4
  83. data/ref/ruby/classes/Vpi/Handle.src/M000043.html +7 -7
  84. data/ref/ruby/classes/Vpi/Handle.src/M000044.html +7 -7
  85. data/ref/ruby/classes/Vpi/Handle.src/M000045.html +8 -8
  86. data/ref/ruby/classes/Vpi/Handle.src/M000046.html +36 -30
  87. data/ref/ruby/classes/Vpi/Handle.src/M000047.html +72 -67
  88. data/ref/ruby/classes/Vpi/Handle.src/M000048.html +6 -17
  89. data/ref/ruby/classes/Vpi/Handle.src/M000049.html +19 -0
  90. data/ref/ruby/classes/Vpi/Handle.src/M000050.html +5 -5
  91. data/ref/ruby/classes/Vpi/Handle.src/M000051.html +16 -10
  92. data/ref/ruby/classes/Vpi/Handle.src/M000053.html +5 -18
  93. data/ref/ruby/classes/Vpi/Handle.src/M000054.html +11 -76
  94. data/ref/ruby/classes/Vpi/Handle.src/M000056.html +31 -0
  95. data/ref/ruby/classes/Vpi/Handle.src/M000057.html +40 -0
  96. data/ref/ruby/classes/Vpi/S_vpi_time.html +16 -16
  97. data/ref/ruby/classes/Vpi/S_vpi_time.src/{M000055.html → M000058.html} +4 -4
  98. data/ref/ruby/classes/Vpi/S_vpi_time.src/M000059.html +19 -0
  99. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000032.html +4 -4
  100. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000033.html +4 -4
  101. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000034.html +4 -4
  102. data/ref/ruby/classes/Vpi.html +0 -7
  103. data/ref/ruby/classes/Vpi.src/M000029.html +14 -14
  104. data/ref/ruby/classes/Vpi.src/M000030.html +25 -24
  105. data/ref/ruby/classes/Vpi.src/M000031.html +6 -6
  106. data/ref/ruby/created.rid +1 -1
  107. data/ref/ruby/files/bin/convert_rb.html +1 -1
  108. data/ref/ruby/files/bin/generate_rb.html +1 -1
  109. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  110. data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
  111. data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
  112. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  113. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
  114. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  115. data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.html +1 -1
  116. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  117. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -1
  118. data/ref/ruby/files/lib/ruby-vpi/util_rb.html +1 -1
  119. data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
  120. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +8 -1
  121. data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
  122. data/ref/ruby/fr_method_index.html +19 -16
  123. data/samp/register_file/register_file.v +1 -1
  124. data/samp/register_file/register_file_spec.rb +9 -5
  125. metadata +42 -38
  126. data/ref/ruby/classes/Vpi/S_vpi_time.src/M000056.html +0 -19
data/LICENSE CHANGED
@@ -1,4 +1,5 @@
1
- Copyright 2006 Suraj N. Kurapati <snk@gna.org>
1
+ Copyright 2006 Suraj N. Kurapati <SNK at GNA dot ORG>
2
+ Copyright 1999 Kazuhiro HIWADA <HIWADA at KUEE dot KYOTO-U dot AC dot JP>
2
3
 
3
4
  Permission is hereby granted, free of charge, to any person obtaining a copy of
4
5
  this software and associated documentation files (the "Software"), to deal in
@@ -7,12 +8,13 @@ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
7
8
  the Software, and to permit persons to whom the Software is furnished to do so,
8
9
  subject to the following conditions:
9
10
 
10
- 1. All modified and unmodified copies and substantial portions of the Software
11
- (the "Derivatives") and their corresponding machine-readable source code (the
12
- "Code") must include the above copyright notice and this permission notice.
11
+ 1. All copies and substantial portions of the Software, whether modified or
12
+ unmodified, (the "Derivatives") and their corresponding machine-readable
13
+ source code (the "Code") must include the above copyright notice and this
14
+ permission notice.
13
15
 
14
- 2. Upon distribution, the Derivatives must be accompanied either by the Code or,
15
- if the Code is obtainable for no more than the cost of distribution plus a
16
+ 2. The Derivatives, upon distribution, must be accompanied by the Code or, if
17
+ the Code is obtainable for no more than the cost of distribution plus a
16
18
  nominal fee, by information on how to obtain the Code.
17
19
 
18
20
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
data/Rakefile CHANGED
@@ -81,14 +81,14 @@ task :default => :build
81
81
  desc "Builds object files for #{sim.name}."
82
82
  task taskName => ['obj', 'ext'] do
83
83
  src = PROJECT_ID + '.' + Config::CONFIG['DLEXT']
84
- dst = File.expand_path(File.join('obj', id.to_s))
84
+ dst = File.expand_path(File.join('obj', "#{id}.so"))
85
85
 
86
86
  unless File.exist? dst
87
87
  cd 'ext' do
88
- ENV['CFLAGS'] = "#{ccFlags} #{sim.compiler_args}"
89
- ENV['LDFLAGS'] = "#{ldFlags} #{sim.linker_args}"
88
+ ENV['CFLAGS'] = [ccFlags, sim.compiler_args].compact.join(' ')
89
+ ENV['LDFLAGS'] = [ldFlags, sim.linker_args].compact.join(' ')
90
90
 
91
- sh 'rake'
91
+ sh "rake SIMULATOR=#{id}"
92
92
  mv src, dst
93
93
  sh 'rake clean'
94
94
  end
data/doc/common.css CHANGED
@@ -15,10 +15,6 @@ body {
15
15
  padding: 2em;
16
16
  }
17
17
 
18
- #body > h1 {
19
- margin-top: 0;
20
- }
21
-
22
18
 
23
19
  /* headings */
24
20
 
@@ -35,23 +31,24 @@ h1, h2, h3, h4, h5, h6 {
35
31
 
36
32
  /* table of contents */
37
33
 
38
- #toc-links {
34
+ #toc-links,
35
+ #site-links {
39
36
  text-align: center;
40
37
  border-bottom: thick solid salmon;
41
38
  background-color: white;
42
39
  padding: 1em;
43
40
  }
44
41
 
42
+ #toc-links {
43
+ background-color: ivory;
44
+ }
45
+
45
46
  #toc {
46
47
  border-top: thick solid salmon;
47
48
  background-color: white;
48
49
  padding: 1em;
49
50
  }
50
51
 
51
- #toc li {
52
- margin-left: -15px;
53
- }
54
-
55
52
 
56
53
  /* latex */
57
54
 
data/doc/common.inc CHANGED
@@ -7,7 +7,7 @@
7
7
  downloadURL = 'http://rubyforge.org/frs/?group_id=1339'
8
8
  forumURL = 'http://rubyforge.org/forum/?group_id=1339'
9
9
  trackerURL = 'http://rubyforge.org/tracker/?group_id=1339'
10
- portalURL = 'http://rubyforge.org/projects/ruby-vpi'
11
- codeURL = 'http://ruby-vpi.rubyforge.org/src/ruby-vpi'
12
- projectURL = 'http://ruby-vpi.rubyforge.org'
10
+ portalURL = 'http://rubyforge.org/projects/ruby-vpi/'
11
+ codeURL = 'http://ruby-vpi.rubyforge.org/src/ruby-vpi/'
12
+ projectURL = 'http://ruby-vpi.rubyforge.org/'
13
13
  %>
data/doc/common.tpl CHANGED
@@ -33,19 +33,27 @@
33
33
  <title><%= page_title %></title>
34
34
  </head>
35
35
  <body>
36
+ <div id="site-links">
37
+ <a href="readme.html">Home</a>
38
+ <%
39
+ Dir['*.doc'].each do |src|
40
+ name, ext = src.split('.', 2)
41
+ next if name == 'readme'
42
+ %>
43
+ &middot; <a href="<%= name %>.html"><%= name.capitalize %></a>
44
+ <% end %>
45
+ <hr style="display: none"/>
46
+ </div>
47
+
36
48
  <% if insert_toc %>
37
49
  <div id="toc-links">
38
- <%
50
+ <%=
39
51
  links = listings.map do |x|
40
52
  %{<a href="##{x.anchor}">#{x.name}</a>}
41
53
  end
42
54
  links.unshift %{<a href="#toc:contents">Contents</a>}
55
+ links.join ' &middot; '
43
56
  %>
44
- <% links.each do |link| %>
45
- <%= link %> &middot;
46
- <% end %>
47
-
48
- <a href="readme.html" style="color: green; font-size: larger;">Home page</a>
49
57
  </div>
50
58
  <% end %>
51
59
 
data/doc/history.html CHANGED
@@ -8,10 +8,16 @@
8
8
  <title>Release history</title>
9
9
  </head>
10
10
  <body>
11
+ <div id="site-links">
12
+ <a href="readme.html">Home</a>
13
+ &middot; <a href="manual.html">Manual</a>
14
+ &middot; <a href="memo.html">Memo</a>
15
+ &middot; <a href="history.html">History</a>
16
+ <hr style="display: none"/>
17
+ </div>
18
+
11
19
  <div id="toc-links">
12
- <a href="#toc:contents">Contents</a> &middot;
13
-
14
- <a href="readme.html" style="color: green; font-size: larger;">Home page</a>
20
+ <a href="#toc:contents">Contents</a>
15
21
  </div>
16
22
 
17
23
  <div id="body">
@@ -48,11 +54,113 @@
48
54
  </div>
49
55
 
50
56
 
57
+ <hr style="display: none"/>
58
+
59
+ <div id="a18.0.0" class="section">
60
+ <h1 class="title">
61
+ <a href="#a-607182658">2</a>
62
+
63
+ &nbsp;
64
+
65
+ Version 18.0.0 (2007-07-31)
66
+ </h1>
67
+
68
+ <p>This release restores support for Synopsys VCS and Cadence NC-Sim, improves portability and performance, and enhances the VPI abstraction layer.</p>
69
+
70
+
71
+ <h2>Thanks</h2>
72
+
73
+
74
+ <ul>
75
+ <li>Calvin Wong discovered <a href="http://rubyforge.org/forum/message.php?msg_id=25691">how to bypass the following error</a> emitted by Synopsys VCS when loading the Ruby-VPI shared object file.
76
+
77
+ <pre>
78
+ Could not open library specified in -load option obj/vcs
79
+ obj/vcs: undefined symbol: vpi_put_data
80
+ </pre></li>
81
+ </ul>
82
+
83
+
84
+ <h2>Caution</h2>
85
+
86
+
87
+ <ul>
88
+ <li><a href="http://www.swig.org/">SWIG</a> is now required in order to compile and install Ruby-VPI.</li>
89
+ </ul>
90
+
91
+
92
+ <ul>
93
+ <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.put_value</code> no longer checks whether the value written matches the value read back after writing because that only works when there is no VPI delay associated with the write.</li>
94
+ </ul>
95
+
96
+
97
+ <ul>
98
+ <li>When <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.put_value</code> is used to write a value to a wire (VpiNet), it now <em>forces</em> the value. This is done to ensure portability:
99
+
100
+ <p>Synopsys VCS and Cadence NC-Sim forget the value written to a wire during the next simulation time step, whereas Mentor Modelsim and GPL Cver remember the value (thereby treating wires as registers).</p>
101
+
102
+
103
+ <p>Note that you have to release a forced value (using <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.release_value</code>) on a wire after writing to the wire if you want the design under test have the ability to update the value of the wire later on:</p>
104
+
105
+
106
+ <pre class="code">
107
+ your_wire.intVal = <span style="color:#00D; font-weight:bold">15</span>
108
+ your_wire.release_value
109
+ advance_time <span style="color:#888"># let the Verilog DUT modify your_wire</span>
110
+ </pre>
111
+
112
+
113
+ <p>In addition, you can check if a wire has a forced value using the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.value_forced?</code> method.</p></li>
114
+ </ul>
115
+
116
+
117
+ <ul>
118
+ <li>If the format is not specified, <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.get_value</code> now assumes that you want to read the value in VpiIntVal format (because this is the most common case).</li>
119
+ </ul>
120
+
121
+
122
+ <ul>
123
+ <li>The definition of &#8220;Derivatives&#8221; has been reworded for clarity in the <a href="readme.html#intro.license">project license</a>.</li>
124
+ </ul>
125
+
126
+
127
+ <h2>Repairs</h2>
128
+
129
+
130
+ <ul>
131
+ <li>Synopsys VCS and Cadence NC-Sim simulators now correctly load Ruby-VPI. Also, the 64-bit versions of these simulators are now supported.</li>
132
+ </ul>
133
+
134
+
135
+ <h2>Improvements</h2>
136
+
137
+
138
+ <ul>
139
+ <li>Added &#8220;force_value&#8221;, &#8220;release_value&#8221;, and &#8220;value_forced?&#8221; methods to the <code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span></code> class.</li>
140
+ </ul>
141
+
142
+
143
+ <ul>
144
+ <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.put_value</code> now tries to automatically detect the format of the value to be written. As a result, you can now write <code class="code">your_handle.put_value <span style="color:#00D; font-weight:bold">35</span></code> in lieu of writing <code class="code">your_handle.intVal = <span style="color:#00D; font-weight:bold">35</span></code>.</li>
145
+ </ul>
146
+
147
+
148
+ <ul>
149
+ <li><code class="code"><span style="color:#036; font-weight:bold">Vpi</span>::<span style="color:#036; font-weight:bold">Handle</span>.inspect</code> now shows the hexStrVal of the handle (because it is a common case to want to see a handle&#8217;s logic value along with its other information).</li>
150
+ </ul>
151
+
152
+
153
+ <ul>
154
+ <li>Added method caching (memoizing) for VPI property accesses on handles.</li>
155
+ </ul>
156
+
157
+ </div>
158
+
51
159
  <hr style="display: none"/>
52
160
 
53
161
  <div id="a17.0.0" class="section">
54
162
  <h1 class="title">
55
- <a href="#a-607354788">2</a>
163
+ <a href="#a-607186018">3</a>
56
164
 
57
165
  &nbsp;
58
166
 
@@ -194,7 +302,7 @@
194
302
 
195
303
  <div id="a16.0.1" class="section">
196
304
  <h1 class="title">
197
- <a href="#a-607357728">3</a>
305
+ <a href="#a-607188328">4</a>
198
306
 
199
307
  &nbsp;
200
308
 
@@ -225,14 +333,14 @@
225
333
 
226
334
  <div id="a16.0.0" class="section">
227
335
  <h1 class="title">
228
- <a href="#a-607363398">4</a>
336
+ <a href="#a-607191278">5</a>
229
337
 
230
338
  &nbsp;
231
339
 
232
340
  Version 16.0.0 (2007-05-02)
233
341
  </h1>
234
342
 
235
- This release adds support for the <a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim / NC-Verilog</a> simulator, improves the project website and documentation, simplifies interaction with VPI, and comes with a more permissive license.
343
+ This release adds support for the <a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim</a> simulator, improves the project website and documentation, simplifies interaction with VPI, and comes with a more permissive license.
236
344
 
237
345
 
238
346
  <h2>Caution</h2>
@@ -262,7 +370,7 @@
262
370
 
263
371
 
264
372
  <ul>
265
- <li>The <a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim / NC-Verilog</a> (ncsim) simulator is now supported.</li>
373
+ <li>The <a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim</a> (ncsim) simulator is now supported.</li>
266
374
  </ul>
267
375
 
268
376
 
@@ -301,7 +409,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
301
409
 
302
410
  <div id="a15.0.2" class="section">
303
411
  <h1 class="title">
304
- <a href="#a-607366358">5</a>
412
+ <a href="#a-607193568">6</a>
305
413
 
306
414
  &nbsp;
307
415
 
@@ -329,7 +437,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
329
437
 
330
438
  <div id="a15.0.1" class="section">
331
439
  <h1 class="title">
332
- <a href="#a-607369408">6</a>
440
+ <a href="#a-607195998">7</a>
333
441
 
334
442
  &nbsp;
335
443
 
@@ -370,7 +478,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
370
478
 
371
479
  <div id="a15.0.0" class="section">
372
480
  <h1 class="title">
373
- <a href="#a-607372878">7</a>
481
+ <a href="#a-607198768">8</a>
374
482
 
375
483
  &nbsp;
376
484
 
@@ -442,7 +550,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
442
550
 
443
551
  <div id="a14.0.0" class="section">
444
552
  <h1 class="title">
445
- <a href="#a-607376468">8</a>
553
+ <a href="#a-607201618">9</a>
446
554
 
447
555
  &nbsp;
448
556
 
@@ -524,7 +632,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
524
632
 
525
633
  <div id="a13.0.0" class="section">
526
634
  <h1 class="title">
527
- <a href="#a-607379488">9</a>
635
+ <a href="#a-607204228">10</a>
528
636
 
529
637
  &nbsp;
530
638
 
@@ -583,7 +691,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
583
691
 
584
692
  <div id="a12.1.0" class="section">
585
693
  <h1 class="title">
586
- <a href="#a-607384938">10</a>
694
+ <a href="#a-607206878">11</a>
587
695
 
588
696
  &nbsp;
589
697
 
@@ -650,7 +758,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
650
758
 
651
759
  <div id="a12.0.2" class="section">
652
760
  <h1 class="title">
653
- <a href="#a-607387958">11</a>
761
+ <a href="#a-607209028">12</a>
654
762
 
655
763
  &nbsp;
656
764
 
@@ -665,7 +773,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
665
773
 
666
774
  <div id="a12.0.1" class="section">
667
775
  <h1 class="title">
668
- <a href="#a-607390818">12</a>
776
+ <a href="#a-607211418">13</a>
669
777
 
670
778
  &nbsp;
671
779
 
@@ -697,7 +805,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
697
805
 
698
806
  <div id="a12.0.0" class="section">
699
807
  <h1 class="title">
700
- <a href="#a-607394448">13</a>
808
+ <a href="#a-607214448">14</a>
701
809
 
702
810
  &nbsp;
703
811
 
@@ -804,7 +912,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
804
912
 
805
913
  <div id="a11.1.1" class="section">
806
914
  <h1 class="title">
807
- <a href="#a-607397488">14</a>
915
+ <a href="#a-607216938">15</a>
808
916
 
809
917
  &nbsp;
810
918
 
@@ -848,7 +956,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
848
956
 
849
957
  <div id="a11.1.0" class="section">
850
958
  <h1 class="title">
851
- <a href="#a-607400778">15</a>
959
+ <a href="#a-607219728">16</a>
852
960
 
853
961
  &nbsp;
854
962
 
@@ -930,7 +1038,7 @@ puts <span style="background-color:#fff0f0"><span style="color:#710">&quot;</spa
930
1038
 
931
1039
  <div id="a11.0.0" class="section">
932
1040
  <h1 class="title">
933
- <a href="#a-607403528">16</a>
1041
+ <a href="#a-607222378">17</a>
934
1042
 
935
1043
  &nbsp;
936
1044
 
@@ -990,7 +1098,7 @@ do_stuff
990
1098
 
991
1099
  <div id="a10.0.0" class="section">
992
1100
  <h1 class="title">
993
- <a href="#a-607406538">17</a>
1101
+ <a href="#a-607225288">18</a>
994
1102
 
995
1103
  &nbsp;
996
1104
 
@@ -1078,7 +1186,7 @@ do_stuff
1078
1186
 
1079
1187
  <div id="a9.0.0" class="section">
1080
1188
  <h1 class="title">
1081
- <a href="#a-607409438">18</a>
1189
+ <a href="#a-607228078">19</a>
1082
1190
 
1083
1191
  &nbsp;
1084
1192
 
@@ -1152,7 +1260,7 @@ do_stuff
1152
1260
 
1153
1261
  <div id="a8.2.0" class="section">
1154
1262
  <h1 class="title">
1155
- <a href="#a-607412028">19</a>
1263
+ <a href="#a-607230568">20</a>
1156
1264
 
1157
1265
  &nbsp;
1158
1266
 
@@ -1193,7 +1301,7 @@ do_stuff
1193
1301
 
1194
1302
  <div id="a8.1.0" class="section">
1195
1303
  <h1 class="title">
1196
- <a href="#a-607414588">20</a>
1304
+ <a href="#a-607232918">21</a>
1197
1305
 
1198
1306
  &nbsp;
1199
1307
 
@@ -1224,7 +1332,7 @@ do_stuff
1224
1332
 
1225
1333
  <div id="a8.0.0" class="section">
1226
1334
  <h1 class="title">
1227
- <a href="#a-607417278">21</a>
1335
+ <a href="#a-607235508">22</a>
1228
1336
 
1229
1337
  &nbsp;
1230
1338
 
@@ -1286,7 +1394,7 @@ do_stuff
1286
1394
 
1287
1395
  <div id="a7.3.0" class="section">
1288
1396
  <h1 class="title">
1289
- <a href="#a-607419868">22</a>
1397
+ <a href="#a-607237998">23</a>
1290
1398
 
1291
1399
  &nbsp;
1292
1400
 
@@ -1334,7 +1442,7 @@ do_stuff
1334
1442
 
1335
1443
  <div id="a7.2.0" class="section">
1336
1444
  <h1 class="title">
1337
- <a href="#a-607422378">23</a>
1445
+ <a href="#a-607240408">24</a>
1338
1446
 
1339
1447
  &nbsp;
1340
1448
 
@@ -1373,7 +1481,7 @@ do_stuff
1373
1481
 
1374
1482
  <div id="a7.1.0" class="section">
1375
1483
  <h1 class="title">
1376
- <a href="#a-607424888">24</a>
1484
+ <a href="#a-607242818">25</a>
1377
1485
 
1378
1486
  &nbsp;
1379
1487
 
@@ -1416,7 +1524,7 @@ do_stuff
1416
1524
 
1417
1525
  <div id="a7.0.0" class="section">
1418
1526
  <h1 class="title">
1419
- <a href="#a-607427678">25</a>
1527
+ <a href="#a-607245508">26</a>
1420
1528
 
1421
1529
  &nbsp;
1422
1530
 
@@ -1489,7 +1597,7 @@ do_stuff
1489
1597
 
1490
1598
  <div id="a6.3.0" class="section">
1491
1599
  <h1 class="title">
1492
- <a href="#a-607430648">26</a>
1600
+ <a href="#a-607248278">27</a>
1493
1601
 
1494
1602
  &nbsp;
1495
1603
 
@@ -1610,7 +1718,7 @@ do_stuff
1610
1718
 
1611
1719
  <div id="a6.2.0" class="section">
1612
1720
  <h1 class="title">
1613
- <a href="#a-607433258">27</a>
1721
+ <a href="#a-607250788">28</a>
1614
1722
 
1615
1723
  &nbsp;
1616
1724
 
@@ -1661,7 +1769,7 @@ do_stuff
1661
1769
 
1662
1770
  <div id="a6.1.0" class="section">
1663
1771
  <h1 class="title">
1664
- <a href="#a-607435688">28</a>
1772
+ <a href="#a-607253118">29</a>
1665
1773
 
1666
1774
  &nbsp;
1667
1775
 
@@ -1693,7 +1801,7 @@ do_stuff
1693
1801
 
1694
1802
  <div id="a6.0.0" class="section">
1695
1803
  <h1 class="title">
1696
- <a href="#a-607438338">29</a>
1804
+ <a href="#a-607255668">30</a>
1697
1805
 
1698
1806
  &nbsp;
1699
1807
 
@@ -1746,7 +1854,7 @@ do_stuff
1746
1854
 
1747
1855
  <div id="a5.1.1" class="section">
1748
1856
  <h1 class="title">
1749
- <a href="#a-607440828">30</a>
1857
+ <a href="#a-607258058">31</a>
1750
1858
 
1751
1859
  &nbsp;
1752
1860
 
@@ -1782,7 +1890,7 @@ do_stuff
1782
1890
 
1783
1891
  <div id="a5.1.0" class="section">
1784
1892
  <h1 class="title">
1785
- <a href="#a-607443688">31</a>
1893
+ <a href="#a-607260808">32</a>
1786
1894
 
1787
1895
  &nbsp;
1788
1896
 
@@ -1857,7 +1965,7 @@ do_stuff
1857
1965
 
1858
1966
  <div id="a5.0.0" class="section">
1859
1967
  <h1 class="title">
1860
- <a href="#a-607446538">32</a>
1968
+ <a href="#a-607263458">33</a>
1861
1969
 
1862
1970
  &nbsp;
1863
1971
 
@@ -1920,7 +2028,7 @@ do_stuff
1920
2028
 
1921
2029
  <div id="a4.0.0" class="section">
1922
2030
  <h1 class="title">
1923
- <a href="#a-607449268">33</a>
2031
+ <a href="#a-607266088">34</a>
1924
2032
 
1925
2033
  &nbsp;
1926
2034
 
@@ -1981,7 +2089,7 @@ do_stuff
1981
2089
 
1982
2090
  <div id="a3.2.0" class="section">
1983
2091
  <h1 class="title">
1984
- <a href="#a-607451888">34</a>
2092
+ <a href="#a-607268598">35</a>
1985
2093
 
1986
2094
  &nbsp;
1987
2095
 
@@ -2031,7 +2139,7 @@ do_stuff
2031
2139
 
2032
2140
  <div id="a3.1.0" class="section">
2033
2141
  <h1 class="title">
2034
- <a href="#a-607454578">35</a>
2142
+ <a href="#a-607271188">36</a>
2035
2143
 
2036
2144
  &nbsp;
2037
2145
 
@@ -2091,7 +2199,7 @@ do_stuff
2091
2199
 
2092
2200
  <div id="a3.0.0" class="section">
2093
2201
  <h1 class="title">
2094
- <a href="#a-607457438">36</a>
2202
+ <a href="#a-607273938">37</a>
2095
2203
 
2096
2204
  &nbsp;
2097
2205
 
@@ -2164,7 +2272,7 @@ do_stuff
2164
2272
 
2165
2273
  <div id="a2.0.0" class="section">
2166
2274
  <h1 class="title">
2167
- <a href="#a-607460198">37</a>
2275
+ <a href="#a-607276588">38</a>
2168
2276
 
2169
2277
  &nbsp;
2170
2278
 
@@ -2223,7 +2331,7 @@ do_stuff
2223
2331
 
2224
2332
  <div id="a1.0.0" class="section">
2225
2333
  <h1 class="title">
2226
- <a href="#a-607463278">38</a>
2334
+ <a href="#a-607279478">39</a>
2227
2335
 
2228
2336
  &nbsp;
2229
2337
 
@@ -2307,7 +2415,7 @@ do_stuff
2307
2415
 
2308
2416
  <div id="a0.0.0" class="section">
2309
2417
  <h1 class="title">
2310
- <a href="#a-607465668">39</a>
2418
+ <a href="#a-607281768">40</a>
2311
2419
 
2312
2420
  &nbsp;
2313
2421
 
@@ -2335,7 +2443,7 @@ do_stuff
2335
2443
  <hr style="display: none"/>
2336
2444
  <div id="toc">
2337
2445
  <h1 id="toc:contents">Contents</h1>
2338
- <ul><li><span class="hide">1 </span><a id="a-607350668" href="#Release_history">Release history</a><ul><li><span class="hide">1.1 </span><a id="a-607346028" href="#Version_numbering_system">Version numbering system</a></li></ul></li><li><span class="hide">2 </span><a id="a-607354788" href="#a17.0.0">Version 17.0.0 (2007-07-22)</a></li><li><span class="hide">3 </span><a id="a-607357728" href="#a16.0.1">Version 16.0.1 (2007-05-27)</a></li><li><span class="hide">4 </span><a id="a-607363398" href="#a16.0.0">Version 16.0.0 (2007-05-02)</a></li><li><span class="hide">5 </span><a id="a-607366358" href="#a15.0.2">Version 15.0.2 (2007-01-22)</a></li><li><span class="hide">6 </span><a id="a-607369408" href="#a15.0.1">Version 15.0.1 (2007-01-15)</a></li><li><span class="hide">7 </span><a id="a-607372878" href="#a15.0.0">Version 15.0.0 (2007-01-13)</a></li><li><span class="hide">8 </span><a id="a-607376468" href="#a14.0.0">Version 14.0.0 (2006-12-30)</a></li><li><span class="hide">9 </span><a id="a-607379488" href="#a13.0.0">Version 13.0.0 (2006-12-27)</a></li><li><span class="hide">10 </span><a id="a-607384938" href="#a12.1.0">Version 12.1.0 (2006-12-22)</a></li><li><span class="hide">11 </span><a id="a-607387958" href="#a12.0.2">Version 12.0.2 (2006-12-18)</a></li><li><span class="hide">12 </span><a id="a-607390818" href="#a12.0.1">Version 12.0.1 (2006-12-18)</a></li><li><span class="hide">13 </span><a id="a-607394448" href="#a12.0.0">Version 12.0.0 (2006-12-07)</a></li><li><span class="hide">14 </span><a id="a-607397488" href="#a11.1.1">Version 11.1.1 (2006-11-15)</a></li><li><span class="hide">15 </span><a id="a-607400778" href="#a11.1.0">Version 11.1.0 (2006-11-08)</a></li><li><span class="hide">16 </span><a id="a-607403528" href="#a11.0.0">Version 11.0.0 (2006-11-05)</a></li><li><span class="hide">17 </span><a id="a-607406538" href="#a10.0.0">Version 10.0.0 (2006-11-05)</a></li><li><span class="hide">18 </span><a id="a-607409438" href="#a9.0.0">Version 9.0.0 (2006-10-28)</a></li><li><span class="hide">19 </span><a id="a-607412028" href="#a8.2.0">Version 8.2.0 (2006-10-24)</a></li><li><span class="hide">20 </span><a id="a-607414588" href="#a8.1.0">Version 8.1.0 (2006-10-21)</a></li><li><span class="hide">21 </span><a id="a-607417278" href="#a8.0.0">Version 8.0.0 (2006-10-13)</a></li><li><span class="hide">22 </span><a id="a-607419868" href="#a7.3.0">Version 7.3.0 (2006-09-30)</a></li><li><span class="hide">23 </span><a id="a-607422378" href="#a7.2.0">Version 7.2.0 (2006-09-15)</a></li><li><span class="hide">24 </span><a id="a-607424888" href="#a7.1.0">Version 7.1.0 (2006-08-29)</a></li><li><span class="hide">25 </span><a id="a-607427678" href="#a7.0.0">Version 7.0.0 (2006-08-29)</a></li><li><span class="hide">26 </span><a id="a-607430648" href="#a6.3.0">Version 6.3.0 (2006-08-27)</a></li><li><span class="hide">27 </span><a id="a-607433258" href="#a6.2.0">Version 6.2.0 (2006-08-26)</a></li><li><span class="hide">28 </span><a id="a-607435688" href="#a6.1.0">Version 6.1.0 (2006-08-09)</a></li><li><span class="hide">29 </span><a id="a-607438338" href="#a6.0.0">Version 6.0.0 (2006-08-07)</a></li><li><span class="hide">30 </span><a id="a-607440828" href="#a5.1.1">Version 5.1.1 (2006-08-04)</a></li><li><span class="hide">31 </span><a id="a-607443688" href="#a5.1.0">Version 5.1.0 (2006-07-29)</a></li><li><span class="hide">32 </span><a id="a-607446538" href="#a5.0.0">Version 5.0.0 (2006-07-22)</a></li><li><span class="hide">33 </span><a id="a-607449268" href="#a4.0.0">Version 4.0.0 (2006-05-25)</a></li><li><span class="hide">34 </span><a id="a-607451888" href="#a3.2.0">Version 3.2.0 (2006-05-13)</a></li><li><span class="hide">35 </span><a id="a-607454578" href="#a3.1.0">Version 3.1.0 (2006-04-28)</a></li><li><span class="hide">36 </span><a id="a-607457438" href="#a3.0.0">Version 3.0.0 (2006-04-23)</a></li><li><span class="hide">37 </span><a id="a-607460198" href="#a2.0.0">Version 2.0.0 (2006-04-17)</a></li><li><span class="hide">38 </span><a id="a-607463278" href="#a1.0.0">Version 1.0.0 (2006-02-26)</a></li><li><span class="hide">39 </span><a id="a-607465668" href="#a0.0.0">Version 0.0.0 (1999-10-31)</a></li></ul>
2446
+ <ul><li><span class="hide">1 </span><a id="a-607179468" href="#Release_history">Release history</a><ul><li><span class="hide">1.1 </span><a id="a-607176568" href="#Version_numbering_system">Version numbering system</a></li></ul></li><li><span class="hide">2 </span><a id="a-607182658" href="#a18.0.0">Version 18.0.0 (2007-07-31)</a></li><li><span class="hide">3 </span><a id="a-607186018" href="#a17.0.0">Version 17.0.0 (2007-07-22)</a></li><li><span class="hide">4 </span><a id="a-607188328" href="#a16.0.1">Version 16.0.1 (2007-05-27)</a></li><li><span class="hide">5 </span><a id="a-607191278" href="#a16.0.0">Version 16.0.0 (2007-05-02)</a></li><li><span class="hide">6 </span><a id="a-607193568" href="#a15.0.2">Version 15.0.2 (2007-01-22)</a></li><li><span class="hide">7 </span><a id="a-607195998" href="#a15.0.1">Version 15.0.1 (2007-01-15)</a></li><li><span class="hide">8 </span><a id="a-607198768" href="#a15.0.0">Version 15.0.0 (2007-01-13)</a></li><li><span class="hide">9 </span><a id="a-607201618" href="#a14.0.0">Version 14.0.0 (2006-12-30)</a></li><li><span class="hide">10 </span><a id="a-607204228" href="#a13.0.0">Version 13.0.0 (2006-12-27)</a></li><li><span class="hide">11 </span><a id="a-607206878" href="#a12.1.0">Version 12.1.0 (2006-12-22)</a></li><li><span class="hide">12 </span><a id="a-607209028" href="#a12.0.2">Version 12.0.2 (2006-12-18)</a></li><li><span class="hide">13 </span><a id="a-607211418" href="#a12.0.1">Version 12.0.1 (2006-12-18)</a></li><li><span class="hide">14 </span><a id="a-607214448" href="#a12.0.0">Version 12.0.0 (2006-12-07)</a></li><li><span class="hide">15 </span><a id="a-607216938" href="#a11.1.1">Version 11.1.1 (2006-11-15)</a></li><li><span class="hide">16 </span><a id="a-607219728" href="#a11.1.0">Version 11.1.0 (2006-11-08)</a></li><li><span class="hide">17 </span><a id="a-607222378" href="#a11.0.0">Version 11.0.0 (2006-11-05)</a></li><li><span class="hide">18 </span><a id="a-607225288" href="#a10.0.0">Version 10.0.0 (2006-11-05)</a></li><li><span class="hide">19 </span><a id="a-607228078" href="#a9.0.0">Version 9.0.0 (2006-10-28)</a></li><li><span class="hide">20 </span><a id="a-607230568" href="#a8.2.0">Version 8.2.0 (2006-10-24)</a></li><li><span class="hide">21 </span><a id="a-607232918" href="#a8.1.0">Version 8.1.0 (2006-10-21)</a></li><li><span class="hide">22 </span><a id="a-607235508" href="#a8.0.0">Version 8.0.0 (2006-10-13)</a></li><li><span class="hide">23 </span><a id="a-607237998" href="#a7.3.0">Version 7.3.0 (2006-09-30)</a></li><li><span class="hide">24 </span><a id="a-607240408" href="#a7.2.0">Version 7.2.0 (2006-09-15)</a></li><li><span class="hide">25 </span><a id="a-607242818" href="#a7.1.0">Version 7.1.0 (2006-08-29)</a></li><li><span class="hide">26 </span><a id="a-607245508" href="#a7.0.0">Version 7.0.0 (2006-08-29)</a></li><li><span class="hide">27 </span><a id="a-607248278" href="#a6.3.0">Version 6.3.0 (2006-08-27)</a></li><li><span class="hide">28 </span><a id="a-607250788" href="#a6.2.0">Version 6.2.0 (2006-08-26)</a></li><li><span class="hide">29 </span><a id="a-607253118" href="#a6.1.0">Version 6.1.0 (2006-08-09)</a></li><li><span class="hide">30 </span><a id="a-607255668" href="#a6.0.0">Version 6.0.0 (2006-08-07)</a></li><li><span class="hide">31 </span><a id="a-607258058" href="#a5.1.1">Version 5.1.1 (2006-08-04)</a></li><li><span class="hide">32 </span><a id="a-607260808" href="#a5.1.0">Version 5.1.0 (2006-07-29)</a></li><li><span class="hide">33 </span><a id="a-607263458" href="#a5.0.0">Version 5.0.0 (2006-07-22)</a></li><li><span class="hide">34 </span><a id="a-607266088" href="#a4.0.0">Version 4.0.0 (2006-05-25)</a></li><li><span class="hide">35 </span><a id="a-607268598" href="#a3.2.0">Version 3.2.0 (2006-05-13)</a></li><li><span class="hide">36 </span><a id="a-607271188" href="#a3.1.0">Version 3.1.0 (2006-04-28)</a></li><li><span class="hide">37 </span><a id="a-607273938" href="#a3.0.0">Version 3.0.0 (2006-04-23)</a></li><li><span class="hide">38 </span><a id="a-607276588" href="#a2.0.0">Version 2.0.0 (2006-04-17)</a></li><li><span class="hide">39 </span><a id="a-607279478" href="#a1.0.0">Version 1.0.0 (2006-02-26)</a></li><li><span class="hide">40 </span><a id="a-607281768" href="#a0.0.0">Version 0.0.0 (1999-10-31)</a></li></ul>
2339
2447
 
2340
2448
  </div>
2341
2449
  </body>