autoc 1.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES.md +3 -0
  3. data/README.md +149 -0
  4. data/cmake/AutoC.cmake +39 -0
  5. data/lib/autoc/allocators.rb +51 -0
  6. data/lib/autoc/association.rb +126 -0
  7. data/lib/autoc/box.rb +311 -0
  8. data/lib/autoc/cmake.rb +54 -0
  9. data/lib/autoc/collection.rb +83 -110
  10. data/lib/autoc/composite.rb +333 -0
  11. data/lib/autoc/cstring.rb +263 -0
  12. data/lib/autoc/function.rb +247 -0
  13. data/lib/autoc/hash_map.rb +328 -0
  14. data/lib/autoc/hash_set.rb +339 -0
  15. data/lib/autoc/hashers.rb +102 -0
  16. data/lib/autoc/list.rb +444 -0
  17. data/lib/autoc/module.rb +434 -0
  18. data/lib/autoc/openmp.rb +15 -0
  19. data/lib/autoc/primitive.rb +27 -0
  20. data/lib/autoc/ranges.rb +707 -0
  21. data/lib/autoc/record.rb +247 -0
  22. data/lib/autoc/scaffold/docs.rb +117 -0
  23. data/lib/autoc/scaffold/generic_value.rb +86 -0
  24. data/lib/autoc/scaffold/project.rb +75 -0
  25. data/lib/autoc/scaffold/test_cstring.rb +113 -0
  26. data/lib/autoc/scaffold/test_cstring_hash_set.rb +35 -0
  27. data/lib/autoc/scaffold/test_int_box.rb +22 -0
  28. data/lib/autoc/scaffold/test_int_hash_set.rb +448 -0
  29. data/lib/autoc/scaffold/test_int_list.rb +106 -0
  30. data/lib/autoc/scaffold/test_int_vector.rb +83 -0
  31. data/lib/autoc/scaffold/test_v2v_hash_map.rb +83 -0
  32. data/lib/autoc/scaffold/test_value_hash_set.rb +60 -0
  33. data/lib/autoc/scaffold/test_value_vector.rb +146 -0
  34. data/{test/test.rb → lib/autoc/scaffold/tests.rb} +179 -158
  35. data/lib/autoc/scaffold.rb +12 -0
  36. data/lib/autoc/sequential.rb +99 -0
  37. data/lib/autoc/set.rb +331 -0
  38. data/lib/autoc/std.rb +149 -0
  39. data/lib/autoc/type.rb +93 -531
  40. data/lib/autoc/vector.rb +290 -0
  41. data/lib/autoc.rb +4 -35
  42. metadata +55 -85
  43. data/.yardopts +0 -4
  44. data/CHANGES +0 -23
  45. data/README +0 -28
  46. data/doc/AutoC/Code.html +0 -523
  47. data/doc/AutoC/Collection.html +0 -1214
  48. data/doc/AutoC/HashMap.html +0 -1441
  49. data/doc/AutoC/HashSet.html +0 -916
  50. data/doc/AutoC/Iterators/Bidirectional.html +0 -204
  51. data/doc/AutoC/Iterators/Unidirectional.html +0 -200
  52. data/doc/AutoC/Iterators.html +0 -126
  53. data/doc/AutoC/List.html +0 -1039
  54. data/doc/AutoC/Maps.html +0 -290
  55. data/doc/AutoC/Module/File.html +0 -415
  56. data/doc/AutoC/Module/Header.html +0 -437
  57. data/doc/AutoC/Module/Source.html +0 -707
  58. data/doc/AutoC/Module.html +0 -948
  59. data/doc/AutoC/Priority.html +0 -138
  60. data/doc/AutoC/Queue.html +0 -1172
  61. data/doc/AutoC/Reference.html +0 -735
  62. data/doc/AutoC/Sets.html +0 -520
  63. data/doc/AutoC/String.html +0 -1394
  64. data/doc/AutoC/TreeMap.html +0 -1565
  65. data/doc/AutoC/TreeSet.html +0 -1447
  66. data/doc/AutoC/Type.html +0 -2148
  67. data/doc/AutoC/UserDefinedType.html +0 -1047
  68. data/doc/AutoC/Vector.html +0 -987
  69. data/doc/AutoC.html +0 -331
  70. data/doc/_index.html +0 -388
  71. data/doc/class_list.html +0 -51
  72. data/doc/css/common.css +0 -1
  73. data/doc/css/full_list.css +0 -58
  74. data/doc/css/style.css +0 -481
  75. data/doc/file.CHANGES.html +0 -117
  76. data/doc/file.README.html +0 -116
  77. data/doc/file_list.html +0 -61
  78. data/doc/frames.html +0 -17
  79. data/doc/index.html +0 -116
  80. data/doc/js/app.js +0 -243
  81. data/doc/js/full_list.js +0 -216
  82. data/doc/js/jquery.js +0 -4
  83. data/doc/method_list.html +0 -1307
  84. data/doc/top-level-namespace.html +0 -112
  85. data/lib/autoc/code.rb +0 -237
  86. data/lib/autoc/collection/hash_map.rb +0 -385
  87. data/lib/autoc/collection/hash_set.rb +0 -337
  88. data/lib/autoc/collection/iterator.rb +0 -39
  89. data/lib/autoc/collection/list.rb +0 -429
  90. data/lib/autoc/collection/map.rb +0 -41
  91. data/lib/autoc/collection/queue.rb +0 -517
  92. data/lib/autoc/collection/set.rb +0 -134
  93. data/lib/autoc/collection/tree_map.rb +0 -464
  94. data/lib/autoc/collection/tree_set.rb +0 -611
  95. data/lib/autoc/collection/vector.rb +0 -336
  96. data/lib/autoc/string.rb +0 -492
  97. data/test/test_auto.c +0 -7141
  98. data/test/test_auto.h +0 -753
  99. data/test/test_char_string.rb +0 -270
  100. data/test/test_int_list.rb +0 -35
  101. data/test/test_int_tree_set.rb +0 -111
  102. data/test/test_int_vector.rb +0 -34
  103. data/test/test_value_hash_map.rb +0 -162
  104. data/test/test_value_hash_set.rb +0 -173
  105. data/test/test_value_list.rb +0 -193
  106. data/test/test_value_queue.rb +0 -275
  107. data/test/test_value_tree_map.rb +0 -176
  108. data/test/test_value_tree_set.rb +0 -173
  109. data/test/test_value_vector.rb +0 -155
  110. data/test/value.rb +0 -80
@@ -1,1394 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>
7
- Class: AutoC::String
8
-
9
- &mdash; Documentation by YARD 0.9.5
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- pathId = "AutoC::String";
19
- relpath = '../';
20
- </script>
21
-
22
-
23
- <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
-
25
- <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
-
27
-
28
- </head>
29
- <body>
30
- <div class="nav_wrap">
31
- <iframe id="nav" src="../class_list.html"></iframe>
32
- <div id="resizer"></div>
33
- </div>
34
-
35
- <div id="main" tabindex="-1">
36
- <div id="header">
37
- <div id="menu">
38
-
39
- <a href="../_index.html">Index (S)</a> &raquo;
40
- <span class='title'><span class='object_link'><a href="../AutoC.html" title="AutoC (module)">AutoC</a></span></span>
41
- &raquo;
42
- <span class="title">String</span>
43
-
44
- </div>
45
-
46
- <div id="search">
47
-
48
- <a class="full_list_link" id="class_list_link"
49
- href="../class_list.html">
50
-
51
- <svg width="24" height="24">
52
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
- </svg>
56
- </a>
57
-
58
- </div>
59
- <div class="clear"></div>
60
- </div>
61
-
62
- <iframe id="search_frame" src="../class_list.html"></iframe>
63
-
64
- <div id="content"><h1>Class: AutoC::String
65
-
66
-
67
-
68
- </h1>
69
- <div class="box_info">
70
-
71
- <dl>
72
- <dt>Inherits:</dt>
73
- <dd>
74
- <span class="inheritName"><span class='object_link'><a href="Type.html" title="AutoC::Type (class)">Type</a></span></span>
75
-
76
- <ul class="fullTree">
77
- <li>Object</li>
78
-
79
- <li class="next"><span class='object_link'><a href="Code.html" title="AutoC::Code (class)">Code</a></span></li>
80
-
81
- <li class="next"><span class='object_link'><a href="Type.html" title="AutoC::Type (class)">Type</a></span></li>
82
-
83
- <li class="next">AutoC::String</li>
84
-
85
- </ul>
86
- <a href="#" class="inheritanceTree">show all</a>
87
-
88
- </dd>
89
- </dl>
90
-
91
-
92
-
93
-
94
-
95
-
96
- <dl>
97
- <dt>Includes:</dt>
98
- <dd>Redirecting</dd>
99
- </dl>
100
-
101
-
102
-
103
-
104
-
105
-
106
- <dl>
107
- <dt>Defined in:</dt>
108
- <dd>lib/autoc/string.rb</dd>
109
- </dl>
110
-
111
- </div>
112
-
113
- <h2>Overview</h2><div class="docstring">
114
- <div class="discussion">
115
- <div class="paragraph">
116
- <p>String is wrapper around the standard null-terminated C string which has the capabilities of both a plain string and a string builder optimized for appending and incremental building.</p>
117
- </div>
118
- <div class="paragraph">
119
- <p>It is ought to be on par with the raw C strings performance-wise (or even exceed it since the string size is tracked).</p>
120
- </div>
121
- <div class="paragraph">
122
- <p>Unlike the plain C string, this String type has value type semantics but it can be turned into the reference type with <span class='object_link'><a href="Reference.html" title="AutoC::Reference (class)">Reference</a></span>.</p>
123
- </div>
124
- <div class="paragraph">
125
- <p>The String&#8217;s default character type, <strong><em>CharType</em></strong>, is <strong><em>char</em></strong> although this can be changed.</p>
126
- </div>
127
- <div class="paragraph">
128
- <p>String generally obeys the Vector interface with respect to working with its characters and resembles the List interface when using its building capabilities.</p>
129
- </div>
130
- <div class="sect1">
131
- <h2 id="_generated_c_interface">Generated C interface</h2>
132
- <div class="sectionbody">
133
- <div class="sect2">
134
- <h3 id="_string_management">String management</h3>
135
- <table class="tableblock frame-all grid-all spread">
136
- <colgroup>
137
- <col style="width: 50%;">
138
- <col style="width: 50%;">
139
- </colgroup>
140
- <tbody>
141
- <tr>
142
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>void</em></strong> <sub>type</sub>Copy(<strong><em>Type</em></strong> * dst, <strong><em>Type</em></strong> * src)</p></td>
143
- <td class="tableblock halign-left valign-top"><p class="tableblock">Create a new string dst filled with a <em>copy</em> the contents of src.
144
- </p><p class="tableblock">NOTE: Previous contents of dst is overwritten.</p></td>
145
- </tr>
146
- <tr>
147
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>void</em></strong> <sub>type</sub>CopyRange(<strong><em>Type</em></strong> * dst, <strong><em>Type</em></strong> * src, <strong><em>size_t</em></strong> first, <strong><em>size_t</em></strong> last)</p></td>
148
- <td class="tableblock halign-left valign-top"><p class="tableblock">Create a new string dst filled with a part the contents of src lying in the range [first, last], that is including the character at position first and including the character at position last.
149
- </p><p class="tableblock">NOTE: Previous contents of dst is overwritten.
150
- </p><p class="tableblock">WARNING: first <strong>must not</strong> exceed last (that is, first &#8656; last) and both indices <strong>must</strong> be valid otherwise behavior is undefined. See <sub>type</sub>Within().</p></td>
151
- </tr>
152
- <tr>
153
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>void</em></strong> <sub>type</sub>Ctor(<strong><em>Type</em></strong> * self, <strong><em>const CharType *</em></strong> chars)</p></td>
154
- <td class="tableblock halign-left valign-top"><p class="tableblock">Create a new string self with a <em>copy</em> of the null-terminated C string chars.
155
- </p><p class="tableblock">NULL value of chars is permitted; this case corresponds to an empty string "".
156
- </p><p class="tableblock">NOTE: Previous contents of self is overwritten.</p></td>
157
- </tr>
158
- <tr>
159
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>void</em></strong> <sub>type</sub>Dtor(<strong><em>Type</em></strong> * self)</p></td>
160
- <td class="tableblock halign-left valign-top"><p class="tableblock">Destroy string self.</p></td>
161
- </tr>
162
- <tr>
163
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>int</em></strong> <sub>type</sub>Equal(<strong><em>Type</em></strong> * lt, <strong><em>Type</em></strong> * rt)</p></td>
164
- <td class="tableblock halign-left valign-top"><p class="tableblock">Return non-zero value if strings lt and rt are considered equal by contents and zero value otherwise.</p></td>
165
- </tr>
166
- <tr>
167
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>size_t</em></strong> <sub>type</sub>Identify(<strong><em>Type</em></strong> * self)</p></td>
168
- <td class="tableblock halign-left valign-top"><p class="tableblock">Return hash code for string self.</p></td>
169
- </tr>
170
- </tbody>
171
- </table>
172
- </div>
173
- <div class="sect2">
174
- <h3 id="_basic_operations">Basic operations</h3>
175
- <table class="tableblock frame-all grid-all spread">
176
- <colgroup>
177
- <col style="width: 50%;">
178
- <col style="width: 50%;">
179
- </colgroup>
180
- <tbody>
181
- <tr>
182
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>const CharType *</em></strong> <sub>type</sub>Chars(<strong><em>Type</em></strong> * self)</p></td>
183
- <td class="tableblock halign-left valign-top"><p class="tableblock">Return a <em>read-only view</em> of the string in a form of the standard C null-terminated string.
184
- </p><p class="tableblock">NOTE: the returned value need not to be freed.
185
- </p><p class="tableblock">WARNING: the returned value should be considered <strong>volatile</strong> and thus may be altered or invalidated by a subsequent call to any String method!</p></td>
186
- </tr>
187
- <tr>
188
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>int</em></strong> <sub>type</sub>Empty(<strong><em>Type</em></strong> * self)</p></td>
189
- <td class="tableblock halign-left valign-top"><p class="tableblock">Return non-zero value if string self has zero length and zero value otherwise.</p></td>
190
- </tr>
191
- <tr>
192
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>CharType</em></strong> <sub>type</sub>Get(<strong><em>Type</em></strong> * self, <strong><em>size_t</em></strong> index)</p></td>
193
- <td class="tableblock halign-left valign-top"><p class="tableblock">Return a <em>copy</em> of the character stored in self at position index.
194
- </p><p class="tableblock">WARNING: index <strong>must</strong> be a valid index otherwise the behavior is undefined. See <sub>type</sub>Within().</p></td>
195
- </tr>
196
- <tr>
197
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>void</em></strong> <sub>type</sub>Set(<strong><em>Type</em></strong> * self, <strong><em>size_t</em></strong> index, <strong><em>CharType</em></strong> value)</p></td>
198
- <td class="tableblock halign-left valign-top"><p class="tableblock">Store a <em>copy</em> of the character value in string self at position index.
199
- </p><p class="tableblock">WARNING: index <strong>must</strong> be a valid index otherwise the behavior is undefined. See <sub>type</sub>Within().</p></td>
200
- </tr>
201
- <tr>
202
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>size_t</em></strong> <sub>type</sub>Size(<strong><em>Type</em></strong> * self)</p></td>
203
- <td class="tableblock halign-left valign-top"><p class="tableblock">Return number of characters stored in string self.
204
- </p><p class="tableblock">Note that this does not include the null terminator.</p></td>
205
- </tr>
206
- <tr>
207
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>int</em></strong> <sub>type</sub>Within(<strong><em>Type</em></strong> * self, <strong><em>size_t</em></strong> index)</p></td>
208
- <td class="tableblock halign-left valign-top"><p class="tableblock">Return non-zero value if index is a valid character index and zero value otherwise.
209
- A valid index lies between 0 and <sub>type</sub>Size()-1 inclusively.</p></td>
210
- </tr>
211
- </tbody>
212
- </table>
213
- </div>
214
- <div class="sect2">
215
- <h3 id="_string_buffer_operations">String buffer operations</h3>
216
- <div class="paragraph">
217
- <p>Functions which provide the string buffer functionality.
218
- This allows the incremental building of strings without excessive storage copying/reallocation.</p>
219
- </div>
220
- <table class="tableblock frame-all grid-all spread">
221
- <colgroup>
222
- <col style="width: 50%;">
223
- <col style="width: 50%;">
224
- </colgroup>
225
- <tbody>
226
- <tr>
227
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>void</em></strong> <sub>type</sub>PushChars(<strong><em>Type</em></strong> * self, <strong><em>const CharType*</em></strong> chars)</p></td>
228
- <td class="tableblock halign-left valign-top"><p class="tableblock">Append a <em>copy</em> of the null-terminated C string chars to string self.</p></td>
229
- </tr>
230
- <tr>
231
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>int</em></strong> <sub>type</sub>PushChar(<strong><em>Type</em></strong> * self, <strong><em>CharType</em></strong> value)</p></td>
232
- <td class="tableblock halign-left valign-top"><p class="tableblock">Append a <em>copy</em> of the character value to string self.
233
- </p><p class="tableblock">Return non-zero value on success and zero value on conversion error.
234
- </p><p class="tableblock">NOTE: this convenience function applies generic formatting rules and is currently implemented as a macro; for more precise control over the formatting process use the <sub>type</sub>PushFormat() function.</p></td>
235
- </tr>
236
- <tr>
237
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>int</em></strong> <sub>type</sub>PushInt(<strong><em>Type</em></strong> * self, <strong><em>int</em></strong> value)</p></td>
238
- <td class="tableblock halign-left valign-top"><p class="tableblock">Append string representation of the integer value to string self.
239
- </p><p class="tableblock">Return non-zero value on success and zero value on conversion error.
240
- </p><p class="tableblock">NOTE: this convenience function applies generic formatting rules and is currently implemented as a macro; for more precise control over the formatting process use the <sub>type</sub>PushFormat() function.</p></td>
241
- </tr>
242
- <tr>
243
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>int</em></strong> <sub>type</sub>PushFloat(<strong><em>Type</em></strong> * self, <strong><em>double</em></strong> value)</p></td>
244
- <td class="tableblock halign-left valign-top"><p class="tableblock">Append string representation of the floating-point value to string self.
245
- </p><p class="tableblock">Return non-zero value on success and zero value on conversion error.
246
- </p><p class="tableblock">NOTE: this convenience function applies generic formatting rules and is currently implemented as a macro; for more precise control over the formatting process use the <sub>type</sub>PushFormat() function.</p></td>
247
- </tr>
248
- <tr>
249
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>int</em></strong> <sub>type</sub>PushPtr(<strong><em>Type</em></strong> * self, <strong><em>void*</em></strong> value)</p></td>
250
- <td class="tableblock halign-left valign-top"><p class="tableblock">Append string representation of the pointer value to string self.
251
- </p><p class="tableblock">Return non-zero value on success and zero value on conversion error.
252
- </p><p class="tableblock">NOTE: this convenience function applies generic formatting rules and is currently implemented as a macro; for more precise control over the formatting process use the <sub>type</sub>PushFormat() function.</p></td>
253
- </tr>
254
- <tr>
255
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>void</em></strong> <sub>type</sub>PushString(<strong><em>Type</em></strong> * self, <strong><em>Type</em></strong> * from)</p></td>
256
- <td class="tableblock halign-left valign-top"><p class="tableblock">Append a <em>copy</em> of the contents of string from to string self.</p></td>
257
- </tr>
258
- <tr>
259
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>int</em></strong> <sub>type</sub>PushFormat(<strong><em>Type</em></strong> * self, <strong><em>const char*</em></strong> format, &#8230;&#8203;);</p></td>
260
- <td class="tableblock halign-left valign-top"><p class="tableblock">Append the <em>?sprintf()</em>- formatted string to string self.
261
- </p><p class="tableblock">Return non-zero value on successful formatting and zero value if the call to <em>?sprintf()</em> failed.
262
- The latter usually happens due to the encoding error.
263
- </p><p class="tableblock">This function tries to use the <em>vsnprintf()</em> standard C function if possible and falls back to <strong>unsafe</strong> <em>vsprintf()</em> function which is ought to be present in every ANSI-compliant standard C library.
264
- The former function is used on the platforms which are known to have it; the Autotools-compliant <em>HAVE_VSNPRINTF</em> macro is also taken into consideration.
265
- <em>Note that the choice is obviously made at compile-time.</em>
266
- </p><p class="tableblock">If using the <em>vsnprintf()</em> and the allocated buffer is not large enough this function continuously expands the buffer to eventually accommodate the resulting string.
267
- On the contrary, when the <strong>unsafe</strong> <em>vsprintf()</em> is used, the buffer overrun causes this function to <strong>abort()</strong> in order to possible data corruption not to slip away uncaught.
268
- </p><p class="tableblock">Current implementation operates on the heap-allocated buffer whose initial size is determined by the <em>AUTOC_BUFFER_SIZE</em> macro.
269
- If not explicitly set it defaults to 4096 bytes.</p></td>
270
- </tr>
271
- </tbody>
272
- </table>
273
- </div>
274
- <div class="sect2">
275
- <h3 id="_iteration_over_string_s_characters">Iteration over string&#8217;s characters</h3>
276
- <table class="tableblock frame-all grid-all spread">
277
- <colgroup>
278
- <col style="width: 50%;">
279
- <col style="width: 50%;">
280
- </colgroup>
281
- <tbody>
282
- <tr>
283
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>void</em></strong> <sub>it</sub>Ctor(<strong><em>IteratorType</em></strong> * it, <strong><em>Type</em></strong> * self)</p></td>
284
- <td class="tableblock halign-left valign-top"><p class="tableblock">Create a new forward iterator it on string self.
285
- </p><p class="tableblock">NOTE: Previous contents of it is overwritten.</p></td>
286
- </tr>
287
- <tr>
288
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>void</em></strong> <sub>it</sub>CtorEx(<strong><em>IteratorType</em></strong> * it, <strong><em>Type</em></strong> * self, <strong><em>int</em></strong> forward)</p></td>
289
- <td class="tableblock halign-left valign-top"><p class="tableblock">Create a new iterator it on string self.
290
- Non-zero value of forward specifies a forward iterator, zero value specifies a backward iterator.
291
- </p><p class="tableblock">NOTE: Previous contents of it is overwritten.</p></td>
292
- </tr>
293
- <tr>
294
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>int</em></strong> <sub>it</sub>Move(<strong><em>IteratorType</em></strong> * it)</p></td>
295
- <td class="tableblock halign-left valign-top"><p class="tableblock">Advance iterator position of it <strong>and</strong> return non-zero value if new position is valid and zero value otherwise.</p></td>
296
- </tr>
297
- <tr>
298
- <td class="tableblock halign-left valign-top"><p class="tableblock"><strong><em>CharType</em></strong> <sub>it</sub>Get(<strong><em>IteratorType</em></strong> * it)</p></td>
299
- <td class="tableblock halign-left valign-top"><p class="tableblock">Return a <em>copy</em> of the character pointed to by the iterator it.
300
- </p><p class="tableblock">WARNING: current position <strong>must</strong> be valid otherwise the behavior is undefined. See <sub>it</sub>Move().</p></td>
301
- </tr>
302
- </tbody>
303
- </table>
304
- </div>
305
- </div>
306
- </div>
307
-
308
- </div>
309
- </div>
310
- <div class="tags">
311
-
312
-
313
- </div>
314
-
315
-
316
-
317
- <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
318
- <ul class="summary">
319
-
320
- <li class="public ">
321
- <span class="summary_signature">
322
-
323
- <a href="#it_ref-instance_method" title="#it_ref (instance method)">#<strong>it_ref</strong> &#x21d2; Object </a>
324
-
325
-
326
-
327
- </span>
328
-
329
-
330
-
331
-
332
- <span class="note title readonly">readonly</span>
333
-
334
-
335
-
336
-
337
-
338
-
339
-
340
-
341
-
342
- <span class="summary_desc"><div class='inline'><div class="paragraph">
343
- <p>Returns the value of attribute it_ref.</p>
344
- </div></div></span>
345
-
346
- </li>
347
-
348
-
349
- </ul>
350
-
351
-
352
-
353
-
354
-
355
- <h3 class="inherited">Attributes inherited from <span class='object_link'><a href="Type.html" title="AutoC::Type (class)">Type</a></span></h3>
356
- <p class="inherited"><span class='object_link'><a href="Type.html#type-instance_method" title="AutoC::Type#type (method)">#type</a></span>, <span class='object_link'><a href="Type.html#type_ref-instance_method" title="AutoC::Type#type_ref (method)">#type_ref</a></span></p>
357
-
358
-
359
-
360
- <h2>
361
- Instance Method Summary
362
- <small><a href="#" class="summary_toggle">collapse</a></small>
363
- </h2>
364
-
365
- <ul class="summary">
366
-
367
- <li class="public ">
368
- <span class="summary_signature">
369
-
370
- <a href="#char_type-instance_method" title="#char_type (instance method)">#<strong>char_type</strong> &#x21d2; Object </a>
371
-
372
-
373
-
374
- </span>
375
-
376
-
377
-
378
-
379
-
380
-
381
-
382
-
383
-
384
- <span class="summary_desc"><div class='inline'></div></span>
385
-
386
- </li>
387
-
388
-
389
- <li class="public ">
390
- <span class="summary_signature">
391
-
392
- <a href="#char_type_ref-instance_method" title="#char_type_ref (instance method)">#<strong>char_type_ref</strong> &#x21d2; Object </a>
393
-
394
-
395
-
396
- </span>
397
-
398
-
399
-
400
-
401
-
402
-
403
-
404
-
405
-
406
- <span class="summary_desc"><div class='inline'></div></span>
407
-
408
- </li>
409
-
410
-
411
- <li class="public ">
412
- <span class="summary_signature">
413
-
414
- <a href="#constructible%3F-instance_method" title="#constructible? (instance method)">#<strong>constructible?</strong> &#x21d2; Boolean </a>
415
-
416
-
417
-
418
- </span>
419
-
420
-
421
-
422
-
423
-
424
-
425
-
426
-
427
-
428
- <span class="summary_desc"><div class='inline'><div class="paragraph">
429
- <p>No default constructor provided.</p>
430
- </div></div></span>
431
-
432
- </li>
433
-
434
-
435
- <li class="public ">
436
- <span class="summary_signature">
437
-
438
- <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(type_name = :String, visibility = :public) &#x21d2; String </a>
439
-
440
-
441
-
442
- </span>
443
-
444
-
445
- <span class="note title constructor">constructor</span>
446
-
447
-
448
-
449
-
450
-
451
-
452
-
453
-
454
- <span class="summary_desc"><div class='inline'><div class="paragraph">
455
- <p>A new instance of String.</p>
456
- </div></div></span>
457
-
458
- </li>
459
-
460
-
461
- <li class="public ">
462
- <span class="summary_signature">
463
-
464
- <a href="#write_impls-instance_method" title="#write_impls (instance method)">#<strong>write_impls</strong>(stream, define) &#x21d2; Object </a>
465
-
466
-
467
-
468
- </span>
469
-
470
-
471
-
472
-
473
-
474
-
475
-
476
-
477
-
478
- <span class="summary_desc"><div class='inline'></div></span>
479
-
480
- </li>
481
-
482
-
483
- <li class="public ">
484
- <span class="summary_signature">
485
-
486
- <a href="#write_intf_decls-instance_method" title="#write_intf_decls (instance method)">#<strong>write_intf_decls</strong>(stream, declare, define) &#x21d2; Object </a>
487
-
488
-
489
-
490
- </span>
491
-
492
-
493
-
494
-
495
-
496
-
497
-
498
-
499
-
500
- <span class="summary_desc"><div class='inline'></div></span>
501
-
502
- </li>
503
-
504
-
505
- <li class="public ">
506
- <span class="summary_signature">
507
-
508
- <a href="#write_intf_types-instance_method" title="#write_intf_types (instance method)">#<strong>write_intf_types</strong>(stream) &#x21d2; Object </a>
509
-
510
-
511
-
512
- </span>
513
-
514
-
515
-
516
-
517
-
518
-
519
-
520
-
521
-
522
- <span class="summary_desc"><div class='inline'></div></span>
523
-
524
- </li>
525
-
526
-
527
- </ul>
528
-
529
-
530
-
531
-
532
-
533
-
534
-
535
-
536
-
537
-
538
-
539
-
540
- <h3 class="inherited">Methods inherited from <span class='object_link'><a href="Type.html" title="AutoC::Type (class)">Type</a></span></h3>
541
- <p class="inherited"><span class='object_link'><a href="Type.html#%3D%3D-instance_method" title="AutoC::Type#== (method)">#==</a></span>, <span class='object_link'><a href="Type.html#abort-instance_method" title="AutoC::Type#abort (method)">#abort</a></span>, <span class='object_link'><a href="Type.html#assert-instance_method" title="AutoC::Type#assert (method)">#assert</a></span>, <span class='object_link'><a href="Type.html#calloc-instance_method" title="AutoC::Type#calloc (method)">#calloc</a></span>, <span class='object_link'><a href="Type.html#coerce-class_method" title="AutoC::Type.coerce (method)">coerce</a></span>, <span class='object_link'><a href="Type.html#comparable%3F-instance_method" title="AutoC::Type#comparable? (method)">#comparable?</a></span>, <span class='object_link'><a href="Type.html#copyable%3F-instance_method" title="AutoC::Type#copyable? (method)">#copyable?</a></span>, <span class='object_link'><a href="Type.html#destructible%3F-instance_method" title="AutoC::Type#destructible? (method)">#destructible?</a></span>, <span class='object_link'><a href="Type.html#entities-instance_method" title="AutoC::Type#entities (method)">#entities</a></span>, <span class='object_link'><a href="Type.html#extern-instance_method" title="AutoC::Type#extern (method)">#extern</a></span>, <span class='object_link'><a href="Type.html#free-instance_method" title="AutoC::Type#free (method)">#free</a></span>, <span class='object_link'><a href="Type.html#hash-instance_method" title="AutoC::Type#hash (method)">#hash</a></span>, <span class='object_link'><a href="Type.html#hashable%3F-instance_method" title="AutoC::Type#hashable? (method)">#hashable?</a></span>, <span class='object_link'><a href="Type.html#initializable%3F-instance_method" title="AutoC::Type#initializable? (method)">#initializable?</a></span>, <span class='object_link'><a href="Type.html#inline-instance_method" title="AutoC::Type#inline (method)">#inline</a></span>, <span class='object_link'><a href="Type.html#malloc-instance_method" title="AutoC::Type#malloc (method)">#malloc</a></span>, <span class='object_link'><a href="Type.html#method_missing-instance_method" title="AutoC::Type#method_missing (method)">#method_missing</a></span>, <span class='object_link'><a href="Type.html#orderable%3F-instance_method" title="AutoC::Type#orderable? (method)">#orderable?</a></span>, <span class='object_link'><a href="Type.html#prefix-instance_method" title="AutoC::Type#prefix (method)">#prefix</a></span>, <span class='object_link'><a href="Type.html#private%3F-instance_method" title="AutoC::Type#private? (method)">#private?</a></span>, <span class='object_link'><a href="Type.html#public%3F-instance_method" title="AutoC::Type#public? (method)">#public?</a></span>, <span class='object_link'><a href="Type.html#sortable%3F-instance_method" title="AutoC::Type#sortable? (method)">#sortable?</a></span>, <span class='object_link'><a href="Type.html#static-instance_method" title="AutoC::Type#static (method)">#static</a></span>, <span class='object_link'><a href="Type.html#static%3F-instance_method" title="AutoC::Type#static? (method)">#static?</a></span>, <span class='object_link'><a href="Type.html#write_decls-instance_method" title="AutoC::Type#write_decls (method)">#write_decls</a></span>, <span class='object_link'><a href="Type.html#write_defs-instance_method" title="AutoC::Type#write_defs (method)">#write_defs</a></span>, <span class='object_link'><a href="Type.html#write_intf-instance_method" title="AutoC::Type#write_intf (method)">#write_intf</a></span></p>
542
-
543
-
544
-
545
-
546
-
547
-
548
-
549
-
550
-
551
- <h3 class="inherited">Methods inherited from <span class='object_link'><a href="Code.html" title="AutoC::Code (class)">Code</a></span></h3>
552
- <p class="inherited"><span class='object_link'><a href="Code.html#attach-instance_method" title="AutoC::Code#attach (method)">#attach</a></span>, <span class='object_link'><a href="Code.html#entities-instance_method" title="AutoC::Code#entities (method)">#entities</a></span>, <span class='object_link'><a href="Code.html#priority-instance_method" title="AutoC::Code#priority (method)">#priority</a></span>, <span class='object_link'><a href="Code.html#source_size-instance_method" title="AutoC::Code#source_size (method)">#source_size</a></span>, <span class='object_link'><a href="Code.html#write_decls-instance_method" title="AutoC::Code#write_decls (method)">#write_decls</a></span>, <span class='object_link'><a href="Code.html#write_defs-instance_method" title="AutoC::Code#write_defs (method)">#write_defs</a></span>, <span class='object_link'><a href="Code.html#write_intf-instance_method" title="AutoC::Code#write_intf (method)">#write_intf</a></span></p>
553
- <div id="constructor_details" class="method_details_list">
554
- <h2>Constructor Details</h2>
555
-
556
- <div class="method_details first">
557
- <h3 class="signature first" id="initialize-instance_method">
558
-
559
- #<strong>initialize</strong>(type_name = :String, visibility = :public) &#x21d2; <tt><span class='object_link'><a href="" title="AutoC::String (class)">String</a></span></tt>
560
-
561
-
562
-
563
-
564
-
565
- </h3><div class="docstring">
566
- <div class="discussion">
567
- <div class="paragraph">
568
- <p>Returns a new instance of String</p>
569
- </div>
570
-
571
- </div>
572
- </div>
573
- <div class="tags">
574
-
575
-
576
- </div><table class="source_code">
577
- <tr>
578
- <td>
579
- <pre class="lines">
580
-
581
-
582
- 206
583
- 207
584
- 208
585
- 209
586
- 210
587
- 211
588
- 212</pre>
589
- </td>
590
- <td>
591
- <pre class="code"><span class="info file"># File 'lib/autoc/string.rb', line 206</span>
592
-
593
- <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_type_name'>type_name</span> <span class='op'>=</span> <span class='symbol'>:String</span><span class='comma'>,</span> <span class='id identifier rubyid_visibility'>visibility</span> <span class='op'>=</span> <span class='symbol'>:public</span><span class='rparen'>)</span>
594
- <span class='kw'>super</span>
595
- <span class='ivar'>@it_ref</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_it'>it</span><span class='embexpr_end'>}</span><span class='tstring_content'>*</span><span class='tstring_end'>&quot;</span></span>
596
- <span class='ivar'>@list</span> <span class='op'>=</span> <span class='const'>List</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_list'>list</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='symbol'>:type</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='comma'>,</span> <span class='symbol'>:dtor</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_free'>free</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='symbol'>:private</span><span class='rparen'>)</span> <span class='comment'># List takes ownership over the strings put into it hence the custom element destructor
597
- </span> <span class='id identifier rubyid_initialize_redirectors'>initialize_redirectors</span>
598
- <span class='ivar'>@ctor</span> <span class='op'>=</span> <span class='id identifier rubyid_define_redirector'>define_redirector</span><span class='lparen'>(</span><span class='symbol'>:ctor</span><span class='comma'>,</span> <span class='const'>Function</span><span class='op'>::</span><span class='const'>Signature</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='op'>^</span><span class='symbol'>:self</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>const </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='op'>^</span><span class='symbol'>:chars</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rparen'>)</span>
599
- <span class='kw'>end</span></pre>
600
- </td>
601
- </tr>
602
- </table>
603
- </div>
604
-
605
- </div>
606
- <div id="method_missing_details" class="method_details_list">
607
- <h2>Dynamic Method Handling</h2>
608
- <p class="notice super">
609
- This class handles dynamic methods through the <tt>method_missing</tt> method
610
-
611
- in the class <span class='object_link'><a href="Type.html#method_missing-instance_method" title="AutoC::Type#method_missing (method)">AutoC::Type</a></span>
612
-
613
- </p>
614
-
615
- </div>
616
-
617
- <div id="instance_attr_details" class="attr_details">
618
- <h2>Instance Attribute Details</h2>
619
-
620
-
621
- <span id=""></span>
622
- <div class="method_details first">
623
- <h3 class="signature first" id="it_ref-instance_method">
624
-
625
- #<strong>it_ref</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
626
-
627
-
628
-
629
-
630
-
631
- </h3><div class="docstring">
632
- <div class="discussion">
633
- <div class="paragraph">
634
- <p>Returns the value of attribute it_ref</p>
635
- </div>
636
-
637
- </div>
638
- </div>
639
- <div class="tags">
640
-
641
-
642
- </div><table class="source_code">
643
- <tr>
644
- <td>
645
- <pre class="lines">
646
-
647
-
648
- 204
649
- 205
650
- 206</pre>
651
- </td>
652
- <td>
653
- <pre class="code"><span class="info file"># File 'lib/autoc/string.rb', line 204</span>
654
-
655
- <span class='kw'>def</span> <span class='id identifier rubyid_it_ref'>it_ref</span>
656
- <span class='ivar'>@it_ref</span>
657
- <span class='kw'>end</span></pre>
658
- </td>
659
- </tr>
660
- </table>
661
- </div>
662
-
663
- </div>
664
-
665
-
666
- <div id="instance_method_details" class="method_details_list">
667
- <h2>Instance Method Details</h2>
668
-
669
-
670
- <div class="method_details first">
671
- <h3 class="signature first" id="char_type-instance_method">
672
-
673
- #<strong>char_type</strong> &#x21d2; <tt>Object</tt>
674
-
675
-
676
-
677
-
678
-
679
- </h3><table class="source_code">
680
- <tr>
681
- <td>
682
- <pre class="lines">
683
-
684
-
685
- 200</pre>
686
- </td>
687
- <td>
688
- <pre class="code"><span class="info file"># File 'lib/autoc/string.rb', line 200</span>
689
-
690
- <span class='kw'>def</span> <span class='id identifier rubyid_char_type'>char_type</span><span class='semicolon'>;</span> <span class='symbol'>:char</span> <span class='kw'>end</span></pre>
691
- </td>
692
- </tr>
693
- </table>
694
- </div>
695
-
696
- <div class="method_details ">
697
- <h3 class="signature " id="char_type_ref-instance_method">
698
-
699
- #<strong>char_type_ref</strong> &#x21d2; <tt>Object</tt>
700
-
701
-
702
-
703
-
704
-
705
- </h3><table class="source_code">
706
- <tr>
707
- <td>
708
- <pre class="lines">
709
-
710
-
711
- 202</pre>
712
- </td>
713
- <td>
714
- <pre class="code"><span class="info file"># File 'lib/autoc/string.rb', line 202</span>
715
-
716
- <span class='kw'>def</span> <span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='semicolon'>;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>*</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>end</span></pre>
717
- </td>
718
- </tr>
719
- </table>
720
- </div>
721
-
722
- <div class="method_details ">
723
- <h3 class="signature " id="constructible?-instance_method">
724
-
725
- #<strong>constructible?</strong> &#x21d2; <tt>Boolean</tt>
726
-
727
-
728
-
729
-
730
-
731
- </h3><div class="docstring">
732
- <div class="discussion">
733
- <div class="paragraph">
734
- <p>No default constructor provided</p>
735
- </div>
736
-
737
- </div>
738
- </div>
739
- <div class="tags">
740
-
741
- <p class="tag_title">Returns:</p>
742
- <ul class="return">
743
-
744
- <li>
745
-
746
-
747
- <span class='type'>(<tt>Boolean</tt>)</span>
748
-
749
-
750
-
751
- </li>
752
-
753
- </ul>
754
-
755
- </div><table class="source_code">
756
- <tr>
757
- <td>
758
- <pre class="lines">
759
-
760
-
761
- 215</pre>
762
- </td>
763
- <td>
764
- <pre class="code"><span class="info file"># File 'lib/autoc/string.rb', line 215</span>
765
-
766
- <span class='kw'>def</span> <span class='id identifier rubyid_constructible?'>constructible?</span><span class='semicolon'>;</span> <span class='kw'>false</span> <span class='kw'>end</span></pre>
767
- </td>
768
- </tr>
769
- </table>
770
- </div>
771
-
772
- <div class="method_details ">
773
- <h3 class="signature " id="write_impls-instance_method">
774
-
775
- #<strong>write_impls</strong>(stream, define) &#x21d2; <tt>Object</tt>
776
-
777
-
778
-
779
-
780
-
781
- </h3><table class="source_code">
782
- <tr>
783
- <td>
784
- <pre class="lines">
785
-
786
-
787
- 322
788
- 323
789
- 324
790
- 325
791
- 326
792
- 327
793
- 328
794
- 329
795
- 330
796
- 331
797
- 332
798
- 333
799
- 334
800
- 335
801
- 336
802
- 337
803
- 338
804
- 339
805
- 340
806
- 341
807
- 342
808
- 343
809
- 344
810
- 345
811
- 346
812
- 347
813
- 348
814
- 349
815
- 350
816
- 351
817
- 352
818
- 353
819
- 354
820
- 355
821
- 356
822
- 357
823
- 358
824
- 359
825
- 360
826
- 361
827
- 362
828
- 363
829
- 364
830
- 365
831
- 366
832
- 367
833
- 368
834
- 369
835
- 370
836
- 371
837
- 372
838
- 373
839
- 374
840
- 375
841
- 376
842
- 377
843
- 378
844
- 379
845
- 380
846
- 381
847
- 382
848
- 383
849
- 384
850
- 385
851
- 386
852
- 387
853
- 388
854
- 389
855
- 390
856
- 391
857
- 392
858
- 393
859
- 394
860
- 395
861
- 396
862
- 397
863
- 398
864
- 399
865
- 400
866
- 401
867
- 402
868
- 403
869
- 404
870
- 405
871
- 406
872
- 407
873
- 408
874
- 409
875
- 410
876
- 411
877
- 412
878
- 413
879
- 414
880
- 415
881
- 416
882
- 417
883
- 418
884
- 419
885
- 420
886
- 421
887
- 422
888
- 423
889
- 424
890
- 425
891
- 426
892
- 427
893
- 428
894
- 429
895
- 430
896
- 431
897
- 432
898
- 433
899
- 434
900
- 435
901
- 436
902
- 437
903
- 438
904
- 439
905
- 440
906
- 441
907
- 442
908
- 443
909
- 444
910
- 445
911
- 446
912
- 447
913
- 448
914
- 449
915
- 450
916
- 451
917
- 452
918
- 453
919
- 454
920
- 455
921
- 456
922
- 457
923
- 458
924
- 459
925
- 460
926
- 461
927
- 462
928
- 463
929
- 464
930
- 465
931
- 466
932
- 467
933
- 468
934
- 469
935
- 470
936
- 471
937
- 472
938
- 473
939
- 474
940
- 475
941
- 476
942
- 477
943
- 478
944
- 479
945
- 480
946
- 481
947
- 482
948
- 483
949
- 484
950
- 485
951
- 486
952
- 487</pre>
953
- </td>
954
- <td>
955
- <pre class="code"><span class="info file"># File 'lib/autoc/string.rb', line 322</span>
956
-
957
- <span class='kw'>def</span> <span class='id identifier rubyid_write_impls'>write_impls</span><span class='lparen'>(</span><span class='id identifier rubyid_stream'>stream</span><span class='comma'>,</span> <span class='id identifier rubyid_define'>define</span><span class='rparen'>)</span>
958
- <span class='kw'>super</span>
959
- <span class='lbracket'>[</span><span class='ivar'>@list</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_obj'>obj</span><span class='op'>|</span>
960
- <span class='id identifier rubyid_obj'>obj</span><span class='period'>.</span><span class='id identifier rubyid_write_intf_decls'>write_intf_decls</span><span class='lparen'>(</span><span class='id identifier rubyid_stream'>stream</span><span class='comma'>,</span> <span class='id identifier rubyid_static'>static</span><span class='comma'>,</span> <span class='id identifier rubyid_inline'>inline</span><span class='rparen'>)</span>
961
- <span class='id identifier rubyid_obj'>obj</span><span class='period'>.</span><span class='id identifier rubyid_write_impls'>write_impls</span><span class='lparen'>(</span><span class='id identifier rubyid_stream'>stream</span><span class='comma'>,</span> <span class='id identifier rubyid_static'>static</span><span class='rparen'>)</span>
962
- <span class='rbrace'>}</span>
963
- <span class='id identifier rubyid_stream'>stream</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>%$</span><span class='tstring_content'>
964
- #include &lt;stdio.h&gt;
965
- #include &lt;stdarg.h&gt;
966
- #undef AUTOC_VSNPRINTF
967
- #if defined(_MSC_VER)
968
- #define AUTOC_VSNPRINTF _vsnprintf
969
- #elif defined(__DMC__) || defined (__LCC__)
970
- #define AUTOC_VSNPRINTF vsnprintf
971
- #elif defined(HAVE_VSNPRINTF) || __STDC_VERSION__ &gt;= 199901L /* Be Autotools-friendly, C99 must have snprintf() */
972
- #define AUTOC_VSNPRINTF vsnprintf
973
- #endif
974
- #ifndef AUTOC_VSNPRINTF
975
- /* #warning Using unsafe vsprintf() function */
976
- #endif
977
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid__join'>_join</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self) {
978
- </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_it'>it</span><span class='embexpr_end'>}</span><span class='tstring_content'> it;
979
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> string;
980
- size_t* size; /* size sizes cache to avoid excessive calls to strlen() */
981
- size_t i, start = 0, total = 0;
982
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
983
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self-&gt;is_list);
984
- if(!</span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_empty'>empty</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;self-&gt;data.list)) {
985
- size = (size_t*)malloc(</span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;self-&gt;data.list)*sizeof(size_t)); </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(size);
986
- </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_itCtor'>itCtor</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;it, &amp;self-&gt;data.list);
987
- for(i = 0; </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_itMove'>itMove</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;it); ++i) {
988
- total += (size[i] = strlen(</span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_itGet'>itGet</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;it)));
989
- }
990
- string = (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_malloc'>malloc</span><span class='embexpr_end'>}</span><span class='tstring_content'>((total + 1)*sizeof(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>)); </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(string);
991
- </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_itCtor'>itCtor</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;it, &amp;self-&gt;data.list);
992
- /* List is a LIFO structure therefore merging should be performed from right to left */
993
- i = 0; start = total;
994
- while(</span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_itMove'>itMove</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;it)) {
995
- start -= size[i];
996
- memcpy(&amp;string[start], </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_itGet'>itGet</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;it), size[i]*sizeof(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>));
997
- ++i;
998
- }
999
- string[total] = &#39;\\0&#39;;
1000
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_free'>free</span><span class='embexpr_end'>}</span><span class='tstring_content'>(size);
1001
- } else {
1002
- string = (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_calloc'>calloc</span><span class='embexpr_end'>}</span><span class='tstring_content'>(1, sizeof(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>)); </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(string);
1003
- }
1004
- </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_dtor'>dtor</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;self-&gt;data.list);
1005
- self-&gt;size = total;
1006
- self-&gt;data.string = string;
1007
- self-&gt;is_list = 0;
1008
- }
1009
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid__split'>_split</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self) {
1010
- </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='embexpr_end'>}</span><span class='tstring_content'> list;
1011
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1012
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(!self-&gt;is_list);
1013
- </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_ctor'>ctor</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;list);
1014
- </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;list, self-&gt;data.string);
1015
- /* self-&gt;size = strlen(self-&gt;data.string); not needed since the size shouldn&#39;t have changed */
1016
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self-&gt;size == strlen(self-&gt;data.string));
1017
- self-&gt;data.list = list;
1018
- self-&gt;is_list = 1;
1019
- }
1020
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ctor'>ctor</span><span class='period'>.</span><span class='id identifier rubyid_definition'>definition</span><span class='embexpr_end'>}</span><span class='tstring_content'> {
1021
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1022
- if(chars) {
1023
- size_t nbytes;
1024
- self-&gt;size = strlen(chars);
1025
- nbytes = (self-&gt;size + 1)*sizeof(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>);
1026
- self-&gt;data.string = (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_malloc'>malloc</span><span class='embexpr_end'>}</span><span class='tstring_content'>(nbytes); </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self-&gt;data.string);
1027
- memcpy(self-&gt;data.string, chars, nbytes);
1028
- self-&gt;is_list = 0;
1029
- } else {
1030
- /* NULL argument is permitted and corresponds to empty string */
1031
- self-&gt;size = 0;
1032
- </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_ctor'>ctor</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;self-&gt;data.list);
1033
- self-&gt;is_list = 1;
1034
- }
1035
- }
1036
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_dtor'>dtor</span><span class='period'>.</span><span class='id identifier rubyid_definition'>definition</span><span class='embexpr_end'>}</span><span class='tstring_content'> {
1037
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1038
- if(self-&gt;is_list) </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_dtor'>dtor</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;self-&gt;data.list); else </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_free'>free</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self-&gt;data.string);
1039
- }
1040
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_copy'>copy</span><span class='period'>.</span><span class='id identifier rubyid_definition'>definition</span><span class='embexpr_end'>}</span><span class='tstring_content'> {
1041
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(src);
1042
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(dst);
1043
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(src != dst);
1044
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ctor'>ctor</span><span class='embexpr_end'>}</span><span class='tstring_content'>(dst, </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_chars'>chars</span><span class='embexpr_end'>}</span><span class='tstring_content'>(src));
1045
- }
1046
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_copyRange'>copyRange</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> dst, </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> src, size_t first, size_t last) {
1047
- size_t size;
1048
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> string;
1049
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(src);
1050
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(src != dst);
1051
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(first &lt;= last);
1052
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_within'>within</span><span class='embexpr_end'>}</span><span class='tstring_content'>(src, first));
1053
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_within'>within</span><span class='embexpr_end'>}</span><span class='tstring_content'>(src, last));
1054
- size = last - first + 1;
1055
- string = (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_malloc'>malloc</span><span class='embexpr_end'>}</span><span class='tstring_content'>((size + 1)*sizeof(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>)); </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(string);
1056
- memcpy(string, &amp;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_chars'>chars</span><span class='embexpr_end'>}</span><span class='tstring_content'>(src)[first], size*sizeof(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>));
1057
- string[size] = &#39;\\0&#39;;
1058
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ctor'>ctor</span><span class='embexpr_end'>}</span><span class='tstring_content'>(dst, string);
1059
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_free'>free</span><span class='embexpr_end'>}</span><span class='tstring_content'>(string);
1060
- }
1061
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_equal'>equal</span><span class='period'>.</span><span class='id identifier rubyid_definition'>definition</span><span class='embexpr_end'>}</span><span class='tstring_content'> {
1062
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(lt);
1063
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(rt);
1064
- return strcmp(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_chars'>chars</span><span class='embexpr_end'>}</span><span class='tstring_content'>(lt), </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_chars'>chars</span><span class='embexpr_end'>}</span><span class='tstring_content'>(rt)) == 0;
1065
- }
1066
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_identify'>identify</span><span class='period'>.</span><span class='id identifier rubyid_definition'>definition</span><span class='embexpr_end'>}</span><span class='tstring_content'> {
1067
- size_t index, result = 0;
1068
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1069
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_join'>join</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1070
- for(index = 0; index &lt; </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_size'>size</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self); ++index) {
1071
- result ^= self-&gt;data.string[index];
1072
- result = AUTOC_RCYCLE(result);
1073
- }
1074
- return result;
1075
- }
1076
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> int </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushFormat'>pushFormat</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self, const char* format, ...) {
1077
- va_list args;
1078
- char* buffer;
1079
- int i, c, buffer_size = </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid__bufferSize'>_bufferSize</span><span class='embexpr_end'>}</span><span class='tstring_content'>;
1080
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1081
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(format);
1082
- do {
1083
- buffer = (char*)</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_malloc'>malloc</span><span class='embexpr_end'>}</span><span class='tstring_content'>(buffer_size*sizeof(char)); </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(buffer);
1084
- va_start(args, format);
1085
- #ifdef AUTOC_VSNPRINTF
1086
- i = AUTOC_VSNPRINTF(buffer, buffer_size, format, args);
1087
- #else
1088
- i = vsprintf(buffer, format, args);
1089
- if(i &gt;= buffer_size) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_abort'>abort</span><span class='embexpr_end'>}</span><span class='tstring_content'>();
1090
- /* Since vsprintf() can not truncate its output this means the buffer overflow and
1091
- there is no guarantee that some useful data is not corrupted so its better
1092
- to crash right here than to let the corruption slip away uncaught */
1093
- #endif
1094
- c = (i &gt; 0 &amp;&amp; !(i &lt; buffer_size));
1095
- if(i &gt; 0 &amp;&amp; !c) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushChars'>pushChars</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, buffer);
1096
- va_end(args);
1097
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_free'>free</span><span class='embexpr_end'>}</span><span class='tstring_content'>(buffer);
1098
- buffer_size *= 2;
1099
- } while(c);
1100
- return i &gt;= 0;
1101
- }
1102
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushChars'>pushChars</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self, const </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> chars) {
1103
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> string;
1104
- size_t size, nbytes;
1105
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1106
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(chars);
1107
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_split'>split</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1108
- size = strlen(chars);
1109
- nbytes = (size + 1)*sizeof(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>);
1110
- string = (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_malloc'>malloc</span><span class='embexpr_end'>}</span><span class='tstring_content'>(nbytes); </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(string);
1111
- memcpy(string, chars, nbytes);
1112
- </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='embexpr_end'>}</span><span class='tstring_content'>(&amp;self-&gt;data.list, string);
1113
- self-&gt;size += size;
1114
- }
1115
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushString'>pushString</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self, </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> from) {
1116
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1117
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(from);
1118
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushChars'>pushChars</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_chars'>chars</span><span class='embexpr_end'>}</span><span class='tstring_content'>(from));
1119
- }
1120
- #undef AUTOC_SNPRINTF
1121
- </span><span class='tstring_end'>$</span></span>
1122
- <span class='kw'>end</span></pre>
1123
- </td>
1124
- </tr>
1125
- </table>
1126
- </div>
1127
-
1128
- <div class="method_details ">
1129
- <h3 class="signature " id="write_intf_decls-instance_method">
1130
-
1131
- #<strong>write_intf_decls</strong>(stream, declare, define) &#x21d2; <tt>Object</tt>
1132
-
1133
-
1134
-
1135
-
1136
-
1137
- </h3><table class="source_code">
1138
- <tr>
1139
- <td>
1140
- <pre class="lines">
1141
-
1142
-
1143
- 242
1144
- 243
1145
- 244
1146
- 245
1147
- 246
1148
- 247
1149
- 248
1150
- 249
1151
- 250
1152
- 251
1153
- 252
1154
- 253
1155
- 254
1156
- 255
1157
- 256
1158
- 257
1159
- 258
1160
- 259
1161
- 260
1162
- 261
1163
- 262
1164
- 263
1165
- 264
1166
- 265
1167
- 266
1168
- 267
1169
- 268
1170
- 269
1171
- 270
1172
- 271
1173
- 272
1174
- 273
1175
- 274
1176
- 275
1177
- 276
1178
- 277
1179
- 278
1180
- 279
1181
- 280
1182
- 281
1183
- 282
1184
- 283
1185
- 284
1186
- 285
1187
- 286
1188
- 287
1189
- 288
1190
- 289
1191
- 290
1192
- 291
1193
- 292
1194
- 293
1195
- 294
1196
- 295
1197
- 296
1198
- 297
1199
- 298
1200
- 299
1201
- 300
1202
- 301
1203
- 302
1204
- 303
1205
- 304
1206
- 305
1207
- 306
1208
- 307
1209
- 308
1210
- 309
1211
- 310
1212
- 311
1213
- 312
1214
- 313
1215
- 314
1216
- 315
1217
- 316
1218
- 317
1219
- 318
1220
- 319
1221
- 320</pre>
1222
- </td>
1223
- <td>
1224
- <pre class="code"><span class="info file"># File 'lib/autoc/string.rb', line 242</span>
1225
-
1226
- <span class='kw'>def</span> <span class='id identifier rubyid_write_intf_decls'>write_intf_decls</span><span class='lparen'>(</span><span class='id identifier rubyid_stream'>stream</span><span class='comma'>,</span> <span class='id identifier rubyid_declare'>declare</span><span class='comma'>,</span> <span class='id identifier rubyid_define'>define</span><span class='rparen'>)</span>
1227
- <span class='kw'>super</span>
1228
- <span class='id identifier rubyid_write_redirectors'>write_redirectors</span><span class='lparen'>(</span><span class='id identifier rubyid_stream'>stream</span><span class='comma'>,</span> <span class='id identifier rubyid_declare'>declare</span><span class='comma'>,</span> <span class='id identifier rubyid_define'>define</span><span class='rparen'>)</span>
1229
- <span class='id identifier rubyid_stream'>stream</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>%$</span><span class='tstring_content'>
1230
- #include &lt;string.h&gt;
1231
- #ifdef AUTOC_BUFFER_SIZE
1232
- #define </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid__bufferSize'>_bufferSize</span><span class='embexpr_end'>}</span><span class='tstring_content'> AUTOC_BUFFER_SIZE
1233
- #else
1234
- #define </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid__bufferSize'>_bufferSize</span><span class='embexpr_end'>}</span><span class='tstring_content'> 4096 /* Stay in sync with the documentation! */
1235
- #endif
1236
- #define </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_join'>join</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self) if(self-&gt;is_list) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid__join'>_join</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1237
- #define </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_split'>split</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self) if(!self-&gt;is_list) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid__split'>_split</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1238
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid__join'>_join</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>);
1239
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid__split'>_split</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>);
1240
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ctor'>ctor</span><span class='period'>.</span><span class='id identifier rubyid_declaration'>declaration</span><span class='embexpr_end'>}</span><span class='tstring_content'>;
1241
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_dtor'>dtor</span><span class='period'>.</span><span class='id identifier rubyid_declaration'>declaration</span><span class='embexpr_end'>}</span><span class='tstring_content'>;
1242
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_copy'>copy</span><span class='period'>.</span><span class='id identifier rubyid_declaration'>declaration</span><span class='embexpr_end'>}</span><span class='tstring_content'>;
1243
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_copyRange'>copyRange</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>, </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>, size_t, size_t);
1244
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_equal'>equal</span><span class='period'>.</span><span class='id identifier rubyid_declaration'>declaration</span><span class='embexpr_end'>}</span><span class='tstring_content'>;
1245
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_identify'>identify</span><span class='period'>.</span><span class='id identifier rubyid_declaration'>declaration</span><span class='embexpr_end'>}</span><span class='tstring_content'>;
1246
- #define </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_empty'>empty</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self) (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_size'>size</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self) == 0)
1247
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> size_t </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_size'>size</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self) {
1248
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1249
- /* </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_join'>join</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self); assuming the changes to the contents are reflected in the size */
1250
- #ifndef NDEBUG
1251
- /* Type invariants which must hold true */
1252
- if(!self-&gt;is_list) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self-&gt;size == strlen(self-&gt;data.string));
1253
- /* TODO self-&gt;is_list case */
1254
- #endif
1255
- return self-&gt;size;
1256
- }
1257
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> int </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_within'>within</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self, size_t index) {
1258
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1259
- /* Omitting excessive call to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_join'>join</span><span class='embexpr_end'>}</span><span class='tstring_content'>() */
1260
- return index &lt; </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_size'>size</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1261
- }
1262
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_get'>get</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self, size_t index) {
1263
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1264
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_within'>within</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, index));
1265
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_join'>join</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1266
- return self-&gt;data.string[index];
1267
- }
1268
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_set'>set</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self, size_t index, </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'> value) {
1269
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1270
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_within'>within</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, index));
1271
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_join'>join</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1272
- self-&gt;data.string[index] = value;
1273
- }
1274
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> const </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_chars'>chars</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self) {
1275
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1276
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_join'>join</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1277
- return self-&gt;data.string;
1278
- }
1279
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> int </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushFormat'>pushFormat</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>, const char*, ...);
1280
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushChars'>pushChars</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>, const </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>);
1281
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_declare'>declare</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushString'>pushString</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>, </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'>);
1282
- #define </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushChar'>pushChar</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, c) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushFormat'>pushFormat</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, &quot;%c&quot;, (char)(c))
1283
- #define </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushInt'>pushInt</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, i) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushFormat'>pushFormat</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, &quot;%d&quot;, (int)(i))
1284
- #define </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushFloat'>pushFloat</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, f) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushFormat'>pushFormat</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, &quot;%e&quot;, (double)(f))
1285
- #define </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushPtr'>pushPtr</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, p) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_pushFormat'>pushFormat</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, &quot;%p&quot;, (void*)(p))
1286
- #define </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_itCtor'>itCtor</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, type) </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_itCtorEx'>itCtorEx</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self, type, 1)
1287
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> void </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_itCtorEx'>itCtorEx</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_it_ref'>it_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self, </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> string, int forward) {
1288
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1289
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(string);
1290
- self-&gt;string = string;
1291
- self-&gt;forward = forward;
1292
- self-&gt;index = forward ? -1 : </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_size'>size</span><span class='embexpr_end'>}</span><span class='tstring_content'>(string);
1293
- }
1294
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> int </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_itMove'>itMove</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_it_ref'>it_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self) {
1295
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1296
- if(self-&gt;forward) ++self-&gt;index; else --self-&gt;index;
1297
- return </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_within'>within</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self-&gt;string, self-&gt;index);
1298
- }
1299
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_define'>define</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_itGet'>itGet</span><span class='embexpr_end'>}</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_it_ref'>it_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> self) {
1300
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_assert'>assert</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self);
1301
- return </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_get'>get</span><span class='embexpr_end'>}</span><span class='tstring_content'>(self-&gt;string, self-&gt;index);
1302
- }
1303
- </span><span class='tstring_end'>$</span></span>
1304
- <span class='kw'>end</span></pre>
1305
- </td>
1306
- </tr>
1307
- </table>
1308
- </div>
1309
-
1310
- <div class="method_details ">
1311
- <h3 class="signature " id="write_intf_types-instance_method">
1312
-
1313
- #<strong>write_intf_types</strong>(stream) &#x21d2; <tt>Object</tt>
1314
-
1315
-
1316
-
1317
-
1318
-
1319
- </h3><table class="source_code">
1320
- <tr>
1321
- <td>
1322
- <pre class="lines">
1323
-
1324
-
1325
- 217
1326
- 218
1327
- 219
1328
- 220
1329
- 221
1330
- 222
1331
- 223
1332
- 224
1333
- 225
1334
- 226
1335
- 227
1336
- 228
1337
- 229
1338
- 230
1339
- 231
1340
- 232
1341
- 233
1342
- 234
1343
- 235
1344
- 236
1345
- 237
1346
- 238
1347
- 239
1348
- 240</pre>
1349
- </td>
1350
- <td>
1351
- <pre class="code"><span class="info file"># File 'lib/autoc/string.rb', line 217</span>
1352
-
1353
- <span class='kw'>def</span> <span class='id identifier rubyid_write_intf_types'>write_intf_types</span><span class='lparen'>(</span><span class='id identifier rubyid_stream'>stream</span><span class='rparen'>)</span>
1354
- <span class='id identifier rubyid_stream'>stream</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>%$</span><span class='tstring_content'>
1355
- /***
1356
- **** </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type'>type</span><span class='embexpr_end'>}</span><span class='tstring_content'>&lt;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type'>char_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>&gt;
1357
- ***/
1358
- </span><span class='tstring_end'>$</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_public?'>public?</span>
1359
- <span class='lbracket'>[</span><span class='ivar'>@list</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_obj'>obj</span><span class='op'>|</span> <span class='id identifier rubyid_obj'>obj</span><span class='period'>.</span><span class='id identifier rubyid_write_intf_types'>write_intf_types</span><span class='lparen'>(</span><span class='id identifier rubyid_stream'>stream</span><span class='rparen'>)</span><span class='rbrace'>}</span> <span class='comment'># TODO : this should be handled by the entity dependencies system
1360
- </span> <span class='id identifier rubyid_stream'>stream</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>%$</span><span class='tstring_content'>
1361
- typedef struct </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type'>type</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type'>type</span><span class='embexpr_end'>}</span><span class='tstring_content'>;
1362
- typedef struct </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_it'>it</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_it'>it</span><span class='embexpr_end'>}</span><span class='tstring_content'>;
1363
- struct </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type'>type</span><span class='embexpr_end'>}</span><span class='tstring_content'> {
1364
- size_t size;
1365
- union data {
1366
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_char_type_ref'>char_type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> string;
1367
- </span><span class='embexpr_beg'>#{</span><span class='ivar'>@list</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='embexpr_end'>}</span><span class='tstring_content'> list;
1368
- } data;
1369
- int is_list;
1370
- };
1371
- struct </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_it'>it</span><span class='embexpr_end'>}</span><span class='tstring_content'> {
1372
- </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type_ref'>type_ref</span><span class='embexpr_end'>}</span><span class='tstring_content'> string;
1373
- int index, forward;
1374
- };
1375
- </span><span class='tstring_end'>$</span></span>
1376
- <span class='kw'>end</span></pre>
1377
- </td>
1378
- </tr>
1379
- </table>
1380
- </div>
1381
-
1382
- </div>
1383
-
1384
- </div>
1385
-
1386
- <div id="footer">
1387
- Generated on Wed Oct 12 12:27:11 2016 by
1388
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1389
- 0.9.5 (ruby-2.3.1).
1390
- </div>
1391
-
1392
- </div>
1393
- </body>
1394
- </html>