ridl 2.8.1 → 2.9.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
@@ -173,37 +197,47 @@ module IDL
173
197
  typeerror(obj) unless [TrueClass, FalseClass].include? obj.class
174
198
  obj
175
199
  end
200
+
176
201
  def range_length
177
202
  2
178
203
  end
204
+
179
205
  def min
180
206
  false
181
207
  end
208
+
182
209
  def max
183
210
  true
184
211
  end
212
+
185
213
  def in_range?(val)
186
214
  Range.include?(val)
187
215
  end
216
+
188
217
  def next(val)
189
218
  !val
190
219
  end
191
220
  end
221
+
192
222
  class Char < Type
193
223
  def narrow(obj)
194
224
  typeerror(obj) unless ::Integer === obj
195
225
  typeerror(obj) unless (0..255) === obj
196
226
  obj
197
227
  end
228
+
198
229
  def range_length
199
230
  256
200
231
  end
232
+
201
233
  def min
202
234
  0
203
235
  end
236
+
204
237
  def in_range?(val)
205
238
  val >= self.min && val <= self.max
206
239
  end
240
+
207
241
  def max
208
242
  255
209
243
  end
@@ -212,31 +246,40 @@ module IDL
212
246
  val < self.max ? val + 1 : self.min
213
247
  end
214
248
  end
249
+
215
250
  class Float < Type
216
251
  def narrow(obj)
217
252
  typeerror(obj) unless ::Float === obj
218
253
  obj
219
254
  end
220
255
  end
256
+
221
257
  class Double < Float; end
222
258
  class LongDouble < Float; end
259
+
223
260
  class Fixed < Type
224
261
  attr_reader :digits, :scale
225
- def initialize(digits=nil, scale=nil)
262
+
263
+ def initialize(digits = nil, scale = nil)
226
264
  raise "significant digits for Fixed should be in the range 0-31" unless digits.nil? || (0..31) === digits.to_i
265
+
227
266
  @digits = digits.nil? ? digits : digits.to_i
228
267
  @scale = scale.nil? ? scale : scale.to_i
229
268
  end
269
+
230
270
  def narrow(obj)
231
- #typeerror(obj)
271
+ # typeerror(obj)
232
272
  obj
233
273
  end
274
+
234
275
  def is_anonymous?
235
276
  false
236
277
  end
278
+
237
279
  def is_template?
238
280
  (@size && @size.is_a?(IDL::Expression) && @size.is_template?)
239
281
  end
282
+
240
283
  def instantiate(instantiation_context)
241
284
  self.is_template? ? (Type::Fixed.new(@size.instantiate(instantiation_context).value)) : self
242
285
  end
@@ -244,11 +287,15 @@ module IDL
244
287
 
245
288
  class String < Type
246
289
  attr_reader :size
247
- def length; @size; end
290
+
291
+ def length
292
+ @size
293
+ end
248
294
 
249
295
  def initialize(size = nil)
250
296
  @size = size
251
297
  end
298
+
252
299
  def narrow(obj)
253
300
  typeerror(obj) unless ::String === obj
254
301
  if @size.nil?
@@ -259,15 +306,19 @@ module IDL
259
306
  obj
260
307
  end
261
308
  end
309
+
262
310
  def is_anonymous?
263
311
  @size ? true : false
264
312
  end
313
+
265
314
  def is_template?
266
315
  (@size && @size.is_a?(IDL::Expression) && @size.is_template?)
267
316
  end
317
+
268
318
  def matches?(idltype)
269
319
  super && self.size == idltype.size
270
320
  end
321
+
271
322
  def instantiate(instantiation_context)
272
323
  self.is_template? ? (Type::String.new(@size.instantiate(instantiation_context).value)) : self
273
324
  end
@@ -276,9 +327,14 @@ module IDL
276
327
  class Sequence < Type
277
328
  attr_reader :size, :basetype
278
329
  attr_accessor :recursive
279
- def length; @size; end
330
+
331
+ def length
332
+ @size
333
+ end
334
+
280
335
  def initialize(t, size)
281
336
  raise "Anonymous type definitions are not allowed!" if t.is_anonymous?
337
+
282
338
  @basetype = t
283
339
  @size = size
284
340
  @typename = format("sequence<%s%s>", t.typename,
@@ -289,30 +345,39 @@ module IDL
289
345
  end)
290
346
  @recursive = false
291
347
  end
348
+
292
349
  def typename
293
350
  @typename
294
351
  end
352
+
295
353
  def narrow(obj)
296
354
  typeerror(obj)
297
355
  end
356
+
298
357
  def is_complete?
299
358
  @basetype.resolved_type.is_complete?
300
359
  end
360
+
301
361
  def is_local?(recurstk = [])
302
362
  @basetype.resolved_type.is_local?(recurstk)
303
363
  end
364
+
304
365
  def is_recursive?
305
366
  @recursive
306
367
  end
368
+
307
369
  def is_anonymous?
308
370
  true
309
371
  end
372
+
310
373
  def is_template?
311
374
  (@size && @size.is_a?(IDL::Expression::ScopedName) && @size.node.is_a?(IDL::AST::TemplateParam)) || @basetype.is_template?
312
375
  end
376
+
313
377
  def matches?(idltype)
314
378
  super && self.size == idltype.size && self.basetype.resolved_type.matches?(idltype.basetype.resolved_type)
315
379
  end
380
+
316
381
  def instantiate(instantiation_context)
317
382
  if self.is_template?
318
383
  Type::Sequence.new(@basetype.instantiate(instantiation_context), @size ? @size.instantiate(instantiation_context).value : nil)
@@ -323,10 +388,11 @@ module IDL
323
388
  end
324
389
 
325
390
  class Array < Type
326
- attr_reader :basetype
327
- attr_reader :sizes
391
+ attr_reader :basetype, :sizes
392
+
328
393
  def initialize(t, sizes)
329
394
  raise "Anonymous type definitions are not allowed!" if t.is_anonymous?
395
+
330
396
  @basetype = t
331
397
  if sizes.nil?
332
398
  @sizes = []
@@ -336,27 +402,35 @@ module IDL
336
402
  @typename = t.typename + sizes.collect { |s| "[#{IDL::Expression::ScopedName === s ? s.node.name : s.to_s}]" }.join
337
403
  end
338
404
  end
405
+
339
406
  def typename
340
407
  @typename
341
408
  end
409
+
342
410
  def narrow(obj)
343
411
  typeerror(obj)
344
412
  end
413
+
345
414
  def is_complete?
346
415
  @basetype.resolved_type.is_complete?
347
416
  end
417
+
348
418
  def is_local?(recurstk = [])
349
419
  @basetype.resolved_type.is_local?(recurstk)
350
420
  end
421
+
351
422
  def is_anonymous?
352
423
  true
353
424
  end
425
+
354
426
  def is_template?
355
427
  @sizes.any? { |sz| (sz.is_a?(IDL::Expression::ScopedName) && sz.node.is_a?(IDL::AST::TemplateParam)) } || @basetype.is_template?
356
428
  end
429
+
357
430
  def matches?(idltype)
358
431
  super && self.sizes == idltype.sizes && self.basetype.resolved_type.matches?(idltype.basetype.resolved_type)
359
432
  end
433
+
360
434
  def instantiate(instantiation_context)
361
435
  self.is_template? ? Type::Array.new(@basetype.instantiate(instantiation_context), @sizes.collect { |sz| sz.instantiate(instantiation_context).value }) : self
362
436
  end
@@ -364,11 +438,15 @@ module IDL
364
438
 
365
439
  class WString < Type
366
440
  attr_reader :size
367
- def length; @size; end
441
+
442
+ def length
443
+ @size
444
+ end
368
445
 
369
446
  def initialize(size = nil)
370
447
  @size = size
371
448
  end
449
+
372
450
  def narrow(obj)
373
451
  typeerror(obj) unless ::Array === obj
374
452
  if @size.nil?
@@ -379,15 +457,19 @@ module IDL
379
457
  obj
380
458
  end
381
459
  end
460
+
382
461
  def is_anonymous?
383
462
  @size ? true : false
384
463
  end
464
+
385
465
  def is_template?
386
466
  (@size && @size.is_a?(IDL::Expression::ScopedName) && @size.node.is_a?(IDL::AST::TemplateParam))
387
467
  end
468
+
388
469
  def matches?(idltype)
389
470
  super && self.size == idltype.size
390
471
  end
472
+
391
473
  def instantiate(instantiation_context)
392
474
  self.is_template? ? Type::WString.new(@size.instantiate(instantiation_context).value) : self
393
475
  end
@@ -438,6 +520,7 @@ module IDL
438
520
  def is_complete?
439
521
  node.is_defined?
440
522
  end
523
+
441
524
  def is_local?(recurstk = [])
442
525
  node.is_local?(recurstk)
443
526
  end
@@ -450,6 +533,7 @@ module IDL
450
533
  def is_complete?
451
534
  node.is_defined?
452
535
  end
536
+
453
537
  def is_local?(recurstk = [])
454
538
  node.is_local?(recurstk)
455
539
  end
@@ -462,6 +546,7 @@ module IDL
462
546
  def is_complete?
463
547
  node.is_defined?
464
548
  end
549
+
465
550
  def is_local?(recurstk = [])
466
551
  node.is_local?(recurstk)
467
552
  end
@@ -473,18 +558,23 @@ module IDL
473
558
  typeerror(obj) unless (0...@node.enumerators.length) === obj
474
559
  obj
475
560
  end
561
+
476
562
  def range_length
477
563
  @node.enumerators.length
478
564
  end
565
+
479
566
  def min
480
567
  0
481
568
  end
569
+
482
570
  def max
483
571
  @node.enumerators.length - 1
484
572
  end
573
+
485
574
  def in_range?(val)
486
575
  val >= self.min && val <= self.max
487
576
  end
577
+
488
578
  def next(val)
489
579
  val < self.max ? val + 1 : self.min
490
580
  end
@@ -492,41 +582,51 @@ module IDL
492
582
 
493
583
  class Const < Type
494
584
  attr_reader :type
585
+
495
586
  def initialize(t)
496
587
  @type = t
497
588
  @typename = "const #{t.typename}"
498
589
  end
590
+
499
591
  def typename
500
592
  @typename
501
593
  end
594
+
502
595
  def narrow(obj)
503
596
  @type.narrow(obj)
504
597
  end
598
+
505
599
  def is_complete?
506
600
  @type.resolved_type.is_complete?
507
601
  end
602
+
508
603
  def is_local?(recurstk = [])
509
604
  @type.resolved_type.is_local?(recurstk)
510
605
  end
606
+
511
607
  def is_anonymous?
512
608
  t.resolved_type.is_anonymous?
513
609
  end
610
+
514
611
  def is_template?
515
612
  @type.is_template?
516
613
  end
614
+
517
615
  def instantiate(instantiation_context)
518
616
  self.is_template? ? Type::Const.new(@type.instantiate(instantiation_context)) : self
519
617
  end
618
+
520
619
  def is_node?(node_class)
521
620
  @type.is_node?(node_class)
522
621
  end
622
+
523
623
  def resolved_node
524
624
  @type.resolved_node
525
625
  end
626
+
526
627
  def matches?(idltype)
527
628
  super && self.type.resolved_type.matches?(idltype.type.resolved_type)
528
629
  end
529
630
  end
530
-
531
631
  end
532
632
  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 = 1
15
+ RIDL_VERSION_MINOR = 9
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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridl
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.1
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Corino
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-08-11 00:00:00.000000000 Z
12
+ date: 2023-03-06 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.
16
- email: mcorino@remedy.nl
16
+ email: info@remedy.nl
17
17
  executables: []
18
18
  extensions: []
19
19
  extra_rdoc_files:
@@ -56,7 +56,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: '2.0'
59
+ version: '2.5'
60
60
  required_rubygems_version: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - ">="