Sha256: 43c06fdfa87c5098f44f2ed477ed59026af98ad3159be8fa818de78d653b80d0

Contents?: true

Size: 969 Bytes

Versions: 2

Compression:

Stored size: 969 Bytes

Contents

require 'rgen/metamodel_builder'

module Concrete

module Metamodel

# Concrete meta-metamodel
module ConcreteMMM
  extend RGen::MetamodelBuilder::ModuleExtension
  include RGen::MetamodelBuilder::DataTypes

  FeatureKindType = Enum.new(:name => "FeatureKind", :literals =>[ :attribute, :reference, :containment ])

  class Classifier < RGen::MetamodelBuilder::MMBase
    abstract
    has_attr 'name', String
  end

  class Class < Classifier 
    has_attr 'abstract', Boolean
  end
  Class.has_many 'superTypes', Class

  class Datatype < Classifier
  end

  class Enum < Datatype
    has_many_attr 'literals', String
  end

  class Feature < RGen::MetamodelBuilder::MMBase
    has_attr 'name', String
    has_attr 'kind', FeatureKindType
    has_attr 'lowerLimit', Integer
    has_attr 'upperLimit', Integer
    has_one 'type', Classifier
  end
  Class.contains_many 'features', Feature, 'containingClass'

end

end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
concrete-0.2.1 lib/concrete/metamodel/concrete_mmm.rb
concrete-0.2.0 lib/concrete/metamodel/concrete_mmm.rb