ridl 2.8.2 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
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 = 2
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.2
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Corino
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-12-21 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.