Class: IDL::Expression::ScopedName

Inherits:
IDL::Expression show all
Defined in:
lib/ridl/expression.rb

Instance Attribute Summary collapse

Attributes inherited from IDL::Expression

#idltype, #value

Instance Method Summary collapse

Methods inherited from IDL::Expression

#typename

Constructor Details

#initialize(node) ⇒ ScopedName

Returns a new instance of ScopedName.



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/ridl/expression.rb', line 38

def initialize(node)
  if $DEBUG
    unless IDL::AST::Const === node || (IDL::AST::TemplateParam === node && node.idltype.is_a?(IDL::Type::Const))
      raise RuntimeError,
        "#{node.scoped_name} must be constant: #{node.class.name}."
    end
  end
  @node = node
  @idltype = node.idltype
  @value = @idltype.narrow(node.value) unless node.is_template?
end

Instance Attribute Details

#nodeObject (readonly)

Returns the value of attribute node.



37
38
39
# File 'lib/ridl/expression.rb', line 37

def node
  @node
end

Instance Method Details

#instantiate(_context) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/ridl/expression.rb', line 52

def instantiate(_context)
  if self.is_template?
    cp = IDL::AST::TemplateParam.concrete_param(_context, @node)
    cp.is_a?(Expression) ? cp : ScopedName.new(cp)
  else
    self
  end
end

#is_node?(node_class) ⇒ Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/ridl/expression.rb', line 60

def is_node?(node_class)
  @node.is_a?(node_class)
end

#is_template?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/ridl/expression.rb', line 49

def is_template?
  @node.is_template?
end

#resolved_nodeObject



63
64
65
# File 'lib/ridl/expression.rb', line 63

def resolved_node
  @node
end