rggen-core 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/exe/rggen +0 -0
- data/lib/rggen/core.rb +4 -3
- data/lib/rggen/core/base/component.rb +16 -7
- data/lib/rggen/core/base/component_factory.rb +12 -9
- data/lib/rggen/core/base/component_layer_extension.rb +194 -0
- data/lib/rggen/core/base/feature_layer_extension.rb +158 -0
- data/lib/rggen/core/builder/builder.rb +25 -25
- data/lib/rggen/core/builder/component_entry.rb +3 -2
- data/lib/rggen/core/builder/component_registry.rb +22 -17
- data/lib/rggen/core/builder/{category.rb → layer.rb} +27 -26
- data/lib/rggen/core/builder/plugins.rb +5 -3
- data/lib/rggen/core/configuration/component.rb +5 -0
- data/lib/rggen/core/configuration/component_factory.rb +1 -1
- data/lib/rggen/core/configuration/input_data.rb +15 -0
- data/lib/rggen/core/input_base/component_factory.rb +37 -6
- data/lib/rggen/core/input_base/feature.rb +3 -3
- data/lib/rggen/core/input_base/input_data.rb +13 -10
- data/lib/rggen/core/input_base/loader.rb +2 -3
- data/lib/rggen/core/input_base/yaml_loader.rb +5 -4
- data/lib/rggen/core/output_base/code_generator.rb +10 -23
- data/lib/rggen/core/output_base/component.rb +42 -39
- data/lib/rggen/core/output_base/component_factory.rb +4 -0
- data/lib/rggen/core/output_base/feature.rb +6 -7
- data/lib/rggen/core/register_map.rb +3 -3
- data/lib/rggen/core/register_map/component.rb +4 -3
- data/lib/rggen/core/register_map/component_factory.rb +18 -1
- data/lib/rggen/core/register_map/feature.rb +2 -2
- data/lib/rggen/core/register_map/hash_loader.rb +16 -23
- data/lib/rggen/core/register_map/input_data.rb +30 -16
- data/lib/rggen/core/register_map/loader.rb +1 -1
- data/lib/rggen/core/register_map/ruby_loader.rb +1 -1
- data/lib/rggen/core/utility/code_utility.rb +8 -2
- data/lib/rggen/core/version.rb +1 -1
- metadata +7 -6
- data/lib/rggen/core/base/hierarchical_accessors.rb +0 -91
- data/lib/rggen/core/base/hierarchical_feature_accessors.rb +0 -83
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9079e5f068e752e9f083fd64c97dda8cdc9f47f2e4ce3c6f1d0568f4950caa3
|
4
|
+
data.tar.gz: e60e14aa24f9f7b003391f0d87d773a35adbdf99c794016cdd803fc8025df8de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f2b3f56089899d459e62bd6873166a467eec667d559690ad26a17558a72b4e399744d156c9a092181067a1313c82615db12a63469e8b7d9145678adfed2c830
|
7
|
+
data.tar.gz: a5cf836ea12ba57a905d925f29406f76155ce3e389d4678f76adee6da8bec9f5964c3f973f2803019c4aa8756f7223abf1de958f2ceb6b6fd97024d663c02327
|
data/exe/rggen
CHANGED
File without changes
|
data/lib/rggen/core.rb
CHANGED
@@ -31,10 +31,10 @@ require_relative 'core/base/internal_struct'
|
|
31
31
|
require_relative 'core/base/shared_context'
|
32
32
|
require_relative 'core/base/component'
|
33
33
|
require_relative 'core/base/component_factory'
|
34
|
+
require_relative 'core/base/component_layer_extension'
|
34
35
|
require_relative 'core/base/feature'
|
35
36
|
require_relative 'core/base/feature_factory'
|
36
|
-
require_relative 'core/base/
|
37
|
-
require_relative 'core/base/hierarchical_feature_accessors'
|
37
|
+
require_relative 'core/base/feature_layer_extension'
|
38
38
|
|
39
39
|
require_relative 'core/input_base/input_value'
|
40
40
|
require_relative 'core/input_base/input_data'
|
@@ -49,6 +49,7 @@ require_relative 'core/input_base/property'
|
|
49
49
|
require_relative 'core/input_base/feature'
|
50
50
|
require_relative 'core/input_base/feature_factory'
|
51
51
|
|
52
|
+
require_relative 'core/configuration/input_data'
|
52
53
|
require_relative 'core/configuration/error'
|
53
54
|
require_relative 'core/configuration/component'
|
54
55
|
require_relative 'core/configuration/component_factory'
|
@@ -91,7 +92,7 @@ require_relative 'core/builder/output_component_registry'
|
|
91
92
|
require_relative 'core/builder/simple_feature_entry'
|
92
93
|
require_relative 'core/builder/list_feature_entry'
|
93
94
|
require_relative 'core/builder/feature_registry'
|
94
|
-
require_relative 'core/builder/
|
95
|
+
require_relative 'core/builder/layer'
|
95
96
|
require_relative 'core/builder/plugins'
|
96
97
|
require_relative 'core/builder/builder'
|
97
98
|
require_relative 'core/builder'
|
@@ -4,28 +4,37 @@ module RgGen
|
|
4
4
|
module Core
|
5
5
|
module Base
|
6
6
|
class Component
|
7
|
-
def initialize(base_name, *args)
|
7
|
+
def initialize(parent, base_name, layer, *args)
|
8
|
+
@parent = parent
|
8
9
|
@base_name = base_name
|
9
|
-
@
|
10
|
+
@layer = layer
|
10
11
|
@children = []
|
11
12
|
@need_children = true
|
12
|
-
@level = (parent && parent.level + 1) || 0
|
13
13
|
@features = {}
|
14
|
+
@depth = (parent&.depth || 0) + 1
|
14
15
|
@component_index = parent&.children&.size || 0
|
15
16
|
post_initialize(*args)
|
16
17
|
block_given? && yield(self)
|
17
18
|
end
|
18
19
|
|
19
20
|
attr_reader :parent
|
21
|
+
attr_reader :layer
|
20
22
|
attr_reader :children
|
21
|
-
attr_reader :
|
23
|
+
attr_reader :depth
|
22
24
|
attr_reader :component_index
|
23
25
|
|
24
|
-
def
|
25
|
-
[
|
26
|
+
def ancestors
|
27
|
+
[].tap do |components|
|
28
|
+
component = self
|
29
|
+
while component
|
30
|
+
components.unshift(component)
|
31
|
+
component = component.parent
|
32
|
+
end
|
33
|
+
end
|
26
34
|
end
|
27
35
|
|
28
|
-
def
|
36
|
+
def component_name
|
37
|
+
[@layer, @base_name].compact.join('@')
|
29
38
|
end
|
30
39
|
|
31
40
|
alias_method :to_s, :component_name
|
@@ -4,15 +4,19 @@ module RgGen
|
|
4
4
|
module Core
|
5
5
|
module Base
|
6
6
|
class ComponentFactory
|
7
|
-
def initialize(component_name)
|
7
|
+
def initialize(component_name, layer)
|
8
8
|
@component_name = component_name
|
9
|
+
@layer = layer
|
9
10
|
@root_factory = false
|
10
11
|
block_given? && yield(self)
|
11
12
|
end
|
12
13
|
|
14
|
+
attr_reader :component_name
|
15
|
+
attr_reader :layer
|
16
|
+
|
13
17
|
attr_setter :target_component
|
18
|
+
attr_setter :component_factories
|
14
19
|
attr_setter :feature_factories
|
15
|
-
attr_setter :child_factory
|
16
20
|
|
17
21
|
def root_factory
|
18
22
|
@root_factory = true
|
@@ -40,7 +44,7 @@ module RgGen
|
|
40
44
|
def create_component(parent, sources, &block)
|
41
45
|
actual_sources = Array(select_actual_sources(*sources))
|
42
46
|
@target_component
|
43
|
-
.new(
|
47
|
+
.new(parent, component_name, layer, *actual_sources, &block)
|
44
48
|
end
|
45
49
|
|
46
50
|
def select_actual_sources(*sources)
|
@@ -54,8 +58,7 @@ module RgGen
|
|
54
58
|
end
|
55
59
|
|
56
60
|
def do_create_features(component, sources)
|
57
|
-
|
58
|
-
create_features(component, *sources)
|
61
|
+
create_features? && create_features(component, *sources)
|
59
62
|
end
|
60
63
|
|
61
64
|
def create_features?
|
@@ -63,12 +66,11 @@ module RgGen
|
|
63
66
|
end
|
64
67
|
|
65
68
|
def do_create_children(component, sources)
|
66
|
-
|
67
|
-
create_children(component, *sources)
|
69
|
+
create_children?(component) && create_children(component, *sources)
|
68
70
|
end
|
69
71
|
|
70
72
|
def create_children?(component)
|
71
|
-
@
|
73
|
+
@component_factories && component.need_children?
|
72
74
|
end
|
73
75
|
|
74
76
|
def preprocess(args)
|
@@ -86,7 +88,8 @@ module RgGen
|
|
86
88
|
end
|
87
89
|
|
88
90
|
def create_child(component, *args)
|
89
|
-
|
91
|
+
factory = find_child_factory(*args)
|
92
|
+
factory.create(component, *args)
|
90
93
|
end
|
91
94
|
end
|
92
95
|
end
|
@@ -0,0 +1,194 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RgGen
|
4
|
+
module Core
|
5
|
+
module Base
|
6
|
+
module ComponentLayerExtension
|
7
|
+
private
|
8
|
+
|
9
|
+
module Common
|
10
|
+
def root?
|
11
|
+
layer == :root
|
12
|
+
end
|
13
|
+
|
14
|
+
def register_block?
|
15
|
+
layer == :register_block
|
16
|
+
end
|
17
|
+
|
18
|
+
def register_file?
|
19
|
+
layer == :register_file
|
20
|
+
end
|
21
|
+
|
22
|
+
def register?
|
23
|
+
layer == :register
|
24
|
+
end
|
25
|
+
|
26
|
+
def bit_field?
|
27
|
+
layer == :bit_field
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
module Root
|
32
|
+
include Common
|
33
|
+
|
34
|
+
def register_blocks
|
35
|
+
children
|
36
|
+
end
|
37
|
+
|
38
|
+
def register_files
|
39
|
+
register_blocks.flat_map(&:register_files)
|
40
|
+
end
|
41
|
+
|
42
|
+
def registers
|
43
|
+
register_blocks.flat_map(&:registers)
|
44
|
+
end
|
45
|
+
|
46
|
+
def bit_fields
|
47
|
+
register_blocks.flat_map(&:bit_fields)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
module RegisterBlock
|
52
|
+
include Common
|
53
|
+
|
54
|
+
def root
|
55
|
+
parent
|
56
|
+
end
|
57
|
+
|
58
|
+
def files_and_registers
|
59
|
+
children
|
60
|
+
end
|
61
|
+
|
62
|
+
def register_files(include_lower_layer = true)
|
63
|
+
files_and_registers
|
64
|
+
.select(&:register_file?)
|
65
|
+
.flat_map { |rf| [rf, *(include_lower_layer ? rf : nil)&.register_files] }
|
66
|
+
end
|
67
|
+
|
68
|
+
def registers(include_lower_layer = true)
|
69
|
+
files_and_registers.flat_map do |file_or_register|
|
70
|
+
if file_or_register.register?
|
71
|
+
file_or_register
|
72
|
+
else
|
73
|
+
[*(include_lower_layer ? file_or_register : nil)&.registers]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def bit_fields
|
79
|
+
registers.flat_map(&:bit_fields)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
module RegisterFile
|
84
|
+
include Common
|
85
|
+
|
86
|
+
def root
|
87
|
+
register_block.root
|
88
|
+
end
|
89
|
+
|
90
|
+
def block_or_file
|
91
|
+
parent
|
92
|
+
end
|
93
|
+
|
94
|
+
def register_block
|
95
|
+
parent.register_block? && parent || parent.register_block
|
96
|
+
end
|
97
|
+
|
98
|
+
def register_file
|
99
|
+
parent.register_file? && parent || nil
|
100
|
+
end
|
101
|
+
|
102
|
+
def files_and_registers
|
103
|
+
children
|
104
|
+
end
|
105
|
+
|
106
|
+
def register_files(include_lower_layer = true)
|
107
|
+
files_and_registers
|
108
|
+
.select(&:register_file?)
|
109
|
+
.flat_map { |rf| [rf, *(include_lower_layer ? rf : nil)&.register_files] }
|
110
|
+
end
|
111
|
+
|
112
|
+
def registers(include_lower_layer = true)
|
113
|
+
files_and_registers.flat_map do |file_or_register|
|
114
|
+
if file_or_register.register?
|
115
|
+
file_or_register
|
116
|
+
else
|
117
|
+
[*(include_lower_layer ? file_or_register : nil)&.registers]
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def bit_fields
|
123
|
+
registers.flat_map(&:bit_fields)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
module Register
|
128
|
+
include Common
|
129
|
+
|
130
|
+
def root
|
131
|
+
parent.root
|
132
|
+
end
|
133
|
+
|
134
|
+
def register_block
|
135
|
+
parent.register_block? && parent || parent.register_block
|
136
|
+
end
|
137
|
+
|
138
|
+
def register_file
|
139
|
+
parent.register_file? && parent || nil
|
140
|
+
end
|
141
|
+
|
142
|
+
def register_files
|
143
|
+
ancestors.select(&:register_file?)
|
144
|
+
end
|
145
|
+
|
146
|
+
def block_or_file
|
147
|
+
parent
|
148
|
+
end
|
149
|
+
|
150
|
+
def bit_fields
|
151
|
+
children
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
module BitField
|
156
|
+
include Common
|
157
|
+
|
158
|
+
def root
|
159
|
+
parent.root
|
160
|
+
end
|
161
|
+
|
162
|
+
def register_block
|
163
|
+
parent.register_block
|
164
|
+
end
|
165
|
+
|
166
|
+
def register_file
|
167
|
+
parent.register_file
|
168
|
+
end
|
169
|
+
|
170
|
+
def register_files
|
171
|
+
parent.register_files
|
172
|
+
end
|
173
|
+
|
174
|
+
def register
|
175
|
+
parent
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
ACCESSOR_EXTENSIONS = {
|
180
|
+
root: Root,
|
181
|
+
register_block: RegisterBlock,
|
182
|
+
register_file: RegisterFile,
|
183
|
+
register: Register,
|
184
|
+
bit_field: BitField
|
185
|
+
}.freeze
|
186
|
+
|
187
|
+
def define_layer_methods
|
188
|
+
ACCESSOR_EXTENSIONS.key?(layer) &&
|
189
|
+
(extend ACCESSOR_EXTENSIONS[layer])
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RgGen
|
4
|
+
module Core
|
5
|
+
module Base
|
6
|
+
module FeatureLayerExtension
|
7
|
+
private
|
8
|
+
|
9
|
+
module Common
|
10
|
+
def root?
|
11
|
+
@component.root?
|
12
|
+
end
|
13
|
+
|
14
|
+
def register_block?
|
15
|
+
@component.register_block?
|
16
|
+
end
|
17
|
+
|
18
|
+
def register_file?
|
19
|
+
@component.register_file?
|
20
|
+
end
|
21
|
+
|
22
|
+
def register?
|
23
|
+
@component.register?
|
24
|
+
end
|
25
|
+
|
26
|
+
def bit_field?
|
27
|
+
@component.bit_field?
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
module Root
|
32
|
+
include Common
|
33
|
+
|
34
|
+
def root
|
35
|
+
@component
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
module RegisterBlock
|
40
|
+
include Common
|
41
|
+
|
42
|
+
def root
|
43
|
+
register_block.root
|
44
|
+
end
|
45
|
+
|
46
|
+
def register_block
|
47
|
+
@component
|
48
|
+
end
|
49
|
+
|
50
|
+
def register_blocks
|
51
|
+
root.register_blocks
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
module RegisterFile
|
56
|
+
include Common
|
57
|
+
|
58
|
+
def root
|
59
|
+
register_file.root
|
60
|
+
end
|
61
|
+
|
62
|
+
def register_block
|
63
|
+
register_file.register_block
|
64
|
+
end
|
65
|
+
|
66
|
+
def block_or_file
|
67
|
+
register_file.block_or_file
|
68
|
+
end
|
69
|
+
|
70
|
+
def register_file(layer = nil)
|
71
|
+
layer == :upper ? @component.register_file : @component
|
72
|
+
end
|
73
|
+
|
74
|
+
def files_and_registers
|
75
|
+
block_or_file.files_and_registers
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
module Register
|
80
|
+
include Common
|
81
|
+
|
82
|
+
def root
|
83
|
+
register.root
|
84
|
+
end
|
85
|
+
|
86
|
+
def register_block
|
87
|
+
register.register_block
|
88
|
+
end
|
89
|
+
|
90
|
+
def register_file
|
91
|
+
register.register_file
|
92
|
+
end
|
93
|
+
|
94
|
+
def register_files
|
95
|
+
register.register_files
|
96
|
+
end
|
97
|
+
|
98
|
+
def block_or_file
|
99
|
+
register.block_or_file
|
100
|
+
end
|
101
|
+
|
102
|
+
def register
|
103
|
+
@component
|
104
|
+
end
|
105
|
+
|
106
|
+
def files_and_registers
|
107
|
+
block_or_file.files_and_registers
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
module BitField
|
112
|
+
include Common
|
113
|
+
|
114
|
+
def root
|
115
|
+
bit_field.root
|
116
|
+
end
|
117
|
+
|
118
|
+
def register_block
|
119
|
+
bit_field.register_block
|
120
|
+
end
|
121
|
+
|
122
|
+
def register_file
|
123
|
+
bit_field.register_file
|
124
|
+
end
|
125
|
+
|
126
|
+
def register_files
|
127
|
+
bit_field.register_files
|
128
|
+
end
|
129
|
+
|
130
|
+
def register
|
131
|
+
bit_field.register
|
132
|
+
end
|
133
|
+
|
134
|
+
def bit_field
|
135
|
+
@component
|
136
|
+
end
|
137
|
+
|
138
|
+
def bit_fields
|
139
|
+
register.bit_fields
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
ACCESSOR_EXTENSIONS = {
|
144
|
+
root: Root,
|
145
|
+
register_block: RegisterBlock,
|
146
|
+
register_file: RegisterFile,
|
147
|
+
register: Register,
|
148
|
+
bit_field: BitField
|
149
|
+
}.freeze
|
150
|
+
|
151
|
+
def define_layer_methods
|
152
|
+
ACCESSOR_EXTENSIONS.key?(component.layer) &&
|
153
|
+
(extend ACCESSOR_EXTENSIONS[component.layer])
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|