class IDL::AST::Const

Attributes

expression[R]
idltype[R]
value[R]

Public Class Methods

new(_name, _enclosure, params) click to toggle source
Calls superclass method IDL::AST::Leaf::new
# File lib/ridl/node.rb, line 2197
def initialize(_name, _enclosure, params)
  super(_name, _enclosure)
  @idltype = params[:type]
  @expression = params[:expression]
  @value = nil
  unless @idltype.is_a?(IDL::Type::ScopedName) && @idltype.is_node?(IDL::AST::TemplateParam)
    raise "Anonymous type definitions are not allowed!" if @idltype.is_anonymous?
    raise "Incomplete type #{@idltype.typename} not allowed here!" unless @idltype.is_complete?

    unless @expression.is_a?(IDL::Expression::ScopedName) && @expression.is_node?(IDL::AST::TemplateParam)
      @value = @idltype.narrow(@expression.value)
    end
  end
end

Public Instance Methods

instantiate(instantiation_context, _enclosure) click to toggle source
Calls superclass method IDL::AST::Leaf#instantiate
# File lib/ridl/node.rb, line 2227
def instantiate(instantiation_context, _enclosure)
  _params = {
    type: @idltype.instantiate(instantiation_context),
    expression: @expression.instantiate(instantiation_context)
  }
  super(instantiation_context, _enclosure, _params)
end
marshal_dump() click to toggle source
Calls superclass method IDL::AST::Leaf#marshal_dump
# File lib/ridl/node.rb, line 2212
def marshal_dump
  super() << @idltype << @expression
end
marshal_load(vars) click to toggle source
Calls superclass method IDL::AST::Leaf#marshal_load
# File lib/ridl/node.rb, line 2216
def marshal_load(vars)
  @expression = vars.pop
  @idltype = vars.pop
  super(vars)
  unless @idltype.is_a?(IDL::Type::ScopedName) && @idltype.is_node?(IDL::AST::TemplateParam)
    unless @expression.is_a?(IDL::Expression::ScopedName) && @expression.is_node?(IDL::AST::TemplateParam)
      @value = @idltype.narrow(@expression.value)
    end
  end
end