Class: Concrete::Metamodel::ECoreToConcrete

Inherits:
RGen::Transformer
  • Object
show all
Includes:
RGen::ECore
Defined in:
lib/concrete/metamodel/ecore_to_concrete.rb

Instance Method Summary collapse

Constructor Details

#initialize(env_in, env_out, opts = {}) ⇒ ECoreToConcrete

Returns a new instance of ECoreToConcrete.



12
13
14
15
# File 'lib/concrete/metamodel/ecore_to_concrete.rb', line 12

def initialize(env_in, env_out, opts={})
  super
  @featureFilter = opts[:featureFilter]
end

Instance Method Details

#primitiveType(eType) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/concrete/metamodel/ecore_to_concrete.rb', line 52

def primitiveType(eType)
  @primitiveType ||= {}
  return @primitiveType[eType] if @primitiveType[eType]
  if eType == EString
    @primitiveType[eType] = @env_out.new(ConcreteMMM::Datatype, :name => "String")
  elsif eType == EInt
    @primitiveType[eType] = @env_out.new(ConcreteMMM::Datatype, :name => "Integer")
  elsif eType == EFloat
    @primitiveType[eType] = @env_out.new(ConcreteMMM::Datatype, :name => "Float")
  elsif eType == EBoolean
    @primitiveType[eType] = @env_out.new(ConcreteMMM::Datatype, :name => "Boolean")
  else
    # ignore unsupported datatype
  end
end

#transformObject



17
18
19
20
# File 'lib/concrete/metamodel/ecore_to_concrete.rb', line 17

def transform
  uniqueClassNameCheck
  trans(:class => EClass)
end

#uniqueClassNameCheckObject



68
69
70
71
72
73
74
# File 'lib/concrete/metamodel/ecore_to_concrete.rb', line 68

def uniqueClassNameCheck
  classNames = {}
  @env_in.find(:class => EClass).each do |c|
    raise "unqualified class names not unique, concrete does not support packages" if classNames[c.name]
    classNames[c.name] = true
  end
end