Model Declaration

This model description is not a real EMF artifact. It was generated by the
org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
code generator can be extended.
This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.

Package declaration <http://www.bmw.de/emf/evolution/declaration>

  Class NamedElement
    Attribute name : EString<<1..1>>

  Class Operations
    Reference operations : Operation<<0..*>>
    Attribute code : EString
    Operation getOperation(EString) : Operation

  Class Operation -> NamedElement
    Reference operations : Operations<<1..1>>
    Attribute label : EString<<1..1>>
    Attribute description : EString
    Reference parameters : Parameter<<0..*>>
    Reference /mainParameter : Parameter
    Reference constraints : Constraint<<0..*>>
    Reference /mainConstraints : Constraint<<0..*>>
    Reference variables : Variable<<0..*>>
    Operation getParameter(EString) : Parameter
    Operation getVariable(EString) : Variable

  Class Placeholder -> TypedElement, NamedElement
    Attribute initExpression : EString

  Class Parameter -> Placeholder
    Reference operation : Operation<<1..1>>
    Attribute main : EBoolean
    Attribute description : EString
    Attribute required : EBoolean

  Class Variable -> Placeholder
    Reference operation : Operation<<1..1>>

  Class Constraint -> NamedElement
    Reference operation : Operation<<1..1>>
    Attribute main : EBoolean
    Attribute booleanExpression : EString<<1..1>>

  Class TypedElement
    Attribute many : EBoolean
    Reference /classifier : EClassifier
    Attribute classifierName : EString<<1..1>>
