SCL Extensions
- SCL Factory Extensions
- SCL Create Extensions
- SCL Naming Extensions
- SCL Ordering Extensions
- SCL Statement Extensions
- SCL Thread Extensions
- SCL Goto Extensions
- SCL Expression Extensions
- SCL Dependency Extensions
- SCL Basic Block Extensions
There are several extensions implemented to ease the work with a scl model. (de.cau.cs.kieler.scl.extensions)
SCL Factory Extensions
You need several Factories to handle all aspects of Yakindu (SGraph + SText) and the extended SCChart models. The SCL Factory Extension provides you with shortcuts for all factories.
Shortcut | Factory | Description |
---|---|---|
SGraph() | SGraphFactory::eINSTANCE | Factory for yakindu statechart models |
SText() | StextFactory::eINSTANCE | Factory for yakindu expressions |
SyncGraph() | SyncgraphFactory::eINSTANCE | Factory for sgraph extensions |
SyncText() | SynctextFactory::eINSTANCE | Factory for stext extensions |
SCCExp() | SCChartsExpFactory::eINSTANCE | Factory for SCCharts specific expression extensions |
SCL() | SclFactory::eINSTANCE | Factory for SCL |
SCL Create Extensions
coming soon...
SCL Naming Extensions
SCL Naming Extensions provide helper functions for ID & naming services.
Method | Description |
---|---|
def void distributeStateIDs(Statechart) | Since yakindu does not make use of the ID field, one can use this method to make every ID in a statechart unique. |
def String getHierarchicalName(SyncState, String) | Generates a (most likely unique) name for a state. The name is generated from all parent states and regions, which are separated by an underscore. If a region or state has no name, the element's hash code is used instead. |
SCL Ordering Extensions
The Ordering Extensions provide functions, which can be used in the xtend sort context.
Method | Description |
---|---|
def int compareSCLRegionStateOrder(SyncState, SyncState) | Sorts states according to their type. Initial states come first, final states last. |
SCL Statement Extensions
coming soon...
SCL Thread Extensions
The Thread Extensions provide functions to ease the handling of SCL threads and statements in the context of SCL threads.
Method | Description |
---|---|
def AbstractThread getThread(Instruction) def AbstractThread getThread(Statement) | Returns the SCL thread of a SCL statement or SCL instruction. |
def AbstractThread getMainThread(Instruction) def AbstractThread getMainThread(Statement) | Returns the main thread of a SCL program. |
def Statement[] getControlFlow(Instruction) def Statement[] getControlFlow(Statement) | Returns the control flow of an instruction/statement up to the parent of this control flow. In contrast to a thread this also includes control flows of conditional instructions. |
def boolean isInSameThreadAs(Instruction, Instruction) def boolean isInSameThreadAs(Statement, Statement) | Returns true, if both instructions/statements are in the same thread. |
def boolean isInMainThread(Instruction) def boolean isInMainThread(Statement) | Returns true, if the instruction/statement runs in the main thread. |
def boolean isInThread(Instruction, AbstractThread) def boolean isInThread(Statement, AbstractThread) | Returns true, if the instruction/statement runs in the given thread. |
def boolean contains(AbstractThread, Instruction) def boolean contains(AbstractThread, Statements) | Returns true, if the thread contains the given instruction/statement. |
def dropPrevious(AbstractThread, Statement) def dropPrevious(List<Statement>, Statement) | Drops all preceding statements in a thread or a list of statements before the given statement. |
def Statement getPreviousStatement(Statement) | Returns the preceding statement. |
def Statement getPreviousStatementHierarchical(Statement) | Returns the preceding statement or the parent statement of that control flow, if no preceding statement is present. |
def InstructionStatement getPreviousInstructionStatement(Statement) | Returns the preceding instruction statement. Empty statements are ignored. |
def InstructionStatement getPreviousInstructionStatementHierarchical(Statement) | Returns the preceding instruction statement or the parent statement of that control flow, if no preceding statement is present. |
SCL Goto Extensions
To help with the handling of the goto statement and its target instruction, use the SCL Goto Extensions.
Method | Description |
---|---|
def Statement getTargetStatement(Goto) def Statement getTargetStatement(Goto, AbstractThread) | Returns the target statement of a goto instruction (in the context of the (given) thread). |
def boolean targetExists(Goto) def boolean targetExists(Goto, AbstractThread) | Returns true, if the target of a goto instruction exists (in the context of the (given) thread). |
def InstructionStatement getInstructionStatement(Statement) | Returns the first valid InstructionStatement in a thread after the given statement. May return null, if no further InstructionStatement exists. To get a valid instruction form a goto jump, one can write "goto.getTargetStatement?.getInstructionStatement?.instruction". The result value will be the instruction or null. |
def getIncomingGotos(Statement) | Returns a list of all gotos that target the given statement. If you want to retrieve the count of incoming goto jumps, use "getIncomingGotos.size". |
SCL Expression Extensions
The SCL Expression Extension holds methods to help with the manipulation and constructions of the SText (and extended) expressions.
Method | Description |
---|---|
def Expression toExpression(RegularEventSpec) | Transforms a SGraph RegularEventSpec to a SText Expression. The resulting expression will be an ElementReferenceExpression. |
def Expression negate(Expression) | Negates the given expression. If the Expression is an ElementReferenceExpression the result will be a LogicalNotExpression containing the expression. Otherwise the result will be a LogicalNotExpression containing a ParenthesizedExpression, which then holds the original expression. |
def String correctSerialization(String) | Since the actual implementation of the SText parser may parse artefacts (like linebreaks) until matching a preceding delimeter, correctSerialization removes these artifacts, when serializing an expression. |
SCL Dependency Extensions
coming soon...
SCL Basic Block Extensions
coming soon...