class IDL::Type::Array

Attributes

basetype[R]
sizes[R]

Public Class Methods

new(t, sizes) click to toggle source
# File lib/ridl/type.rb, line 393
def initialize(t, sizes)
  raise "Anonymous type definitions are not allowed!" if t.is_anonymous?

  @basetype = t
  if sizes.nil?
    @sizes = []
    @typename = t.typename + "[]"
  else
    @sizes = sizes
    @typename = t.typename + sizes.collect { |s| "[#{IDL::Expression::ScopedName === s ? s.node.name : s.to_s}]" }.join
  end
end

Public Instance Methods

instantiate(instantiation_context) click to toggle source
# File lib/ridl/type.rb, line 434
def instantiate(instantiation_context)
  self.is_template? ? Type::Array.new(@basetype.instantiate(instantiation_context), @sizes.collect { |sz| sz.instantiate(instantiation_context).value }) : self
end
is_anonymous?() click to toggle source
# File lib/ridl/type.rb, line 422
def is_anonymous?
  true
end
is_complete?() click to toggle source
# File lib/ridl/type.rb, line 414
def is_complete?
  @basetype.resolved_type.is_complete?
end
is_local?(recurstk = []) click to toggle source
# File lib/ridl/type.rb, line 418
def is_local?(recurstk = [])
  @basetype.resolved_type.is_local?(recurstk)
end
is_template?() click to toggle source
# File lib/ridl/type.rb, line 426
def is_template?
  @sizes.any? { |sz| (sz.is_a?(IDL::Expression::ScopedName) && sz.node.is_a?(IDL::AST::TemplateParam)) } || @basetype.is_template?
end
matches?(idltype) click to toggle source
Calls superclass method IDL::Type#matches?
# File lib/ridl/type.rb, line 430
def matches?(idltype)
  super && self.sizes == idltype.sizes && self.basetype.resolved_type.matches?(idltype.basetype.resolved_type)
end
narrow(obj) click to toggle source
# File lib/ridl/type.rb, line 410
def narrow(obj)
  typeerror(obj)
end
typename() click to toggle source
# File lib/ridl/type.rb, line 406
def typename
  @typename
end