ridl 2.8.2 → 2.10.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.
data/lib/ridl/type.rb CHANGED
@@ -14,33 +14,43 @@ module IDL
14
14
  def typename
15
15
  self.class.name
16
16
  end
17
+
17
18
  def typeerror(val)
18
19
  raise "#{val.inspect} cannot narrow to #{self.typename}"
19
20
  end
21
+
20
22
  def narrow(obj)
21
23
  obj
22
24
  end
25
+
23
26
  def resolved_type
24
27
  self
25
28
  end
29
+
26
30
  def is_complete?
27
31
  true
28
32
  end
29
- def is_local?(recurstk = nil)
33
+
34
+ def is_local?(_recurstk = nil)
30
35
  false
31
36
  end
37
+
32
38
  def is_anonymous?
33
39
  false
34
40
  end
35
- def is_node?(node_class)
41
+
42
+ def is_node?(_node_class)
36
43
  false
37
44
  end
45
+
38
46
  def resolved_node
39
47
  nil
40
48
  end
49
+
41
50
  def is_template?
42
51
  false
43
52
  end
53
+
44
54
  def matches?(idltype)
45
55
  self.class == idltype.class
46
56
  end
@@ -50,7 +60,7 @@ module IDL
50
60
  end
51
61
 
52
62
  class UndefinedType
53
- def initialize(*args)
63
+ def initialize(*_args)
54
64
  raise "#{self.class.name}'s not implemented yet."
55
65
  end
56
66
  end
@@ -64,19 +74,25 @@ module IDL
64
74
 
65
75
  class NodeType < Type
66
76
  attr_reader :node
77
+
67
78
  def initialize(node)
68
79
  raise node.inspect if node && !node.is_a?(IDL::AST::Leaf)
80
+
69
81
  @node = node
70
82
  end
71
- def is_local?(recurstk = nil)
83
+
84
+ def is_local?(_recurstk = nil)
72
85
  @node.is_local?
73
86
  end
87
+
74
88
  def is_node?(node_class)
75
89
  @node.is_a?(node_class)
76
90
  end
91
+
77
92
  def resolved_node
78
93
  @node
79
94
  end
95
+
80
96
  def matches?(idltype)
81
97
  super && self.resolved_node == idltype.resolved_node
82
98
  end
@@ -86,27 +102,35 @@ module IDL
86
102
  def typename
87
103
  @node.name
88
104
  end
105
+
89
106
  def narrow(obj)
90
107
  @node.idltype.narrow(obj)
91
108
  end
109
+
92
110
  def resolved_type
93
111
  @node.idltype.resolved_type
94
112
  end
113
+
95
114
  def is_complete?
96
115
  resolved_type.is_complete?
97
116
  end
117
+
98
118
  def is_local?(recurstk = [])
99
119
  resolved_type.is_local?(recurstk)
100
120
  end
121
+
101
122
  def is_node?(node_class)
102
123
  @node.is_a?(IDL::AST::Typedef) ? @node.idltype.is_node?(node_class) : @node.is_a?(node_class)
103
124
  end
125
+
104
126
  def resolved_node
105
127
  @node.is_a?(IDL::AST::Typedef) ? @node.idltype.resolved_node : @node
106
128
  end
129
+
107
130
  def is_template?
108
131
  @node.is_template?
109
132
  end
133
+
110
134
  def instantiate(instantiation_context)
111
135
  if self.is_template?
112
136
  cp = IDL::AST::TemplateParam.concrete_param(instantiation_context, @node)
@@ -125,7 +149,7 @@ module IDL
125
149
  end
126
150
 
127
151
  def self.is_unsigned?
128
- self::Range.first == 0
152
+ self::Range.first.zero?
129
153
  end
130
154
 
131
155
  def self.bits
@@ -152,6 +176,10 @@ module IDL
152
176
  val < self.max ? val + 1 : self.min
153
177
  end
154
178
 
179
+ def default
180
+ 0
181
+ end
182
+
155
183
  def Integer.newclass(range, bits)
156
184
  k = Class.new(self)
157
185
  k.const_set('Range', range)
@@ -160,9 +188,11 @@ module IDL
160
188
  end
161
189
  end
162
190
  Octet = Integer.newclass(0..0xFF, 8)
191
+ UTinyShort = Integer.newclass(0..0xFF, 8)
163
192
  UShort = Integer.newclass(0..0xFFFF, 16)
164
193
  ULong = Integer.newclass(0..0xFFFFFFFF, 32)
165
194
  ULongLong = Integer.newclass(0..0xFFFFFFFFFFFFFFFF, 64)
195
+ TinyShort = Integer.newclass(-0x80...0x800, 8)
166
196
  Short = Integer.newclass(-0x8000...0x8000, 16)
167
197
  Long = Integer.newclass(-0x80000000...0x80000000, 32)
168
198
  LongLong = Integer.newclass(-0x8000000000000000...0x8000000000000000, 64)
@@ -173,37 +203,51 @@ module IDL
173
203
  typeerror(obj) unless [TrueClass, FalseClass].include? obj.class
174
204
  obj
175
205
  end
206
+
176
207
  def range_length
177
208
  2
178
209
  end
210
+
179
211
  def min
180
212
  false
181
213
  end
214
+
182
215
  def max
183
216
  true
184
217
  end
218
+
185
219
  def in_range?(val)
186
220
  Range.include?(val)
187
221
  end
222
+
223
+ def default
224
+ false
225
+ end
226
+
188
227
  def next(val)
189
228
  !val
190
229
  end
191
230
  end
231
+
192
232
  class Char < Type
193
233
  def narrow(obj)
194
234
  typeerror(obj) unless ::Integer === obj
195
235
  typeerror(obj) unless (0..255) === obj
196
236
  obj
197
237
  end
238
+
198
239
  def range_length
199
240
  256
200
241
  end
242
+
201
243
  def min
202
244
  0
203
245
  end
246
+
204
247
  def in_range?(val)
205
248
  val >= self.min && val <= self.max
206
249
  end
250
+
207
251
  def max
208
252
  255
209
253
  end
@@ -212,31 +256,41 @@ module IDL
212
256
  val < self.max ? val + 1 : self.min
213
257
  end
214
258
  end
259
+
215
260
  class Float < Type
216
261
  def narrow(obj)
217
262
  typeerror(obj) unless ::Float === obj
218
263
  obj
219
264
  end
220
265
  end
266
+
221
267
  class Double < Float; end
222
268
  class LongDouble < Float; end
269
+
223
270
  class Fixed < Type
224
271
  attr_reader :digits, :scale
225
- def initialize(digits=nil, scale=nil)
272
+
273
+ def initialize(digits = nil, scale = nil)
274
+ raise "anonymous fixed definitions are not allowed!" if digits.nil? || scale.nil?
226
275
  raise "significant digits for Fixed should be in the range 0-31" unless digits.nil? || (0..31) === digits.to_i
227
- @digits = digits.nil? ? digits : digits.to_i
228
- @scale = scale.nil? ? scale : scale.to_i
276
+
277
+ @digits = digits.to_i
278
+ @scale = scale.to_i
229
279
  end
280
+
230
281
  def narrow(obj)
231
- #typeerror(obj)
282
+ # typeerror(obj)
232
283
  obj
233
284
  end
285
+
234
286
  def is_anonymous?
235
287
  false
236
288
  end
289
+
237
290
  def is_template?
238
291
  (@size && @size.is_a?(IDL::Expression) && @size.is_template?)
239
292
  end
293
+
240
294
  def instantiate(instantiation_context)
241
295
  self.is_template? ? (Type::Fixed.new(@size.instantiate(instantiation_context).value)) : self
242
296
  end
@@ -244,11 +298,15 @@ module IDL
244
298
 
245
299
  class String < Type
246
300
  attr_reader :size
247
- def length; @size; end
301
+
302
+ def length
303
+ @size
304
+ end
248
305
 
249
306
  def initialize(size = nil)
250
307
  @size = size
251
308
  end
309
+
252
310
  def narrow(obj)
253
311
  typeerror(obj) unless ::String === obj
254
312
  if @size.nil?
@@ -259,15 +317,19 @@ module IDL
259
317
  obj
260
318
  end
261
319
  end
320
+
262
321
  def is_anonymous?
263
322
  @size ? true : false
264
323
  end
324
+
265
325
  def is_template?
266
326
  (@size && @size.is_a?(IDL::Expression) && @size.is_template?)
267
327
  end
328
+
268
329
  def matches?(idltype)
269
330
  super && self.size == idltype.size
270
331
  end
332
+
271
333
  def instantiate(instantiation_context)
272
334
  self.is_template? ? (Type::String.new(@size.instantiate(instantiation_context).value)) : self
273
335
  end
@@ -276,9 +338,14 @@ module IDL
276
338
  class Sequence < Type
277
339
  attr_reader :size, :basetype
278
340
  attr_accessor :recursive
279
- def length; @size; end
341
+
342
+ def length
343
+ @size
344
+ end
345
+
280
346
  def initialize(t, size)
281
347
  raise "Anonymous type definitions are not allowed!" if t.is_anonymous?
348
+
282
349
  @basetype = t
283
350
  @size = size
284
351
  @typename = format("sequence<%s%s>", t.typename,
@@ -289,30 +356,39 @@ module IDL
289
356
  end)
290
357
  @recursive = false
291
358
  end
359
+
292
360
  def typename
293
361
  @typename
294
362
  end
363
+
295
364
  def narrow(obj)
296
365
  typeerror(obj)
297
366
  end
367
+
298
368
  def is_complete?
299
369
  @basetype.resolved_type.is_complete?
300
370
  end
371
+
301
372
  def is_local?(recurstk = [])
302
373
  @basetype.resolved_type.is_local?(recurstk)
303
374
  end
375
+
304
376
  def is_recursive?
305
377
  @recursive
306
378
  end
379
+
307
380
  def is_anonymous?
308
381
  true
309
382
  end
383
+
310
384
  def is_template?
311
385
  (@size && @size.is_a?(IDL::Expression::ScopedName) && @size.node.is_a?(IDL::AST::TemplateParam)) || @basetype.is_template?
312
386
  end
387
+
313
388
  def matches?(idltype)
314
389
  super && self.size == idltype.size && self.basetype.resolved_type.matches?(idltype.basetype.resolved_type)
315
390
  end
391
+
316
392
  def instantiate(instantiation_context)
317
393
  if self.is_template?
318
394
  Type::Sequence.new(@basetype.instantiate(instantiation_context), @size ? @size.instantiate(instantiation_context).value : nil)
@@ -322,11 +398,76 @@ module IDL
322
398
  end
323
399
  end
324
400
 
401
+ class Map < Type
402
+ attr_reader :size, :keytype, :valuetype
403
+ attr_accessor :recursive
404
+
405
+ def length
406
+ @size
407
+ end
408
+
409
+ def initialize(key, value, size)
410
+ raise "Anonymous type definitions are not allowed!" if key.is_anonymous? || value.is_anonymous?
411
+
412
+ @keytype = key
413
+ @valuetype = value
414
+ @size = size
415
+ @typename = format("map<%s,%s%s>", key.typename, value.typename,
416
+ if @size.nil? then
417
+ ""
418
+ else
419
+ ", #{IDL::Expression::ScopedName === size ? size.node.name : size.to_s}"
420
+ end)
421
+ @recursive = false
422
+ end
423
+
424
+ def typename
425
+ @typename
426
+ end
427
+
428
+ def narrow(obj)
429
+ typeerror(obj)
430
+ end
431
+
432
+ def is_complete?
433
+ @keytype.resolved_type.is_complete? && @valuetype.resolved_type.is_complete?
434
+ end
435
+
436
+ def is_local?(recurstk = [])
437
+ @keytype.resolved_type.is_local?(recurstk) && @valuetype.resolved_type.is_local?(recurstk)
438
+ end
439
+
440
+ def is_recursive?
441
+ @recursive
442
+ end
443
+
444
+ def is_anonymous?
445
+ true
446
+ end
447
+
448
+ def is_template?
449
+ (@size && @size.is_a?(IDL::Expression::ScopedName) && @size.node.is_a?(IDL::AST::TemplateParam)) || @basetype.is_template?
450
+ end
451
+
452
+ def matches?(idltype)
453
+ super && self.size == idltype.size && self.keytype.resolved_type.matches?(idltype.keytype.resolved_type) && self.valuetype.resolved_type.matches?(idltype.valuetype.resolved_type)
454
+ end
455
+
456
+ def instantiate(instantiation_context)
457
+ if self.is_template?
458
+ Type::Map.new(@keytype.instantiate(instantiation_context), @valuetype.instantiate(instantiation_context), @size ? @size.instantiate(instantiation_context).value : nil)
459
+ else
460
+ self
461
+ end
462
+ end
463
+ end
464
+
325
465
  class Array < Type
326
- attr_reader :basetype
327
- attr_reader :sizes
466
+ attr_reader :basetype, :sizes
467
+
328
468
  def initialize(t, sizes)
329
469
  raise "Anonymous type definitions are not allowed!" if t.is_anonymous?
470
+
330
471
  @basetype = t
331
472
  if sizes.nil?
332
473
  @sizes = []
@@ -336,27 +477,35 @@ module IDL
336
477
  @typename = t.typename + sizes.collect { |s| "[#{IDL::Expression::ScopedName === s ? s.node.name : s.to_s}]" }.join
337
478
  end
338
479
  end
480
+
339
481
  def typename
340
482
  @typename
341
483
  end
484
+
342
485
  def narrow(obj)
343
486
  typeerror(obj)
344
487
  end
488
+
345
489
  def is_complete?
346
490
  @basetype.resolved_type.is_complete?
347
491
  end
492
+
348
493
  def is_local?(recurstk = [])
349
494
  @basetype.resolved_type.is_local?(recurstk)
350
495
  end
496
+
351
497
  def is_anonymous?
352
498
  true
353
499
  end
500
+
354
501
  def is_template?
355
502
  @sizes.any? { |sz| (sz.is_a?(IDL::Expression::ScopedName) && sz.node.is_a?(IDL::AST::TemplateParam)) } || @basetype.is_template?
356
503
  end
504
+
357
505
  def matches?(idltype)
358
506
  super && self.sizes == idltype.sizes && self.basetype.resolved_type.matches?(idltype.basetype.resolved_type)
359
507
  end
508
+
360
509
  def instantiate(instantiation_context)
361
510
  self.is_template? ? Type::Array.new(@basetype.instantiate(instantiation_context), @sizes.collect { |sz| sz.instantiate(instantiation_context).value }) : self
362
511
  end
@@ -364,11 +513,15 @@ module IDL
364
513
 
365
514
  class WString < Type
366
515
  attr_reader :size
367
- def length; @size; end
516
+
517
+ def length
518
+ @size
519
+ end
368
520
 
369
521
  def initialize(size = nil)
370
522
  @size = size
371
523
  end
524
+
372
525
  def narrow(obj)
373
526
  typeerror(obj) unless ::Array === obj
374
527
  if @size.nil?
@@ -379,15 +532,19 @@ module IDL
379
532
  obj
380
533
  end
381
534
  end
535
+
382
536
  def is_anonymous?
383
537
  @size ? true : false
384
538
  end
539
+
385
540
  def is_template?
386
541
  (@size && @size.is_a?(IDL::Expression::ScopedName) && @size.node.is_a?(IDL::AST::TemplateParam))
387
542
  end
543
+
388
544
  def matches?(idltype)
389
545
  super && self.size == idltype.size
390
546
  end
547
+
391
548
  def instantiate(instantiation_context)
392
549
  self.is_template? ? Type::WString.new(@size.instantiate(instantiation_context).value) : self
393
550
  end
@@ -438,6 +595,7 @@ module IDL
438
595
  def is_complete?
439
596
  node.is_defined?
440
597
  end
598
+
441
599
  def is_local?(recurstk = [])
442
600
  node.is_local?(recurstk)
443
601
  end
@@ -450,6 +608,7 @@ module IDL
450
608
  def is_complete?
451
609
  node.is_defined?
452
610
  end
611
+
453
612
  def is_local?(recurstk = [])
454
613
  node.is_local?(recurstk)
455
614
  end
@@ -462,6 +621,7 @@ module IDL
462
621
  def is_complete?
463
622
  node.is_defined?
464
623
  end
624
+
465
625
  def is_local?(recurstk = [])
466
626
  node.is_local?(recurstk)
467
627
  end
@@ -473,18 +633,79 @@ module IDL
473
633
  typeerror(obj) unless (0...@node.enumerators.length) === obj
474
634
  obj
475
635
  end
636
+
476
637
  def range_length
477
638
  @node.enumerators.length
478
639
  end
640
+
479
641
  def min
480
642
  0
481
643
  end
644
+
482
645
  def max
483
646
  @node.enumerators.length - 1
484
647
  end
648
+
649
+ def in_range?(val)
650
+ val >= self.min && val <= self.max
651
+ end
652
+
653
+ def next(val)
654
+ val < self.max ? val + 1 : self.min
655
+ end
656
+ end
657
+
658
+ class BitMask < NodeType
659
+ def narrow(obj)
660
+ typeerror(obj) unless ::Integer === obj
661
+ typeerror(obj) unless (0...@node.bitvalues.length) === obj
662
+ obj
663
+ end
664
+
665
+ def range_length
666
+ @node.bitvalues.length
667
+ end
668
+
669
+ def min
670
+ 0
671
+ end
672
+
673
+ def max
674
+ @node.bitvalues.length - 1
675
+ end
676
+
485
677
  def in_range?(val)
486
678
  val >= self.min && val <= self.max
487
679
  end
680
+
681
+ def next(val)
682
+ val < self.max ? val + 1 : self.min
683
+ end
684
+ end
685
+
686
+ class BitSet < NodeType
687
+ def narrow(obj)
688
+ typeerror(obj) unless ::Integer === obj
689
+ typeerror(obj) unless (0...@node.bitfields.length) === obj
690
+ obj
691
+ end
692
+
693
+ def range_length
694
+ @node.bitfields.length
695
+ end
696
+
697
+ def min
698
+ 0
699
+ end
700
+
701
+ def max
702
+ @node.bitfields.length - 1
703
+ end
704
+
705
+ def in_range?(val)
706
+ val >= self.min && val <= self.max
707
+ end
708
+
488
709
  def next(val)
489
710
  val < self.max ? val + 1 : self.min
490
711
  end
@@ -492,41 +713,51 @@ module IDL
492
713
 
493
714
  class Const < Type
494
715
  attr_reader :type
716
+
495
717
  def initialize(t)
496
718
  @type = t
497
719
  @typename = "const #{t.typename}"
498
720
  end
721
+
499
722
  def typename
500
723
  @typename
501
724
  end
725
+
502
726
  def narrow(obj)
503
727
  @type.narrow(obj)
504
728
  end
729
+
505
730
  def is_complete?
506
731
  @type.resolved_type.is_complete?
507
732
  end
733
+
508
734
  def is_local?(recurstk = [])
509
735
  @type.resolved_type.is_local?(recurstk)
510
736
  end
737
+
511
738
  def is_anonymous?
512
739
  t.resolved_type.is_anonymous?
513
740
  end
741
+
514
742
  def is_template?
515
743
  @type.is_template?
516
744
  end
745
+
517
746
  def instantiate(instantiation_context)
518
747
  self.is_template? ? Type::Const.new(@type.instantiate(instantiation_context)) : self
519
748
  end
749
+
520
750
  def is_node?(node_class)
521
751
  @type.is_node?(node_class)
522
752
  end
753
+
523
754
  def resolved_node
524
755
  @type.resolved_node
525
756
  end
757
+
526
758
  def matches?(idltype)
527
759
  super && self.type.resolved_type.matches?(idltype.type.resolved_type)
528
760
  end
529
761
  end
530
-
531
762
  end
532
763
  end
data/lib/ridl/version.rb CHANGED
@@ -11,11 +11,9 @@
11
11
  #--------------------------------------------------------------------
12
12
 
13
13
  module IDL
14
-
15
14
  RIDL_VERSION_MAJOR = 2
16
- RIDL_VERSION_MINOR = 8
17
- RIDL_VERSION_RELEASE = 2
15
+ RIDL_VERSION_MINOR = 10
16
+ RIDL_VERSION_RELEASE = 0
18
17
  RIDL_VERSION = "#{RIDL_VERSION_MAJOR}.#{RIDL_VERSION_MINOR}.#{RIDL_VERSION_RELEASE}"
19
18
  RIDL_COPYRIGHT = "Copyright (c) 2007-#{Time.now.year} Remedy IT Expertise BV, The Netherlands".freeze
20
-
21
19
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridl
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.2
4
+ version: 2.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Corino
8
8
  - Johnny Willemsen
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-12-21 00:00:00.000000000 Z
12
+ date: 2025-09-11 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: OMG v3.3 compliant native Ruby IDL compiler frontend with support for
15
15
  pluggable (and stackable) backends.
@@ -29,7 +29,6 @@ files:
29
29
  - lib/ridl/node.rb
30
30
  - lib/ridl/options.rb
31
31
  - lib/ridl/optparse_ext.rb
32
- - lib/ridl/parser.diff
33
32
  - lib/ridl/parser.rb
34
33
  - lib/ridl/parser.ry
35
34
  - lib/ridl/require.rb
@@ -44,7 +43,7 @@ licenses:
44
43
  metadata:
45
44
  bug_tracker_uri: https://github.com/RemedyIT/ridl/issues
46
45
  source_code_uri: https://github.com/RemedyIT/ridl
47
- post_install_message:
46
+ post_install_message:
48
47
  rdoc_options:
49
48
  - "--main"
50
49
  - README.rdoc
@@ -64,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
63
  version: '0'
65
64
  requirements: []
66
65
  rubygems_version: 3.1.6
67
- signing_key:
66
+ signing_key:
68
67
  specification_version: 4
69
68
  summary: Ruby OMG IDL compiler
70
69
  test_files: []