cast-to-yaml 0.1.1 → 0.1.2

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: be1314489cac42f6fdc88072ecd2c9d18f3ffb9b938a91a4877d64f492b82ab4
4
- data.tar.gz: a2d1171413f5219ea3f99a62e1e706fe7173ea9ddd7850a77e4a594a99009aee
3
+ metadata.gz: 6414c24c96b94ec4c511017a89e19e77f1555bd761f4e90429cb9144ca1cb248
4
+ data.tar.gz: 5155474197891e24f1b22cd75576e7407a7911fa447033ca3ce38bf950c02906
5
5
  SHA512:
6
- metadata.gz: c31c63132a199291668840678b8007cab4f3ba9c6303cdded9c7e8cca1e17b923121216c0096815ba92beb422f53c634c3ca0b5cb8a11cfc5db8a3fd762f8755
7
- data.tar.gz: 33184e329313552a6661f387bc9d679efac14e44a7b8ece742961c819a9fe980245ab49732d0e1bc8bd88414ffd110ce02c6b63be585ac681127b1adfc7f6ce8
6
+ metadata.gz: 0733e59623ea7d45e7d8f14772be6399b2f2f32cdf50b4b0325b9107506abf09bd76367999e0bce6a7f43af4390163ee4cb6118687fac5f6837718235ad5e393
7
+ data.tar.gz: 4793adf466fba2cf74cc6b9f19746f086b4f45308534f2312baf42fbcdd105ed281fe3045c0bca1914a94d09f146ee4cc73e1109305fc2bd7348c262841a9a7e
data/cast-to-yaml.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'cast-to-yaml'
3
- s.version = "0.1.1"
3
+ s.version = "0.1.2"
4
4
  s.author = "Brice Videau"
5
5
  s.email = "bvideau@anl.gov"
6
6
  s.homepage = "https://github.com/alcf-perfengr/cast-to-yaml"
@@ -49,12 +49,19 @@ module C
49
49
  class Declaration
50
50
 
51
51
  def to_a
52
- declarators.collect { |d|
53
- res = d.to_h_split(self)
54
- res["storage"] = storage.to_s if storage
55
- res["inline"] = true if inline?
56
- res
57
- }
52
+ # Anonymous nested composites
53
+ if declarators.empty?
54
+ if (type.kind_of?(Struct) || type.kind_of?(Union)) && type.members && !type.name
55
+ [{"type" => self.type.to_h_split}]
56
+ end
57
+ else
58
+ declarators.collect { |d|
59
+ res = d.to_h_split(self)
60
+ res["storage"] = storage.to_s if storage
61
+ res["inline"] = true if inline?
62
+ res
63
+ }
64
+ end
58
65
  end
59
66
 
60
67
  def extract(res = Hash::new { |h, k| h[k] = [] }, declarations: true)
@@ -94,35 +101,39 @@ module C
94
101
  end
95
102
  }
96
103
  end
97
- if type.kind_of?(Struct) && type.members && type.name
98
- s = {}
99
- s["name"] = type.name
104
+ if type.kind_of?(Struct) && type.members
100
105
  m = []
101
106
  type.members.each { |mem|
102
107
  mem.extract(res, declarations: false)
103
108
  m += mem.to_a
104
109
  }
105
- s["members"] = m
106
- res["structs"].push s
107
- elsif type.kind_of?(Enum) && type.members && type.name
110
+ if type.name
111
+ s = {}
112
+ s["name"] = type.name
113
+ s["members"] = m
114
+ res["structs"].push s
115
+ end
116
+ elsif type.kind_of?(Enum) && type.members && (type.name || (declarators.empty? && declarations))
108
117
  s = {}
109
- s["name"] = type.name
118
+ s["name"] = type.name if type.name
110
119
  m = []
111
120
  type.members.each { |mem|
112
121
  m.push mem.to_h_split
113
122
  }
114
123
  s["members"] = m
115
124
  res["enums"].push s
116
- elsif type.kind_of?(Union) && type.members && type.name
117
- s = {}
118
- s["name"] = type.name
125
+ elsif type.kind_of?(Union) && type.members
119
126
  m = []
120
127
  type.members.each { |mem|
121
128
  mem.extract(res, declarations: false)
122
129
  m += mem.to_a
123
130
  }
124
- s["members"] = m
125
- res["unions"].push s
131
+ if type.name
132
+ s = {}
133
+ s["name"] = type.name
134
+ s["members"] = m
135
+ res["unions"].push s
136
+ end
126
137
  end
127
138
  res
128
139
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cast-to-yaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brice Videau
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-27 00:00:00.000000000 Z
11
+ date: 2025-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cast
@@ -30,7 +30,7 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 0.3.0
33
- description:
33
+ description:
34
34
  email: bvideau@anl.gov
35
35
  executables: []
36
36
  extensions: []
@@ -45,7 +45,7 @@ homepage: https://github.com/alcf-perfengr/cast-to-yaml
45
45
  licenses:
46
46
  - MIT
47
47
  metadata: {}
48
- post_install_message:
48
+ post_install_message:
49
49
  rdoc_options: []
50
50
  require_paths:
51
51
  - lib
@@ -60,8 +60,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  requirements: []
63
- rubygems_version: 3.1.2
64
- signing_key:
63
+ rubygems_version: 3.4.20
64
+ signing_key:
65
65
  specification_version: 4
66
66
  summary: Extract information fom a c ast
67
67
  test_files: []