autoc 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a598879205b51d5bf574b70b370ef805efe3681e0ea4ad8b6347e45296cc304b
4
- data.tar.gz: d5c3290746c096a666627ff544903afe2b1f31e61b7706cf5a5e531c410191ea
3
+ metadata.gz: 63b8d589357ec8f39556052ab6f23730e6a884620fe20dc32cb1d37707af9500
4
+ data.tar.gz: ccf9cc7c3183b92851edcac67e4d79f8ab42b0e927ca561a2e3038a9d1d74f74
5
5
  SHA512:
6
- metadata.gz: cb81338f80898d88975a0bc204b5245c6fe4e0deb931c91ff007bff5dca026f4f99fe5702d56033fa0387786cb20b03445dbb662c07ebcf7f8ba81f993848520
7
- data.tar.gz: da094ff14cf393a2c7178fb45083d18b3513d686e29a693895dd4cea51bbcf406776fe26de0d550605102f7f5976170a3715fedc1d9520e1f4c1944c034b56d1
6
+ metadata.gz: fb3a6280555ff59a3249d6b1081f69df54106249b988bf8c81d46ca4537e70d55e7634f5f755db83f893bfa03cc4dfb85f12cc60de91ae4808cef7a08733cd83
7
+ data.tar.gz: b4939c6e87831c8ee72efa5dbd0489105b638e16b92fdba2a8b1eb5d8e5c5ba13cfeef8edc4b3ef4640c910b82fe153d28afaf2756e8cb78a461a09caef66d01
data/CHANGES.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 2.0.1
2
+
3
+ - Introduce switch for incremental module generation mode.
4
+
5
+ - Fix Record setter function type mismatch bug.
6
+
7
+ - Fix project structure conformance issue in CMake project scaffolder.
8
+
1
9
  # 2.0.0
2
10
 
3
- A complete package overhaul.
11
+ - A complete package overhaul.
@@ -148,6 +148,8 @@ module AutoC
148
148
 
149
149
  # Create a new type-bound function (aka method)
150
150
  def method(result, name, parameters, inline: false, visibility: nil, constraint: true, instance: name, **kws)
151
+ name = name.to_sym
152
+ instance = instance.to_sym
151
153
  method = method_class.new(
152
154
  self,
153
155
  result,
data/lib/autoc/module.rb CHANGED
@@ -51,7 +51,12 @@ module AutoC
51
51
 
52
52
  attr_accessor :source_threshold
53
53
 
54
- def initialize(name) = @name = name
54
+ def stateful? = @stateful == true
55
+
56
+ def initialize(name, stateful: true)
57
+ @name = name
58
+ @stateful = stateful
59
+ end
55
60
 
56
61
  def header = @header ||= Header.new(self)
57
62
 
@@ -63,7 +68,7 @@ module AutoC
63
68
  distribute_entities
64
69
  header.render
65
70
  sources.each(&:render)
66
- State.new(self).collect.write
71
+ State.new(self).collect.write if stateful?
67
72
  self
68
73
  end
69
74
 
@@ -86,8 +91,8 @@ module AutoC
86
91
  end
87
92
  end
88
93
 
89
- def self.render(name, &code)
90
- m = self.new(name)
94
+ def self.render(name, **, &code)
95
+ m = self.new(name, **)
91
96
  yield(m) if block_given?
92
97
  m.render
93
98
  end
@@ -114,7 +119,7 @@ module AutoC
114
119
  end
115
120
 
116
121
  def read
117
- if File.exist?(file_name)
122
+ if self.module.stateful? && File.exist?(file_name)
118
123
  # It's OK not to have this file but if it exists it must have proper contents
119
124
  io = File.open(file_name, 'rt', chomp: true)
120
125
  begin
data/lib/autoc/record.rb CHANGED
@@ -217,17 +217,17 @@ module AutoC
217
217
  @since 2.0
218
218
  }
219
219
  end
220
- method(:void, "set_#{name}", { target: rvalue, name.to_sym => type.const_rvalue } ).configure do
220
+ method(:void, "set_#{name}", { target: rvalue, value: type.const_rvalue } ).configure do
221
221
  code %{
222
222
  assert(target);
223
223
  #{type.destroy.("target->#{name}") if type.destructible?};
224
- #{type.copy.("target->#{name}", name)};
224
+ #{type.copy.("target->#{name}", value)};
225
225
  }
226
226
  header %{
227
227
  @brief Set value of field #{name}
228
228
 
229
229
  @param[in] target record to modify
230
- @param[in] #{name} value to initalize field #{name} with
230
+ @param[in] value value to initalize field #{name} with
231
231
 
232
232
  This function sets the field #{name} to contain a copy of specified value.
233
233
 
@@ -239,7 +239,7 @@ module AutoC
239
239
  end
240
240
  end
241
241
  end
242
- end
242
+ end
243
243
 
244
244
  end # Record
245
245
 
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+
4
+ require 'autoc/record'
5
+
6
+
7
+ GlassRecord = AutoC::Record.new(:GlassRecord, { i: :int }, profile: :glassbox)
8
+
9
+ #p GlassRecord.equal
@@ -19,10 +19,10 @@ end
19
19
  ###
20
20
  def cmakelists_txt(project)
21
21
  <<END
22
- project(#{project})
23
-
24
22
  cmake_minimum_required(VERSION 3.15)
25
23
 
24
+ project(#{project})
25
+
26
26
  set(AUTOC_MODULE_NAME _${PROJECT_NAME})
27
27
  set(AUTOC_MODULE_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.rb)
28
28
 
@@ -0,0 +1,21 @@
1
+ require 'autoc/record'
2
+
3
+ require_relative 'glass_record'
4
+
5
+ t = type_test(AutoC::Record, :RecordRecord, { r: GlassRecord }) do
6
+
7
+ ###
8
+
9
+ setup %{
10
+ #{self} t;
11
+ #{default_create.(:t)};
12
+ }
13
+
14
+ cleanup %{
15
+ #{destroy.(:t) if destructible?};
16
+ }
17
+
18
+ test :create_empty, %{
19
+ }
20
+
21
+ end
@@ -170,7 +170,7 @@ Dir[File.join(File.dirname(__FILE__), 'test_*.rb')].each { |t| require t }
170
170
 
171
171
  require 'autoc/cmake'
172
172
 
173
- x = AutoC::Module.render(:tests) do |m|
173
+ x = AutoC::Module.render(:tests, stateful: false) do |m|
174
174
  m << $suite
175
175
  m.source_threshold = 100*1024 # Split module code into a set of TUs with ~100 Kb in size
176
176
  $tests.each { |t| $suite.dependencies << t }
data/lib/autoc.rb CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  module AutoC
5
5
 
6
- VERSION = '2.0.0'
6
+ VERSION = '2.0.1'
7
7
 
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg A. Khlybov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-14 00:00:00.000000000 Z
11
+ date: 2023-03-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
14
  The package contains a functionality related to the C source code generation,
@@ -45,6 +45,7 @@ files:
45
45
  - lib/autoc/scaffold.rb
46
46
  - lib/autoc/scaffold/docs.rb
47
47
  - lib/autoc/scaffold/generic_value.rb
48
+ - lib/autoc/scaffold/glass_record.rb
48
49
  - lib/autoc/scaffold/project.rb
49
50
  - lib/autoc/scaffold/test_cstring.rb
50
51
  - lib/autoc/scaffold/test_cstring_hash_set.rb
@@ -52,6 +53,7 @@ files:
52
53
  - lib/autoc/scaffold/test_int_hash_set.rb
53
54
  - lib/autoc/scaffold/test_int_list.rb
54
55
  - lib/autoc/scaffold/test_int_vector.rb
56
+ - lib/autoc/scaffold/test_record_record.rb
55
57
  - lib/autoc/scaffold/test_v2v_hash_map.rb
56
58
  - lib/autoc/scaffold/test_value_hash_set.rb
57
59
  - lib/autoc/scaffold/test_value_vector.rb