Class: IDL::AST::Const

Inherits:
Leaf
  • Object
show all
Defined in:
lib/ridl/node.rb,
lib/ridl/node.rb

Overview

Finder

Constant Summary collapse

NAMETYPE =
:class

Instance Attribute Summary collapse

Attributes inherited from Leaf

#annotations, #enclosure, #intern, #lm_name, #name, #prefix, #scopes

Instance Method Summary collapse

Methods inherited from Leaf

#_set_prefix, #has_annotations?, #is_local?, #is_template?, #lm_name_for_scope, #parsed_name_scope, #replace_prefix, #repo_scopes, #repository_id, #resolve, #scoped_lm_name, #scoped_name, #set_repo_id, #set_repo_version, #typename, #unescaped_name

Constructor Details

#initialize(_name, _enclosure, params) ⇒ Const

Returns a new instance of Const.



2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
# File 'lib/ridl/node.rb', line 2189

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 RuntimeError, "Anonymous type definitions are not allowed!" if @idltype.is_anonymous?
    raise RuntimeError,
          "Incomplete type #{@idltype.typename} not allowed here!" if !@idltype.is_complete?
    unless @expression.is_a?(IDL::Expression::ScopedName) && @expression.is_node?(IDL::AST::TemplateParam)
      @value = @idltype.narrow(@expression.value)
    end
  end
end

Instance Attribute Details

#expressionObject (readonly)

Returns the value of attribute expression.



2188
2189
2190
# File 'lib/ridl/node.rb', line 2188

def expression
  @expression
end

#idltypeObject (readonly)

Returns the value of attribute idltype.



2188
2189
2190
# File 'lib/ridl/node.rb', line 2188

def idltype
  @idltype
end

#valueObject (readonly)

Returns the value of attribute value.



2188
2189
2190
# File 'lib/ridl/node.rb', line 2188

def value
  @value
end

Instance Method Details

#instantiate(_context, _enclosure) ⇒ Object



2219
2220
2221
2222
2223
2224
2225
# File 'lib/ridl/node.rb', line 2219

def instantiate(_context, _enclosure)
  _params = {
    :type => @idltype.instantiate(_context),
    :expression => @expression.instantiate(_context)
  }
  super(_context, _enclosure, _params)
end

#marshal_dumpObject



2204
2205
2206
# File 'lib/ridl/node.rb', line 2204

def marshal_dump
  super() << @idltype << @expression
end

#marshal_load(vars) ⇒ Object



2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
# File 'lib/ridl/node.rb', line 2208

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