BlockLibrary Meta-model

Embedded systems design is often done using block-based modeling languages like Simulink. These languages rely on a set of block defined in a library. This documentation is about the BlockLibrary metamodel. This metamodel aims at describing and specifying a blocks constructs. Such constructs are used for holding block specification.

These specifications describes the allowed:
  • block inputs (number of inputs, type of inputs)
  • block outputs (number of outputs, type of outputs)
  • block parameters (type, name,...)
  • block semantics

Such description is often provided as a natural language text. Using metamodels provides a formal semantics for such construct.

blocklibrary package

This package contains the elements for the definition of a BlockLibrary specification.

../_images/blocklibrary.png

Element

Generic root class for all other meta-classes

Meta properties

  • Type: EClass
  • Abstract: true
  • Interface: false
  • Super type(s):

Attributes

name: EString [0..1]

The name of a SpecificationElement. Optionnal as it might be too heavy to specify a name for each element (thinking of annotations such as invariants...)

documentation: EString [0..*]

The content of the documentation

Annotation

A generic meta class for formal annotations. The annotations can be specified in many languages, including in the future also the P/GeneAuto code model.

Invariants

relation_between_value_and_expression:
        not (value.oclIsUndefined()) -- xor not(expression.oclIsUndefined())

pre_has_annotation_empty:
        kind = PRE implies annotations->isEmpty()

post_has_annotation_empty:
        kind = POST implies annotations->isEmpty()
  • Note

    P Project relation: This metaclass is an extenstion of the Annotation metaclass in the P/GeneAuto meta model, where the Annotation metaclass is used for informal documentation only.

Meta properties

Attributes

isDerived: EBoolean [0..1]

Derived annotations are inferred from other parts of the specification and are not specified by the BlockLibrary designer

isContract: EBoolean [0..1]

Contract annotations are used to specify variables of annotations only used in contract definition (pre/post/invariants). As such they do not impact the fucntional code.

kind: AnnotationKind [1..1]

Kind of the Annotation

Invariants

a_definition_has_an_input:
        kind = AnnotationKind::DEFINITION implies not (inputs->isEmpty())
  • Todo

    Annotation class: Warning: The kind attribute might become: Verification annotation or text annotation.

    This might lead to have a new attribute for the Hoare annotation kind (pre/post/inv).

    Another possibility would be to add the TEXT lanugage as an AnnotationLanguage so that

    the annotation becomes a simple text: a simple comment in the code.

language: AnnotationLanguage [1..1]

The Annotation language. This language is defined as an enumeration. Users of the blocklibrary specification language will be able to specify each annotation with its own language allowing to use at best the various possible languages.

value: EString [0..1]

The string representation of the annotation.

References

outputs is containment for OperationParameter [0..*]

A reference to a collection of OperationParameter elements defining the set of outputs for this function.

Invariants

if_outputs_not_empty_then_matlab_like_definition:
        outputs->size() > 1 implies (language = AnnotationLanguage::MATLAB or language = AnnotationLanguage::SCILAB)

if_outputs_not_empty_then_definition:
        outputs->size() > 0 implies (kind = AnnotationKind::DEFINITION)

inputs is containment for OperationParameter [0..*]

A reference to a collection of OperationParameter elements defining the set of inputs for the definition/function

Invariants

if_inputs_not_empty_then_definition:
        inputs->size() > 0 implies (kind = AnnotationKind::DEFINITION)

annotations is containment for Annotation [0..*]

Annotations can contain other annotations. E.g a definition can contain pre- and postconditions.

  • Todo

    Question: Is it useful to model definitions (functions) as a separate metaclass and remove the recursive containment of Annotations? (ArDI) I would say that this Annotation class is only an interface. It must be seen as a contract for the annotation lonaguages.

exp is containment for OclExpression [0..1]

action is containment for ActionBlock [0..1]

AnnotationKind

Gives the allowed scopes for an AnnotationBlockType. See Annotation Generation and Annotation blocks transformation pages for more informations.

Meta properties

  • Type: EEnumeration
  • Default value: AUTO

Literals

AUTO : AUTO (0)

The annotation kind is automatically computed according to its context.

DEFINITION : DEFINITION (1)

A definition (a constant or function) that can be used in other annotations

INVARIANT : INVARIANT (2)

General (well-formedness or behavioural) invariant

MODE_INVARIANT : MODE_INVARIANT (3)

Invariant that is used during mode resolution

PRE : PRE (4)

Pre-condition of an operation

POST : POST (5)

Post-condition of an operation

AnnotationLanguage

The AnnotationLanguage enumeration. Adding a new annotation language here will allow to add a new language for annotation writing.

  • Todo

    Versions: Review version numbers support provided here

Meta properties

  • Type: EEnumeration
  • Default value: OCL

Literals

OCL : OCL (0)

OCL annotation language. We will rely for this OCL language on the 2.3 standard specification from OMG.

MATLAB : MATLAB (1)

The Matlab language. A subset of the language is supported.

SCILAB : SCILAB (2)

The scilab language. We will rely on the (?) version of the language.

FOL : FOL (3)

The Annotation language (ACSL like for the moment).

Model

TODO Clarify

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element

BlockLibraryModel

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, Model

References

blockLibrary is reference to BlockLibrary [0..1]

BlockLibrary

Contains the defintions of BlockTypes, BlockVariants, BlockModes and related elements (e.g data types)

Meta properties

References

blockTypes is containment for BlockType [0..*]

The existing BlockTypes in the BlockLibrary

variants is containment for BlockVariant [0..*]

The existing BlockVariants in the BlockLibrary

parameterTypes is containment for ParameterType [0..*]

The existing parameters in the BlockLibrary.

dataTypes is containment for DataType [0..*]

New basic data types can be defined in the BlockLibrary. The basic DataTypes are usually expected to be defined elsewhere, but it is likely that some block type specific datatypes are defined here.

SpecificationElement

A superclass for blocklibrary specification elements

Meta properties

  • Type: EClass
  • Abstract: true
  • Interface: false
  • Super type(s): Element

Operations

blockInstance () : PrimitiveBlock [0..1]

Provides a reference to the PrimitiveBlock (BlockType.blockImpl) instance. Unlike the BlockType.blockImpl reference, which refers to all instances of this BlockType in a model, the current operation only returns a reference to a single block instance that is being verified.

blockType () : BlockType [0..1]

In class BlockType returns reference to self.

In all other classes returns reference to the BlockType that contains self.

References

annotations is containment for Annotation [0..*]

Annotations associated with this element. Annotations of kind MODE_INVARIANT are used for inferring BlockMode/BlockVariant signatures and are part of the block instance matching (“Mode resolution”) process.

BlockMode

One full configuration of a BlockType. There can be several alternative combinations (Signatures) how the BlockVariants are combined to implement a BlockMode. However, in all these combinations (Signatures) the computation algorithm that the BlockType instance performs and the set of its structural and semantic constraints are the same.

Algorithmic specification

Variant_Signature of a BlockMode BM:
        A list of block variants that belong to a subgraph of the block type BT of BM so that from each ALT variant set only one variant is taken. The list is topologically ordered according to the inheritance relations between the variants. The ordering is made unique by enforcing the elements to be in the reverse depth-first order starting from BM and moving upwards along the inheritance links.

        NB! BM can have many signatures and we need also the notion of a “Variant Signature Set of BM”


Variant_Constraint_Signature:
        A conjunction of all the mode invariants in a variant signature

        NB! BM can have many signatures and we need also the notion of a “Constraint Signature Set of BM”

Port_Signature:
        A pair of lists of PortGroups <Input_Ports, Output_Ports> obtained by composing all input and output PortGroups in a Variant_Signature in the order of occurrence

Memory_Signature:
        A list of MemoryVariables, obtained by composing all MemoryVariables in a Variant_Signature in the order of occurrence.

Input_DataTypes:
        A list of DataTypes corresponding to the inputs part of the port signature.

            For PortGroups of size 1 (max_size = min_size) the type shall be portImpl[1].dataType (dataType of the corresponding Port)
            For PortGroups of other fixed size 1 (max_size <> min_size && max_size <> -1) the type shall be an array, with basetype = portImpl[1].dataType and length = max_size - min_size + 1
            For vararg PortGroups (max_size = -1) the type shall be an array, with basetype = portImpl.dataType and length = portImpl.length

Output_DataTypes:
        A list of DataTypes corresponding to the outputs part of the port signature. Same structure as Input_DataTypes.

Input_Values:
        A list of values corresponding to Input_DataTypes.

Output_Values:
        A list of values corresponding to Output_DataTypes.

Memory_DataTypes:
        A list of DataTypes corresponding to the memory part of the port signature. For each MemoryVariable the type shall be an array, with basetype = dataType and length = length

Memory_Values:
        A list of values corresponding to Memory_DataTypes.

Invariants

Unique_MemoryVariable_Names_In_Signature:
        self.signatures()->collect(sig : blocklibrary::addins::Signature|
                        sig.variants
                )->collect(bv: BlockVariant|
                        bv.memoryVariables
                )->forAll(mem1, mem2: MemoryVariable|
                        mem1 <> mem2 implies mem1.name <> mem2.name
                )

        -- All MemoryVariables in a Memory_Signature must be distinct

One_Port_Signature:
        self.signatures()->forAll(sig1, sig2: blocklibrary::addins::Signature|
                        let sig1Inputs : Sequence(PortGroup) = sig1.variants->collect(bv: BlockVariant|
                                bv.inputs
                        )->flatten() in
                        let sig1Outputs : Sequence(PortGroup) = sig1.variants->collect(bv: BlockVariant|
                                bv.outputs
                        )->flatten() in
                        let sig2Inputs : Sequence(PortGroup) = sig2.variants->collect(bv: BlockVariant|
                                bv.inputs
                        )->flatten() in
                        let sig2Outputs : Sequence(PortGroup) = sig2.variants->collect(bv: BlockVariant|
                                bv.outputs
                        )->flatten() in
                        sig1 <> sig2 implies (sig1Inputs = sig2Inputs and sig1Outputs = sig2Outputs)
                )

        -- In all different BlockVariant compositions (signatures) that a BlockMode implements the Port Signature must be exactly same:

        --      The number and order of PortGroups must be the same
        --      Respective PortGroups in different BlockVariant compositions (signatures) must have same names, datatypes and arity bounds. However, the value of the isVirtual flag can be different.

At_Most_One_VarArg_Port:
        let sigInputs : Set(PortGroup) =
                        self.signatures()->collect(sig: blocklibrary::addins::Signature|
                                sig.variants
                        )->flatten()->collect(var: BlockVariant|
                                var.inputs
                        )->flatten() in
                sigInputs->forAll(pg: PortGroup|
                        pg.max_size <> -1
                        -- xor sigInputs->last() = pg
                )

        -- There can be at most one vararg PortGroup per port signature of a BlockMode and such PortGroup must be the last one.

One_Memory_Signature:
        In all different BlockVariant compositions (signatures) that a BlockMode implements, the Memory Signature must be exactly same

        TODO: Is this not invalid regarding to the first invariant ??

Meta properties

Attributes

isDimensionalizable: EBoolean [1..1]

When this property is true, then the basic semantics of the block corresponds to a scalar operation. But, it is allowed to apply the block to non-scalar data and/or parameters.

In BlockMode this is a derived property that is True iff all the directly implemented BlockVariants are dimensionalizable.

Invariants

Dimensionalizable_Implies_Outputs_Dimensionalizable:
        self.isDimensionalizable implies
                self.signatures()->forAll(sig: blocklibrary::addins::Signature|
                        sig.variants->collect(bv: BlockVariant|
                                bv.outputs
                        )->flatten()->forAll(pg: PortGroup|
                                pg.isDimensionalizable
                        )
                )

When isDimensionalizable = True:
        The forwardTyping rule and typingInvariants only specify scalar typing rules

        The effective typing is derived from the dimensions of the dimensionalizable inputs and parameters taking into accound Scalar Expansion and Vector Promotion

                For Example

                        Input port I1 corresponds to a dimensionalizable PortGroup and in the model instance and it is connected to a
                        2x3 matrix and all dimensionalizable parameters are either scalar or 2x3 matrices -> Output is a 2x3 matrix
                        scalar signal, dimensionalizable parameter A is scalar, dimensionalizable parameter B is a 3-element vector and dimensionalizable parameter C is a 1x3 matrix -> Output is a 1x3 matrix

                All dimensionalizable output ports are handled the same way. They shall all have same effective dimensions

                The block’s semantics and logical properties are applied element-wise to the elements in dimensionalizable output ports

                        The init, compute and update semantic functions are specified in scalar mode for dimensionalizable inputs, parameters and outputs

                        These semantic functions are effectively

                                wrapped into an appropriate number of iterations over the effective output dimensions
                                occurrences of dimensionalizable inputs, parameters and outputs in the semantic functions’ definitions are indexed according to their dimensions and the loop variables (i.e. scalar elements are not indexed, vectors are indexed by a suitable loop variable, matrices and higher dimensional data are indexed by an appropriate number of loop variables)

        The requiredMemory function returns the memory requirement in the scalar case. Effectively required memory is this value times the number of elements in the effective output dimensions (e.g. 6 for 2x3 matrix output)

isDynamic: EBoolean [0..1]

This flag specifies if the BlockMode is dynamic, ie if for each of its Signatures there is at least one BlockVariant that is itself Dynamic.

Invariants

isDynamic_def:
        self.signatures()->forAll(s|not s.variants->select(v|v.isDynamic)->isEmpty())

Operations

signatures () : Signature [0..*]

Computes the list of BlockMode signatures.

Algorithmic specification

body:
        if (self.isTypeOf(BlockVariant)) then
                TODO
        else
                TODO
        endif

References

initSemantics is reference to Annotation [0..1]

Specification of the block’s initialization in this mode (configuration).

Invariants

Function_IO:
        not(initSemantics.oclIsUndefined()) implies initSemantics.kind = AnnotationKind::DEFINITION

        -- The definition takes as input the block’s parameters (can be implicit)
        -- The function returns Output_Values and Memory_Values

computeSemantics is reference to Annotation [1..1]

Specification of the computation of the block’s output in this mode (configuration).

Invariants

Function_IO:
        computeSemantics.kind = AnnotationKind::DEFINITION

        -- The definition takes as input the block’s parameters (can be implicit), Input_Values and Memory_Values
        -- The function returns Output_Values

updateSemantics is reference to Annotation [0..1]

Specification of the memory update phase of the block in this mode (configuration).

Invariants

Function_IO:
        not (updateSemantics.oclIsUndefined()) implies updateSemantics.kind = AnnotationKind::DEFINITION

        -- The definition takes as input the block’s parameters (can be implicit), Input_Values and Memory_Values
        -- The function returns Memory_Values

typingInvariant is reference to Annotation [0..*]

Typing correctness specification of the types of the Block’s inputs and outputs in this mode

Invariants

TypingInvariant_Is_Invariant:
        typingInvariant->forAll(t : Annotation |
                t.kind = AnnotationKind::INVARIANT
        )

forwardTyping is reference to Annotation [0..1]

Specification for typing the Block’s outputs according to its inputs and parameters in this mode (configuration).

Invariants

Function_IO:
        not(forwardTyping.oclIsUndefined()) implies forwardTyping.kind = AnnotationKind::DEFINITION

        -- The definition takes as input the block’s parameters (can be implicit) and Input_Ports
        -- The function returns Output_DataTypes

implements is containment for VariantSet [1..*]

Specifies the implemented BlockVariants and relations between them.

  • Todo

    Discuss: Discuss the extent of restrictions that can be placed on implemented BlockVariants.

  • Note

    Implementation: Note that this is a restricted form of implementation. The BlockMode can place additional costraints on the implemented BlockVariants. A common example is that the BlockVariant may specify more alternative behaviours than the BlockMode (or entire BlockType) supports.

requiredMemory is reference to Annotation [0..1]

Returns the memory required by this BlockMode. This is a derived function that is the sum of all the memory variables defined in the BlockVariants in a Signature implemented by this BlockMode (different signatures must have same memory requirements, see constraint in BlockMode). I.e. it is union of the length and dataType functions of all contained MemoryVariables.

  • The definition takes as input the block’s parameters and input ports (can be implicit)

    – The data type of memory is likely to be dependent on the input data type

  • The function returns a multiset of datatypes, where each memory variable is represented by as many copies of its datatype, as its length

Invariants

required_memory_value_is_derived:
        not(requiredMemory.oclIsUndefined()) implies requiredMemory.isDerived

required_memory_value_is_definition:
        not(requiredMemory.oclIsUndefined()) implies requiredMemory.kind = AnnotationKind::DEFINITION

BlockType

A specification of a block type.

Meta properties

Attributes

category: EString [0..1]

References

modes is containment for BlockMode [1..*]

BlockModes used by a BlockType

variants is containment for BlockVariant [0..*]

BlockVariants used by a BlockType.

blockImpl is reference to PrimitiveBlock [0..*]

A reference to PrimitiveBlocks implementing this specification (BlockType).

BlockVariant

A variation point of the BlockType structure (or semantics). Initially, targeting structural specification of the BlockType.

Meta properties

Attributes

isDimensionalizable: EBoolean [1..1]

When this property is true, then the basic semantics of the block corresponds to a scalar operation. But, it is allowed to apply the block to non-scalar data and/or parameters. Further details are specified under the corresponding attribure in BlockMode.

Invariants

Dimensionalizable_Implies_Outputs_Dimensionalizable:
        self.isDimensionalizable implies self.outputs->forAll(pg: PortGroup|
                        pg.isDimensionalizable
                )

specifiesDynamic: EBoolean [1..1]

Whether or not starting from this BlockVariant all the sub-BlockVariants are specifying a dynamic behavior.

Operations

features () : StructuralFeature [0..*]

Returns the list of Features contained in this BlockVariant.

Algorithmic specification

body:
        union(self.parameters, self.inputs, self.outputs, self.memoryGroups)

signatures () : Signature [0..*]

Computes the list of BlockMode signatures.

Algorithmic specification

body:
        if (self.isTypeOf(BlockVariant)) then
                TODO
        else
                TODO
        endif

References

inputs is containment for PortGroup [0..*]

The existing PortGroups in a BlockVariant that are mapped to input ports of a block.

outputs is containment for PortGroup [0..*]

The existing PortGroups in a BlockVariant that are mapped to output ports of a block.

subVariants is reference to BlockVariant [0..*]

The BlockVariants extending a BlockVariant. Rq: This reference is a relation to all the BlockVariants that may extend this BlockVariants. It does not take care of the VariantSet.operator value.

parameters is containment for ParameterType [0..*]

The existing ParameterTypes in a BlockVariant.

memoryVariables is containment for MemoryVariable [0..*]

Memory variables required by a BlockVariant.

extends is containment for VariantSet [0..*]

Specifies the extended BlockVariants and relations between them.

Note that this similarly to BlockMode.implements, this is a restricted form of implementation. See more in the comments of BlockMode.implements.

MemoryVariable

Defines one memory variable for particular usage in the block semantics. For each memory variable there must its data type and legth (depth) of history specified.

Invariant Name_Not_Empty: Name <> “”

Meta properties

References

length is containment for Annotation [1..1]

A function that returns the length (depth of history) of this memory variable.

Only static memory is considered. I.e. the length must be deriveable from the block instance’s parameters

Invariants

Function_IO:
        length.kind = AnnotationKind::DEFINITION

        -- The definition takes as input the block’s parameters (can be implicit)
        -- The function must return a positive integer

dataType is containment for Annotation [1..1]

A function that returns the datatype of this memory variable. Tha datatype can be non-scalar. Length (depth of history) of the memory variable is specified separaetely in the “length” function.

Invariants

Function_IO:
        dataType.kind = AnnotationKind::DEFINITION


        -- The definition takes as input the block's parameters (can be implicit) and Input_Ports

        --      The data type of memory is likely to be dependent on the input data type

        -- The function must return a DataType

ParameterType

A specification of a Parameter type.

Invariants

Mandatory_Behavior:
        not(mandatory) implies not(defaultValue.oclIsUndefined())

Meta properties

Attributes

mandatory: EBoolean [0..1]

Defines if the parameter is mandatory (must be defined in any Parameter instance) or not.

isDimensionalizable: EBoolean [1..1]

Only applicable, when the object is contained in a dimensionalizable BlockVariant. In that case specifies, whether the current object is dimensionalizable, or should be treated “as is”.

Invariant Dimensionalizable_Requires_Dimensionalizable_Container:

isDimensionalizable = True => This.container.isDimensionalizable = True

Invariant Dimensionalizable_Parameter_Scalar:

isDimensionalizable = True => forall DT of allowedTypes : DT.isScalar = True

Invariants

Dimensionalizable_Requires_Dimensionalizable_Container:
        self.isDimensionalizable implies self.oclContainer().isDimensionalizable

Dimensionalizable_Parameter_Scalar:
        isDimensionalizable implies self.allowedTypes->forAll(dt: blocklibrary::datatypes::DataType|
                dt.Is_Scalar()
        )

References

allowedTypes is reference to DataType [1..*]

The DataType of the ParameterType.

parameterImpl is reference to Parameter [0..*]

A reference to Parameter that implements this specification (ParameterType).

defaultValue is containment for Expression [0..1]

The default value of this parameter.

implements is reference to PortGroup [0..1]

PortGroup

A PortGroup is a set of ports that are used for a common functionnality of the block. They may for example have a common behavior.

Invariants

Name_Not_Empty:
        name <> ''

        -- Ports in Primitiveblock are generally not named, but PortGroups must be named to avoid ambiguities and confusion in composing different BlockVariant hierarchies

Meta properties

Attributes

min_size: EInt [0..1]

The minimum size of the PortGroup. The datatype of this attribute is String but only Integers String representation are accepted as a value.

max_size: EInt [0..1]

The maximum size of the port group. -1 designates a vararg port group. The datatype of this attribute is String but only Integers String representation are accepted as a value.

kind: PortKind [1..1]

This enumeration attibute holds the PortGroup kind. So wether it is an input or output port for data/event/enable signals.

isDimensionalizable: EBoolean [1..1]

Only applicable, when the object is contained in a dimensionalizable BlockVariant. In that case specifies, whether the current object is dimensionalizable, or should be treated “as is”.

Invariant Dimensionalizable_Requires_Dimensionalizable_Container:

isDimensionalizable = True => This.container.isDimensionalizable = True

Invariant Dimensionalizable_Port_Scalar:

isDimensionalizable = True => forall DT of allowedTypes : DT.isScalar = True

Invariants

Dimensionalizable_Requires_Dimensionalizable_Container:
        self.isDimensionalizable implies self.oclContainer().isDimensionalizable

Dimensionalizable_PortGroup_Scalar:
        isDimensionalizable implies self.allowedTypes->forAll(dt: blocklibrary::datatypes::DataType|
                dt.Is_Scalar()
        )

isVirtual: EBoolean [0..1]

Invariants

Is_Input:
        self.oclContainer().oclAsType(BlockVariant).inputs->includes(self)
  • Todo

    Documentation: Needs documentation here

References

allowedTypes is reference to DataType [1..*]

The DataType of the PortGroup.

portImpl is reference to Port [0..*]

A reference to Port that implements this specification (PortGroup).

feedThroughPorts is reference to Annotation [0..*]

A function that returns for a current input PortGroup the output PortGroups to which the current PortGroup has direct data feedthrough

Invariants

Only_Input_Ports:
        not(feedThroughPorts->isEmpty()) implies self.oclContainer().oclAsType(BlockVariant).inputs->includes(self)


Function_IO:
        feedThroughPorts->forAll(ftp : Annotation|
                ftp.kind = AnnotationKind::DEFINITION
        )

        -- The definition takes as input the block’s parameters (can be implicit)
        -- The function returns references to PortGroups that are in the “outputs” list of either the current or some extended BlockVariant
  • Note

    Question (ArDi): This reference is a containment ?

implementedBy is reference to ParameterType [0..1]

Invariant: PortGroup.isVirtual = True

AnnotationBlockType

An AnnotationBlockType is a special BlockType focused on the creation of annotation blocks. These blocks are used for expressing more global properties on the system (out of the block scope).

  • Todo

    Input signals: The input signals of the AnnotationBlocks must not generate code (it will be dead code). Instead it must generate “ghost” like code usable only in annotation scope. This consideration is more a code generator related feature but must be taken into account (in the annotation generation prototype this is the case).

    Pre or Post annotation: An annotation may be printed before or after its scope of application. See if this feature must be set in the blocklibrary specification

Meta properties

Attributes

kind: AnnotationKind [1..1]

The annotation block kind (will the annotation be printed as pre/post/invariants or automatically managed).

SubSystemAnnotationBlockType

The annotation block behave as a subsystem in Simulink. It will contain a system that will be interpreted as annotations.

Meta properties

MatlabAnnotationBlockType

The annotation block is close to the “Matlab function” block of Simulink. But it is here used to specify an expected behavior not a computation.

Meta properties

VariantSet

A VariantSet hold a set of BlockVariants implemented or extended by a BlockMode or a BlockVariant. The combination of the extended/implemented BlockVariants depends on the operator attribute of the VariantSet.

Invariants

one_variant_and_no_variantset_implies_AND_variantset:
        (variants->size() = 1 and extends->size() = 0) implies (operator = VariantSetOperator::AND)

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element

Attributes

operator: VariantSetOperator [1..1]

The relation holding between the variants (in the reference “variants”) for the implementor/extender (reverse reference “implements” or “extends”).

References

variants is reference to BlockVariant [0..*]

The set of BlockVariants that are related to this VariantSet and constrained by operator. This reference can be of multiplicity 0..* as it is possible for a VariantSet to contains only a VariantSet (cf extends reference).

extends is containment for VariantSet [0..*]

Extended VariantSet

Invariant ALT_Extends_Only_AND: operator = ALT => forall S in extends : S.operator = AND

Invariant AND_Extends_Only_ALT: operator = AND => forall S in extends : S.operator = ALT

Invariants

ALT_Extends_Only_AND:
        operator = VariantSetOperator::ALT implies self.extends->forAll(vs: VariantSet|
                vs.operator = VariantSetOperator::AND
        )

AND_Extends_Only_ALT:
        operator = VariantSetOperator::AND implies self.extends->forAll(vs: VariantSet|
                vs.operator = VariantSetOperator::ALT
        )

VariantSetOperator

The operator stating the relation between BlockVariants.

Meta properties

  • Type: EEnumeration
  • Default value: AND

Literals

AND : AND (0)

The BlockVariants are all implemented/extended for a BlockMode signature. The AND VariantSet is ordered.

ALT : ALT (1)

Only one BlockVariants is implemented/extended at a time for a BlockMode signature.

PortKind

This enumeration hold the different values for a PortGroup kind.

Meta properties

  • Type: EEnumeration
  • Default value: DATA_PORT

Literals

DATA_PORT : DATA_PORT (0)

A port holding data

ENABLE_PORT : ENABLE_PORT (1)

The port is an enabling port

EDGE_ENABLE_PORT : EDGE_ENABLE_PORT (2)

The port is an enabling on edge port

EVENT_PORT : EVENT_PORT (3)

The port is an event port

StructuralFeature

A Feature is an abstrac class for Parameters, ProtGroup and MemoryGroup. It allows to refer to all these elements as one type (useful in BlockVariant::getFeatures().

Meta properties

OperationParameter

Defines the parameter of an operation (input or output). Attributes ‘name’ and ‘definitionParameterDataType’ both optionals for implementation ease. Their multiplicities are managed according to the Invariants defined in the class context. Purpose of this is to be able to represent:
  • input parameters for ocl-like definitions: (b : Boolean, i: Integer)
  • output datatype of ocl-like definition: Boolean
  • input parameter for matlab-like functions: [b, i]
  • output variables for matlab-like functions: (out1, out2)

Invariants

name_not_defined_implies_type_defined:
        name.oclIsUndefined() implies not (definitionParameterDataType.oclIsUndefined())

type_not_defined_implies_name_defined:
        definitionParameterDataType.oclIsUndefined() implies not (name.oclIsUndefined())

Meta properties

References

definitionParameterDataType is reference to DataType [0..1]

A DataType for a Definition Annotation inputs/outputs parameters

TBLElement

Meta properties

  • Type: EEnumeration
  • Default value: BLOCK_TYPE

Literals

BLOCK_TYPE : BLOCK_TYPE (0)

BLOCK_VARIANT : BLOCK_VARIANT (1)

BLOCK_MODE : BLOCK_MODE (2)

PARAMETER : PARAMETER (3)

PORT : PORT (4)

MEMORY : MEMORY (5)

DATA_TYPE : DATA_TYPE (6)

blocklibrary::impl package

This package contains the elements taken from the implementation of blocks. They are provided by the tooling while importing a model as input of the code generator (or specification conformance verifier).

../_images/impl.png

Block

Meta properties

  • Type: EClass
  • Abstract: true
  • Interface: false
  • Super type(s): Element

Attributes

samplePeriod: EDouble [0..1]

The period at which the block executes. This value is needed in the computation algorithms of some block types such as Discrete Integrator and Delay. I.e. the SamplePeriod value must be referable also in the block semantic specification.

SampleRate is the reciprocal of SamplePeriod .

The time unit is generally arbitrary, but in Simulink it is conventionally taken to be 1 s.

References

parameters is reference to Parameter [0..*]

PrimitiveBlock

An instance of a PrimitiveBlock taken from a model. This instance must be mapped to a BlockType in order to check for its conformance to the specification of this block (BlockType).

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, Block

References

blockType is reference to BlockType [1..1]

A reference to the PrimitiveBlock specification (BlockType).

SystemBlock

A composite block that contains sub-blocks and signals between them

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, Block

References

blocks is reference to Block [0..*]

signals is reference to Signal [0..*]

Parameter

An instance of a Parameter taken from a block in a model. This instance must be mapped to a ParameterType in order to check for its conformance to the specification of this parameter (ParameterType).

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element

References

parameterType is reference to ParameterType [1..1]

A reference to the Parameter specification (ParameterType).

value is containment for Expression [1..1]

The value of the Parameter.

Port

An instance of a Port taken from a block in a model. This instance must be mapped to a PortGroup in order to check for its conformance to the specification of this port (PortGroup).

Meta properties

  • Type: EClass
  • Abstract: true
  • Interface: false
  • Super type(s): Element

References

portGroup is reference to PortGroup [1..1]

A reference to the Port specification (PortGroup).

dataType is reference to DataType [0..1]

Ports of kind DATA_PORT can have a dataType. However, it can be missing in the model. In this case it will be computed by one of the type derivation rules (forward or backward).

Signal

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element

References

source is reference to Port [1..1]

target is reference to Port [1..1]

blocklibrary::value package

This package contains elements from the Value package of the main GeneAuto MetaModel. This elements are here only for sake of prototyping.

../_images/value.png

EnumExpression

Meta properties

Expression

Meta properties

  • Type: EClass
  • Abstract: true
  • Interface: false
  • Super type(s): Element

References

dataType is reference to DataType [0..1]

The DataType for an Expression.

ParameterExpression

A reference to the value of the ParameterType. The metaclass references the ParameterType object and the reference to the value is implicit. The value does not exist in the ParamterType, but in its implementation. Resolving the correct Block and Parameter instance is up to the tool.

Meta properties

References

parameter is reference to ParameterType [1..1]

LiteralExpression

Meta properties

Attributes

litValue: EString [0..1]

blocklibrary::datatypes package

This package contains elements from the DataType package of the main GeneAuto MetaModel. This elements are here only for sake of prototyping. Custom type has been removed for the moment.

../_images/datatypes.png

DataType

Gene-Auto datatype. More abstract than C types: primitive types + Vector, Matrix, Complex numeric...

Meta properties

  • Type: EClass
  • Abstract: true
  • Interface: false
  • Super type(s): Element

Operations

Get_infoString () : EString [0..1]

Is_SingletonArray () : EBoolean [0..1]

Returns True if the DataType is a SingletonArray DataType.

Is_Scalar () : EBoolean [0..1]

Returns True if the DataType is a Scalar DataType.

Is_Vector () : EBoolean [0..1]

Returns True if the DataType is a Vector DataType

Is_Matrix () : EBoolean [0..1]

Returns True if the DataType is a Matrix DataType.

Is_SubtypeOf (dt : DataType) : EBoolean [0..1]

Returns True if the current DataType is a subtype of the provided DataType.

TEnum

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, DataType

References

values is containment for EnumExpression [0..*]

TBottom

Bottom type - a type with no elements. This type is currently not used in the implementation. It is used in graphical diagrams and formal expressions. In the implementation a null pointer is used instead. It could be used in the future.

Meta properties

  • Type: EClass
  • Abstract: true
  • Interface: false
  • Super type(s): Element, DataType

TComplexFloatingPoint

Meta properties

TComplexNumeric

Abstract base class for complex numeric data types. See also TRealNumeric.

Meta properties

TNumeric

Abstract base class for numeric data types

Meta properties

TPrimitive

Abstract base class for scalar data types

Meta properties

  • Type: EClass
  • Abstract: true
  • Interface: false
  • Super type(s): Element, DataType

TEvent

Event type

Meta properties

Operations

Get_infoString () : EString [0..1]

TRealFloatingPoint

Meta properties

Operations

scaleFor (Value : EFloat) : TRealFloatingPoint [0..1]

This is scaleFor operation documentation

TRealNumeric

Abstract base class for real numeric data types. See also TComplexNumeric.

Meta properties

TArray

Array data type

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, DataType

Attributes

dimensions: EInt [0..*]

A table containing the dimensions of the array. The datatype of this attribute is String but only Integers String representation are accepted as a value.

Operations

As_Column_Matrix () : TArray [0..1]

As_Row_Matrix () : TArray [0..1]

Get_dimensionValues () : EInt [0..*]

Get_infoString () : EString [0..1]

References

baseType is reference to TPrimitive [0..1]

TBoolean

Boolean data type

Meta properties

Operations

Get_infoString () : EString [0..1]

TComplexDouble

Meta properties

TComplexFixedPoint

Meta properties

Attributes

gain: EInt [0..1]

The datatype of this attribute is String but only Integers String representation are accepted as a value.

offset: EInt [0..1]

The datatype of this attribute is String but only Integers String representation are accepted as a value.

size: EInt [0..1]

The datatype of this attribute is String but only Integers String representation are accepted as a value.

TComplexInteger

Meta properties

Attributes

nBits: EInt [0..1]

The datatype of this attribute is String but only Integers String representation are accepted as a value.

signed: EBoolean [0..1]

TComplexSingle

Meta properties

TInherited

Inherited type - the element inherits its type by some fixed rule. In Gene-Auto an approach has been taken to distinguish an inherited type from an unknown type. In both cases the proper type of the element is unknown, but in the first case there is a specific rule given, how to deduce this type, while in the second case this information is missing or implicit. The type of the object must be resolved during the code generation process.

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, DataType

References

inheritanceRule is reference to TEnum [1..1]

TPointer

Pointer data type. Pointer can reference any object of any data type, including another pointer.

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, DataType

Operations

Get_infoString () : EString [0..1]

References

baseType is containment for DataType [0..1]

TRealDouble

ISO/IEC 9899 double-precision floating point

Meta properties

Operations

Get_infoString () : EString [0..1]

TRealFixedPoint

Meta properties

Attributes

gain: EInt [0..1]

Abstract base class for real numeric data types. See also TComplexNumeric. The datatype of this attribute is String but only Integers String representation are accepted as a value.

nBits: EInt [0..1]

Abstract base class for real numeric data types. See also TComplexNumeric. The datatype of this attribute is String but only Integers String representation are accepted as a value.

offset: EInt [0..1]

Abstract base class for real numeric data types. See also TComplexNumeric. The datatype of this attribute is String but only Integers String representation are accepted as a value.

TRealInteger

Integer data type with length defined in “nBits” attribute. The type of integer (signed/unsigned) is defined by “signed” attribute

Meta properties

Attributes

nBits: EInt [0..1]

signed: EBoolean [0..1]

Operations

Get_infoString () : EString [0..1]

scaleFor (Value : EInt) : TRealInteger [0..1]

TRealSingle

ISO/IEC 9899 floating point

Meta properties

Operations

Get_infoString () : EString [0..1]

TString

String data type

Meta properties

Operations

Get_infoString () : EString [0..1]

TVoid

Void data type as in C and Java. More formally, it is actually a unit type - a type with exactly one element. But conventionally this is called void.

Meta properties

Operations

Get_infoString () : EString [0..1]

TAbstractDataType

An abstract DataType is a place holder for collections of already declared DataTypes. This is for specification purpose only and is used for grouping types in more abstract containers.

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, DataType

References

contentDataTypes is reference to DataType [1..*]

The contained data types.

TBlockLibElement

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, DataType

Attributes

value: TBLElement [1..1]

TComplexArray

Array data type holding complex values

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, DataType

Attributes

dimensions: EInt [0..*]

A table containing the dimensions of the array. The datatype of this attribute is String but only Integers String representation are accepted as a value.

References

baseType is reference to DataType [0..1]

TChar

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, DataType

Attributes

code: EInt [0..1]

blocklibrary::addins package

../_images/addins.png

Signature

A signature for a BlockMode. Contains a set of BlockVariants. This set of BlockVariants is a “configuration” for the BlockMode.

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Attributes

isDynamic: EBoolean [0..1]

This flag specifies if the Signature is dynamic, ie if it should be put in the same behavior as other dynamic signatures with the same set of BlockVariants.

Invariants

isDynamic_def:
        not self.variants->select(v|v.isDynamic)->isEmpty()

Operations

invariants () : Annotation [0..*]

Retrieves all the invariants contained in this Signature.

Invariants

invariants_def:
        mode.annotations->select(a | a.kind = AnnotationKind.invariant or a.kind = AnnotationKind.mode_invariant)->union(variants->collect(v | v.annotations)->flatten()->select(a | a.kind = AnnotationKind.invariant or a.kind = AnnotationKind.mode_invariant))->union(mode.eContainer().annotations->select(a | a.kind = AnnotationKind.invariant or a.kind = AnnotationKind.mode_invariant))

features () : StructuralFeature [0..*]

Retrieves all the Features contained in this Signature.

Invariants

invariants_def:
        self.variants.inputs->union(self.variants->outputs)->union(self.variants.parameters)->union(self.variants.memoryVariables)

References

variants is reference to BlockVariant [1..*]

A set of BlockVariants.

mode is reference to BlockMode [1..1]

The BlockMode for this signature.

Contract

A behavior signature is a container for a set of Behaviors. Each BehaviorSignature is a container for a Block generated code specification. The annotations of each signature are a behavior in the contract generated for the BehaviorSignature.

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Attributes

id: EInt [1..1]

type: EString [1..1]

category: EString [0..1]

References

behaviors is containment for Behavior [0..*]

preconditions is reference to Annotation [0..*]

postconditions is reference to Annotation [0..*]

inputs is reference to PortGroup [0..*]

outputs is reference to PortGroup [0..*]

parameters is reference to ParameterType [0..*]

memories is reference to MemoryVariable [0..*]

Behavior

A behavior contains a set of pre and post conditions specifying a specific behavior for a BlockType

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Attributes

name: EString [0..1]

References

preconditions is reference to Annotation [0..*]

postconditions is reference to Annotation [0..*]

blocklibrary::constraints package

../_images/constraints.png

blocklibrary::constraints::ocl package

Progress/ocl.png

Module

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Attributes

name: EString [0..1]

References

imports is containment for Import [0..*]

elements is containment for ModuleElement [0..*]

Import

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Attributes

name: EString [0..1]

References

package is reference to EPackage [0..1]

ModuleElement

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

OclModuleElement

Meta properties

OclFeatureDefinition

Meta properties

References

feature is containment for EObject [0..1]

Attribute

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Attributes

name: EString [0..1]

References

type is reference to DataType [0..1]

initExpression is containment for OclExpression [0..1]

Operation

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Attributes

name: EString [0..1]

References

parameters is containment for ParameterExp [0..*]

returnType is reference to DataType [0..1]

body is containment for OclExpression [0..1]

ParameterExp

Meta properties

References

param is reference to OperationParameter [1..1]

OclInvariant

Meta properties

References

body is containment for OclExpression [0..1]

OclExpression

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

OclModelElementExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

References

elem is reference to Element [1..1]

OperatorCallExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

Attributes

operationName: EString [0..1]

References

source is containment for OclExpression [0..1]

PropertyCallExp

Meta properties

References

calls is containment for PropertyCall [0..*]

Auxiliary

Meta properties

Attributes

name: EString [0..1]

References

type is reference to DataType [0..1]

VariableExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

References

referredVariable is reference to VariableReferencePivot [0..1]

VariableDeclaration

Meta properties

Attributes

varName: EString [0..1]

SuperExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

SelfExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

StringExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

Attributes

stringSymbol: EString [0..1]

NumericExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

RealExp

Meta properties

Attributes

realSymbol: EDouble [0..1]

The value of this Real expression. The datatype of this attribute is String but only Integers String representation are accepted as a value.

IntegerExp

Meta properties

Attributes

integerSymbol: EInt [0..1]

The Integer value of this expression. The datatype of this attribute is String but only Integers String representation are accepted as a value.

CollectionExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

SimpleCollectionExp

Meta properties

References

elements is containment for OclExpression [0..*]

BagExp

Meta properties

OrderedSetExp

Meta properties

SequenceExp

Meta properties

SetExp

Meta properties

TupleExp

Meta properties

References

tuplePart is containment for TuplePart [0..*]

TuplePart

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Attributes

varName: EString [0..1]

References

type is containment for DataType [0..1]

initExpression is containment for OclExpression [0..1]

MapExp

Meta properties

References

elements is containment for MapElement [0..*]

MapElement

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

References

key is containment for OclExpression [0..1]

value is containment for OclExpression [0..1]

EnumLiteralExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

References

litValue is reference to LiteralExpression [0..1]

OclUndefinedExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

LetExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

References

variable is containment for LocalVariable [0..1]

in_ is containment for OclExpression [0..1]

IfExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

References

condition is containment for OclExpression [0..1]

thenExpression is containment for OclExpression [0..1]

elseExpression is containment for OclExpression [0..1]

BraceExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

References

exp is containment for OclExpression [0..1]

BooleanExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

Attributes

booleanSymbol: EString [0..1]

PropertyCall

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

OperationCall

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): PropertyCall

Attributes

operationName: EString [0..1]

References

arguments is containment for OclExpression [0..*]

IterateExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): PropertyCall

References

iterators is containment for Iterator [0..*]

result is containment for LocalVariable [0..1]

body is containment for OclExpression [0..1]

Iterator

Meta properties

IteratorExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): PropertyCall

Attributes

name: EString [0..1]

References

iterators is containment for Iterator [0..*]

body is containment for OclExpression [0..1]

CollectionOperationCall

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): PropertyCall

Attributes

operationName: EString [0..1]

References

arguments is containment for OclExpression [0..*]

LocalVariable

Meta properties

References

initExpression is containment for OclExpression [0..1]

OclType

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): Element, DataType

CollectionType

Meta properties

BagType

Meta properties

OrderedSetType

Meta properties

SequenceType

Meta properties

SetType

Meta properties

Primitive

Meta properties

OclAnyType

Meta properties

TupleType

Meta properties

References

attributes is containment for TupleTypeAttribute [0..*]

TupleTypeAttribute

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Attributes

name: EString [0..1]

References

type is containment for DataType [0..1]

OclModelElement

Meta properties

References

elem is reference to Element [1..1]

MapType

Meta properties

References

keyType is containment for DataType [0..1]

valueType is containment for DataType [0..1]

BoolOpCallExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

Attributes

operationName: EString [0..1]

References

source is containment for OperatorCallExp [0..1]

argument is containment for OperatorCallExp [0..1]

EqOpCallExp

Meta properties

References

argument is containment for OperatorCallExp [0..1]

RelOpCallExp

Meta properties

References

argument is containment for OperatorCallExp [0..1]

AddOpCallExp

Meta properties

References

argument is containment for OperatorCallExp [0..1]

MulOpCallExp

Meta properties

References

argument is containment for OperatorCallExp [0..1]

NotOpCallExp

Meta properties

DefinitionCallExp

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): OclExpression

References

annot is reference to Annotation [1..1]

arguments is containment for OclExpression [0..*]

blocklibrary::constraints::action package

Progress/action.png

ActionBlock

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

References

elements is containment for ActionBlockElement [1..*]

ActionBlockElement

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Attributes

ghost: EBoolean [0..1]

References

expression is containment for ActionExpression [0..1]

localVariable is containment for LocalVariable [0..1]

ActionExpression

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

VariableAssignmentExp

Meta properties

References

assignedVariable is containment for OperatorCallExp [1..1]

exp is containment for ActionExpression [1..1]

OperatorCallExp

Meta properties

Attributes

operationName: EString [0..1]

References

source is containment for ActionExpression [0..1]

BoolOpCallExp

Meta properties

References

argument is containment for OperatorCallExp [0..1]

EqOpCallExp

Meta properties

References

argument is containment for OperatorCallExp [0..1]

RelOpCallExp

Meta properties

References

argument is containment for OperatorCallExp [0..1]

AddOpCallExp

Meta properties

References

argument is containment for OperatorCallExp [0..1]

MulOpCallExp

Meta properties

References

argument is containment for OperatorCallExp [0..1]

NotOpCallExp

Meta properties

LocalVariable

Meta properties

Attributes

name: EString [1..1]

References

init is containment for ActionExpression [0..1]

BLModelElementExp

Meta properties

References

elem is reference to Element [1..1]

VariableExp

Meta properties

References

referredVariable is reference to VariableReferencePivot [0..1]

referredDefinition is reference to Annotation [0..1]

ParenthesisExp

Meta properties

References

exp is containment for ActionExpression [1..1]

ITEExpression

Meta properties

References

condition is containment for ActionExpression [1..1]

then is containment for ActionBlock [1..1]

else is containment for ActionBlock [0..1]

ForExpression

Meta properties

References

iter is containment for LocalVariable [1..1]

condition is containment for ActionExpression [1..1]

update is containment for ActionExpression [1..1]

block is containment for ActionBlock [1..1]

WhileExpression

Meta properties

References

condition is containment for ActionExpression [1..1]

block is containment for ActionBlock [1..1]

StringExp

Meta properties

Attributes

stringSymbol: EString [0..1]

NumericExp

Meta properties

RealExp

Meta properties

Attributes

realSymbol: EDouble [0..1]

The value of this Real expression. The datatype of this attribute is String but only Integers String representation are accepted as a value.

IntegerExp

Meta properties

Attributes

integerSymbol: EInt [0..1]

The Integer value of this expression. The datatype of this attribute is String but only Integers String representation are accepted as a value.

BooleanExp

Meta properties

Attributes

booleanSymbol: EString [0..1]

EnumLiteralExp

Meta properties

References

litValue is reference to LiteralExpression [0..1]

PropertyCallExp

Meta properties

References

calls is containment for PropertyCall [0..*]

OperationCall

Meta properties

Attributes

operationName: EString [0..1]

References

arguments is containment for ActionExpression [0..*]

PropertyCall

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

AttributeCall

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): PropertyCall

Attributes

name: EString [1..1]

SquareBracketCall

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s): PropertyCall

References

exp is containment for ActionExpression [0..1]

blocklibrary::constraints::pivot package

Progress/pivot.png

VariableReferencePivot

Meta properties

  • Type: EClass
  • Abstract: false
  • Interface: false
  • Super type(s):

Table Of Contents

Previous topic

Welcome to the BlockLibrary documentation!

Next topic

OCL language metamodel

This Page