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
@@ -0,0 +1,290 @@
1
+ # frozen_string_literal: true
2
+
3
+
4
+ require 'autoc/ranges'
5
+ require 'autoc/sequential'
6
+ require 'autoc/association'
7
+
8
+
9
+ module AutoC
10
+
11
+
12
+ using STD::Coercions
13
+
14
+
15
+ class Vector < Association
16
+
17
+ include STD
18
+
19
+ include Sequential
20
+
21
+ def _range_class = Range
22
+
23
+ def range = @range ||= _range_class.new(self, visibility: visibility, parallel: @parallel)
24
+
25
+ def initialize(type, element, parallel: nil, **kws)
26
+ super(type, element, :size_t, **kws)
27
+ dependencies << STRING_H
28
+ @parallel = parallel
29
+ end
30
+
31
+ def render_interface(stream)
32
+ if public?
33
+ stream << %{
34
+ /**
35
+ #{defgroup}
36
+
37
+ @brief Resizable vector of elements of type #{element}
38
+
39
+ #{type} is a container that encapsulates dynamic size array of values of type #{element}.
40
+
41
+ It is a contiguous direct access collection where elements can be directly referenced by an integer index belonging to the [0, @ref #{size}) range.
42
+
43
+ For iteration over the vector elements refer to @ref #{range}.
44
+
45
+ @see C++ [std::vector<T>](https://en.cppreference.com/w/cpp/container/vector)
46
+
47
+ @since 2.0
48
+ */
49
+ }
50
+ stream << %{
51
+ /**
52
+ #{ingroup}
53
+
54
+ @brief Opaque structure holding state of the vector
55
+
56
+ @since 2.0
57
+ */
58
+ }
59
+ else
60
+ stream << PRIVATE
61
+ end
62
+ stream << %{
63
+ typedef struct {
64
+ #{element.lvalue} elements; /**< @private */
65
+ size_t size; /**< @private */
66
+ } #{signature};
67
+ }
68
+
69
+ end
70
+
71
+ def render_implementation(stream)
72
+ if element.orderable?
73
+ stream << %{
74
+ static int
75
+ #ifdef __POCC__
76
+ __cdecl
77
+ #endif
78
+ #{ascend}(const void* left, const void* right) {
79
+ return #{element.compare.("(*(#{element.lvalue})left)", "(*(#{element.lvalue})right)")};
80
+ }
81
+ static int
82
+ #ifdef __POCC__
83
+ __cdecl
84
+ #endif
85
+ #{descend}(const void* left, const void* right) {
86
+ return -#{ascend}(left, right);
87
+ }
88
+ #{sort.prototype} {
89
+ qsort(#{storage(:target)}, #{size.('*target')}, sizeof(#{element}), direction > 0 ? #{ascend} : #{descend});
90
+ }
91
+ }
92
+ end
93
+ super
94
+ end
95
+
96
+ def storage(target) = "#{target}->elements" # Return C pointer to contiguous storage
97
+
98
+ def type_tag = "#{signature}<#{element}>"
99
+
100
+ private
101
+
102
+ def configure
103
+ super
104
+ method(:void, :_allocate, { target: lvalue, size: :size_t.const_rvalue }, visibility: :internal).configure do
105
+ code %{
106
+ if((target->size = size) > 0) {
107
+ #{storage(:target)} = #{memory.allocate(element, size)}; assert(#{storage(:target)});
108
+ } else {
109
+ #{storage(:target)} = NULL;
110
+ }
111
+ }
112
+ end
113
+ method(:void, :create_size, { target: lvalue, size: :size_t.const_rvalue }, instance: :custom_create, constraint:-> { custom_constructible? && element.default_constructible? }).configure do
114
+ code %{
115
+ size_t index;
116
+ assert(target);
117
+ #{_allocate.(target, size)};
118
+ for(index = 0; index < size; ++index) {
119
+ #{element.default_create.("#{storage(:target)}[index]")};
120
+ }
121
+ }
122
+ header %{
123
+ @brief Create a new vector of specified size
124
+
125
+ @param[out] target vector to be initialized
126
+ @param[in] size size of new vector
127
+
128
+ Each new vector's element is initialized with the respective default constructor.
129
+
130
+ This function requires the element type to be *default constructible* (i.e. to have a well-defined parameterless constructor).
131
+
132
+ @note Previous contents of `*target` is overwritten.
133
+
134
+ @since 2.0
135
+ }
136
+ end
137
+ method(:void, :create_set, { target: lvalue, size: :size_t.const_rvalue, initializer: element.const_rvalue }, constraint:-> { element.copyable? }).configure do
138
+ code %{
139
+ size_t index;
140
+ assert(target);
141
+ #{_allocate.(target, size)};
142
+ for(index = 0; index < size; ++index) {
143
+ #{element.copy.("#{storage(:target)}[index]", initializer)};
144
+ }
145
+ }
146
+ header %{
147
+ @brief Create and initialize a new vector of specified size
148
+
149
+ @param[out] target vector to be initialized
150
+ @param[in] size size of new vector
151
+ @param[in] initializer value to initialize the vector with
152
+
153
+ Each new vector's element is set to a *copy* of the specified value.
154
+
155
+ This function requires the element type to be *copyable* (i.e. to have a well-defined copy operation).
156
+
157
+ @note Previous contents of `*target` is overwritten.
158
+
159
+ @since 2.0
160
+ }
161
+ end
162
+ destroy_elements = "for(index = common_size; index < old_size; ++index) {#{element.destroy.('old_elements[index]')};}" if element.destructible?
163
+ method(:void, :resize, { target: lvalue, new_size: :size_t.const_rvalue }, constraint:-> { element.default_constructible? }).configure do
164
+ code %{
165
+ size_t old_size;
166
+ assert(target);
167
+ if((old_size = #{size.(target)}) != new_size) {
168
+ size_t common_size, index;
169
+ #{element.lvalue} new_elements;
170
+ #{element.lvalue} old_elements;
171
+ old_elements = #{storage(:target)};
172
+ #{_allocate.(target, new_size)};
173
+ new_elements = #{storage(:target)};
174
+ common_size = old_size < new_size ? old_size : new_size; /* min(old_size, new_size) */
175
+ if(common_size > 0) {
176
+ memcpy(new_elements, old_elements, common_size*sizeof(#{element}));
177
+ }
178
+ for(index = common_size; index < new_size; ++index) {
179
+ #{element.default_create.('new_elements[index]')};
180
+ }
181
+ #{destroy_elements}
182
+ #{memory.free(:old_elements)};
183
+ }
184
+ }
185
+ header %{
186
+ @brief Resize vector
187
+
188
+ @param[out] target vector to be resized
189
+ @param[in] new_size new size of new vector
190
+
191
+ This function sets new size for existing vector, expanding or shrinking it - whatever is applicable.
192
+
193
+ When expanding, new elements are default initialized.
194
+ When shrinking, excessive elements are destroyed with the respective destructor.
195
+
196
+ @since 2.0
197
+ }
198
+ end
199
+ default_create.configure do
200
+ inline_code %{
201
+ assert(target);
202
+ #{storage(:target)} = NULL;
203
+ target->size = 0;
204
+ }
205
+ end
206
+ destroy_elements = "for(index = 0; index < #{size}(target); ++index) {#{element.destroy.("#{storage(:target)}[index]")};}" if element.destructible?
207
+ destroy.configure do
208
+ code %{
209
+ #{'size_t index;' if element.destructible?}
210
+ assert(target);
211
+ #{destroy_elements}
212
+ #{memory.free(storage(:target))};
213
+ }
214
+ end
215
+ copy.configure do
216
+ code %{
217
+ size_t index, size;
218
+ assert(target);
219
+ assert(source);
220
+ size = #{size.(source)};
221
+ #{_allocate.(target, :size)};
222
+ for(index = 0; index < size; ++index) {
223
+ #{element.copy.("#{storage(:target)}[index]", "#{storage(:source)}[index]")};
224
+ }
225
+ }
226
+ end
227
+ size.configure do
228
+ inline_code %{
229
+ assert(target);
230
+ return target->size;
231
+ }
232
+ end
233
+ check.configure do
234
+ dependencies << size
235
+ inline_code %{
236
+ assert(target);
237
+ return index < #{size.(target)};
238
+ }
239
+ end
240
+ empty.configure do
241
+ dependencies << size
242
+ inline_code %{
243
+ assert(target);
244
+ return !#{size.(target)};
245
+ }
246
+ end
247
+ view.configure do
248
+ dependencies << check
249
+ inline_code %{
250
+ assert(target);
251
+ assert(#{check.(target, index)});
252
+ return &#{storage(:target)}[index];
253
+ }
254
+ end
255
+ set.configure do
256
+ dependencies << check << view
257
+ inline_code %{
258
+ #{element.lvalue} e;
259
+ assert(target);
260
+ assert(#{check.(target, index)});
261
+ e = (#{element.lvalue})#{view.(target, index)};
262
+ #{element.destroy.('*e') if element.destructible?};
263
+ #{element.copy.('*e', value)};
264
+ }
265
+ end
266
+ method(:void, :sort, { target: rvalue, direction: :int.const_rvalue }, constraint:-> { orderable? }, abstract: true).configure do
267
+ header %{
268
+ @brief Sort vector's values
269
+
270
+ @param[in] target vector to sort
271
+ @param[in] direction sorting direction
272
+
273
+ This function performs in-place sorting of the contained elements.
274
+ If `direction` is greater than zero, the elements are placed in ascending (lowest to highset) order,
275
+ otherwise the elements are placed in descending (highest to lowest) order.
276
+
277
+ The sorting process does not reallocate memory nor does it call elements' copy constructors.
278
+
279
+ @since 2.0
280
+ }
281
+ end
282
+ end
283
+
284
+ end # Vector
285
+
286
+
287
+ Vector::Range = ContiguousRange # Range
288
+
289
+
290
+ end
data/lib/autoc.rb CHANGED
@@ -1,39 +1,8 @@
1
- =begin rdoc
1
+ # frozen_string_literal: true
2
2
 
3
- *AutoC* is a host of Ruby modules related to automatic C source code generation.
4
3
 
5
- . {AutoC::Code} generic C multi-source module generator.
6
- . {AutoC::Collection} strongly-typed data structure generators similar
7
- to the C++ STL container classes.
8
- . {AutoC::String} wrapper around the standard C string with string building capability.
9
-
10
- == Versioning scheme
11
-
12
- AutoC adheres to simple major.minor versioning scheme.
13
-
14
- Change in major number states incompatible changes in the code
15
- while change in minor number states (rather) small incremental changes that
16
- should not normally break things.
17
-
18
- That said, release 1.0 is the _first_ release of version 1 which is considered beta, not stable.
19
- _Note that it is not necessary stable or feature complete._
20
- Releases 1.1+ will present incremental improvements, bugfixes, documentation updates etc. to version 1.
21
- Should the major incompatible changes be made, the new release 2.0 will be introduced and so forth.
22
-
23
- =end
24
4
  module AutoC
25
- VERSION = "1.4"
26
- end # AutoC
27
-
28
5
 
29
- require "autoc/code"
30
- require "autoc/type"
31
- require "autoc/string"
32
- require "autoc/collection"
33
- require "autoc/collection/list"
34
- require "autoc/collection/queue"
35
- require "autoc/collection/vector"
36
- require "autoc/collection/hash_set"
37
- require "autoc/collection/hash_map"
38
- require "autoc/collection/tree_set"
39
- require "autoc/collection/tree_map"
6
+ VERSION = '2.0.0'
7
+
8
+ end
metadata CHANGED
@@ -1,101 +1,72 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoc
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.4'
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg A. Khlybov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-12 00:00:00.000000000 Z
11
+ date: 2023-03-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
- AutoC is a collection of Ruby modules related to automatic C source code generation:
15
- 1) Multi-file C module generator.
16
- 2) Generators for strongly-typed generic collections (Vector, List, Set etc.).
14
+ The package contains a functionality related to the C source code generation,
15
+ including generation of the strongly-typed data structures (vectors, lists, maps etc.)
16
+ in a manner provided by the C++'s STL library.
17
17
  email: fougas@mail.ru
18
18
  executables: []
19
19
  extensions: []
20
- extra_rdoc_files: []
20
+ extra_rdoc_files:
21
+ - README.md
22
+ - CHANGES.md
21
23
  files:
22
- - ".yardopts"
23
- - CHANGES
24
- - README
25
- - doc/AutoC.html
26
- - doc/AutoC/Code.html
27
- - doc/AutoC/Collection.html
28
- - doc/AutoC/HashMap.html
29
- - doc/AutoC/HashSet.html
30
- - doc/AutoC/Iterators.html
31
- - doc/AutoC/Iterators/Bidirectional.html
32
- - doc/AutoC/Iterators/Unidirectional.html
33
- - doc/AutoC/List.html
34
- - doc/AutoC/Maps.html
35
- - doc/AutoC/Module.html
36
- - doc/AutoC/Module/File.html
37
- - doc/AutoC/Module/Header.html
38
- - doc/AutoC/Module/Source.html
39
- - doc/AutoC/Priority.html
40
- - doc/AutoC/Queue.html
41
- - doc/AutoC/Reference.html
42
- - doc/AutoC/Sets.html
43
- - doc/AutoC/String.html
44
- - doc/AutoC/TreeMap.html
45
- - doc/AutoC/TreeSet.html
46
- - doc/AutoC/Type.html
47
- - doc/AutoC/UserDefinedType.html
48
- - doc/AutoC/Vector.html
49
- - doc/_index.html
50
- - doc/class_list.html
51
- - doc/css/common.css
52
- - doc/css/full_list.css
53
- - doc/css/style.css
54
- - doc/file.CHANGES.html
55
- - doc/file.README.html
56
- - doc/file_list.html
57
- - doc/frames.html
58
- - doc/index.html
59
- - doc/js/app.js
60
- - doc/js/full_list.js
61
- - doc/js/jquery.js
62
- - doc/method_list.html
63
- - doc/top-level-namespace.html
24
+ - CHANGES.md
25
+ - README.md
26
+ - cmake/AutoC.cmake
64
27
  - lib/autoc.rb
65
- - lib/autoc/code.rb
28
+ - lib/autoc/allocators.rb
29
+ - lib/autoc/association.rb
30
+ - lib/autoc/box.rb
31
+ - lib/autoc/cmake.rb
66
32
  - lib/autoc/collection.rb
67
- - lib/autoc/collection/hash_map.rb
68
- - lib/autoc/collection/hash_set.rb
69
- - lib/autoc/collection/iterator.rb
70
- - lib/autoc/collection/list.rb
71
- - lib/autoc/collection/map.rb
72
- - lib/autoc/collection/queue.rb
73
- - lib/autoc/collection/set.rb
74
- - lib/autoc/collection/tree_map.rb
75
- - lib/autoc/collection/tree_set.rb
76
- - lib/autoc/collection/vector.rb
77
- - lib/autoc/string.rb
33
+ - lib/autoc/composite.rb
34
+ - lib/autoc/cstring.rb
35
+ - lib/autoc/function.rb
36
+ - lib/autoc/hash_map.rb
37
+ - lib/autoc/hash_set.rb
38
+ - lib/autoc/hashers.rb
39
+ - lib/autoc/list.rb
40
+ - lib/autoc/module.rb
41
+ - lib/autoc/openmp.rb
42
+ - lib/autoc/primitive.rb
43
+ - lib/autoc/ranges.rb
44
+ - lib/autoc/record.rb
45
+ - lib/autoc/scaffold.rb
46
+ - lib/autoc/scaffold/docs.rb
47
+ - lib/autoc/scaffold/generic_value.rb
48
+ - lib/autoc/scaffold/project.rb
49
+ - lib/autoc/scaffold/test_cstring.rb
50
+ - lib/autoc/scaffold/test_cstring_hash_set.rb
51
+ - lib/autoc/scaffold/test_int_box.rb
52
+ - lib/autoc/scaffold/test_int_hash_set.rb
53
+ - lib/autoc/scaffold/test_int_list.rb
54
+ - lib/autoc/scaffold/test_int_vector.rb
55
+ - lib/autoc/scaffold/test_v2v_hash_map.rb
56
+ - lib/autoc/scaffold/test_value_hash_set.rb
57
+ - lib/autoc/scaffold/test_value_vector.rb
58
+ - lib/autoc/scaffold/tests.rb
59
+ - lib/autoc/sequential.rb
60
+ - lib/autoc/set.rb
61
+ - lib/autoc/std.rb
78
62
  - lib/autoc/type.rb
79
- - test/test.rb
80
- - test/test_auto.c
81
- - test/test_auto.h
82
- - test/test_char_string.rb
83
- - test/test_int_list.rb
84
- - test/test_int_tree_set.rb
85
- - test/test_int_vector.rb
86
- - test/test_value_hash_map.rb
87
- - test/test_value_hash_set.rb
88
- - test/test_value_list.rb
89
- - test/test_value_queue.rb
90
- - test/test_value_tree_map.rb
91
- - test/test_value_tree_set.rb
92
- - test/test_value_vector.rb
93
- - test/value.rb
94
- homepage: http://autoc.sourceforge.net/
63
+ - lib/autoc/vector.rb
64
+ homepage: https://github.com/okhlybov/autoc
95
65
  licenses:
96
- - BSD-3-Clause
97
- metadata: {}
98
- post_install_message:
66
+ - BSD-2-Clause
67
+ metadata:
68
+ source_code_uri: https://github.com/okhlybov/autoc
69
+ post_install_message:
99
70
  rdoc_options: []
100
71
  require_paths:
101
72
  - lib
@@ -103,16 +74,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
74
  requirements:
104
75
  - - ">="
105
76
  - !ruby/object:Gem::Version
106
- version: '1.8'
77
+ version: 3.2.0
107
78
  required_rubygems_version: !ruby/object:Gem::Requirement
108
79
  requirements:
109
80
  - - ">="
110
81
  - !ruby/object:Gem::Version
111
82
  version: '0'
112
83
  requirements: []
113
- rubyforge_project:
114
- rubygems_version: 2.5.1
115
- signing_key:
84
+ rubygems_version: 3.4.6
85
+ signing_key:
116
86
  specification_version: 4
117
- summary: A host of Ruby modules related to automatic C source code generation
87
+ summary: C source code generation package
118
88
  test_files: []
data/.yardopts DELETED
@@ -1,4 +0,0 @@
1
- --markup asciidoc
2
- --no-private
3
- -
4
- CHANGES
data/CHANGES DELETED
@@ -1,23 +0,0 @@
1
- == 1.4
2
-
3
- Introduced AutoC::TreeSet and AutoC::TreeMap binary tree based containers.
4
-
5
- == 1.3
6
-
7
- Introduced AutoC::String string type.
8
-
9
- == 1.2
10
-
11
- Introduced counted reference type AutoC::Reference.
12
-
13
- Introduced type capabilities/restrictions and optional operations for collections.
14
-
15
- Made AutoC::Vector#sort() an optional operation.
16
-
17
- == 1.1
18
-
19
- Fixed online documentation generation issues.
20
-
21
- == 1.0
22
-
23
- Initial release of version 1.
data/README DELETED
@@ -1,28 +0,0 @@
1
- == AutoC - a collection of Ruby modules related to automatic C source code generation.
2
-
3
- AutoC is a free software distributed under the terms of modified BSD license.
4
-
5
- Project home page is http://autoc.sourceforge.net/
6
-
7
- AutoC is available via the RubyGems infrastructure; the easiest way to obtain it is:
8
- ----
9
- > gem install autoc
10
- ----
11
-
12
- Offline user documentation in HTML form is in doc/ directory.
13
-
14
- For more information refer to {::AutoC}.
15
-
16
- Ad-hoc test build instructions:
17
- ----
18
- > cd test
19
- > ruby -I. -I../lib test.rb
20
- > cc test_auto.c
21
- > ./a.out
22
- ----
23
-
24
- For (in)complete list of changes refer to {file:CHANGES}.
25
-
26
- That's all for now, folks! Stay tuned.
27
-
28
- Oleg A. Khlybov <fougas@mail.ru>