[304642] Additional OCLstdlib syntax documentation
diff --git a/doc/org.eclipse.ocl.doc/doc/1200-oclinecore.textile b/doc/org.eclipse.ocl.doc/doc/1200-oclinecore.textile index 8fd6994..d11d143 100644 --- a/doc/org.eclipse.ocl.doc/doc/1200-oclinecore.textile +++ b/doc/org.eclipse.ocl.doc/doc/1200-oclinecore.textile
@@ -261,7 +261,7 @@ An Operation may be static and has a name and optionally template parameters. -The @static@ qualifier supports declaration of static properties which are supported by UML and OCL. Note that Ecore does not support static properties. +The @static@ qualifier supports declaration of static operations which are supported by UML and OCL. Note that Ecore does not support static operations. The @definition@ qualifier is an obsolete experimental syntax for Complete OCL definitions. @@ -271,7 +271,7 @@ !{width:60%}images/1200-operation3.png(OCLinEcore Operation Syntax Part 3)! -An Operation may may have a return "Type":#OCLinEcore-TypeRef and multiplicity. +An Operation may have a return "Type":#OCLinEcore-TypeRef and multiplicity. !{width:60%}images/1200-operation4.png(OCLinEcore Operation Syntax Part 4)!
diff --git a/doc/org.eclipse.ocl.doc/doc/1300-complete-ocl.textile b/doc/org.eclipse.ocl.doc/doc/1300-complete-ocl.textile index cbe9306..9458198 100644 --- a/doc/org.eclipse.ocl.doc/doc/1300-complete-ocl.textile +++ b/doc/org.eclipse.ocl.doc/doc/1300-complete-ocl.textile
@@ -276,3 +276,4 @@ h4(#CompleteOCL-UnrestrictedName). UnrestrictedName The Complete OCL has two additional built-in types: @OclMessage@ and @OclState@. These names and the "Essential OCL RestrictedNames":#EssentialOCL-UnrestrictedName are not available without qualification or escaping. +
diff --git a/doc/org.eclipse.ocl.doc/doc/1400-oclstdlib.textile b/doc/org.eclipse.ocl.doc/doc/1400-oclstdlib.textile index 33f410f..8b9e91d 100644 --- a/doc/org.eclipse.ocl.doc/doc/1400-oclstdlib.textile +++ b/doc/org.eclipse.ocl.doc/doc/1400-oclstdlib.textile
@@ -12,18 +12,57 @@ !{width:60%}images/1400-library1.png(OCL Standard Library Document Syntax Part 1)! +Zero or more library documents may be imported for use within the composite library whose name must be specified. + !{width:60%}images/1400-library2.png(OCL Standard Library Document Syntax Part 2)! +A namespace prefix and namespace URI may optionally be specified. + !{width:60%}images/1400-library3.png(OCL Standard Library Document Syntax Part 3)! +The body of the document comprises +* optional module declaration +* optional specification of the OCL Standard libraries +* optional import of referenced Ecore or UML or OCLinEcore resources +* "Precedences":#OCLstdlib-Precedence +* a hierarchy of "Packages":#OCLstdlib-Package +* a hierarchy of "Classifiers":#OCLstdlib-Classifier +* Annotations + +!{width:60%}images/1400-library.png(OCL Standard Library Document Library Import Syntax)! + +Zero or more external libraries may be imported so that their definitions are merged to form a composite library of basic and extended evaluation capability. + +The default library may be extended by specifying it as the first library import. + +bc.. +library 'http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib' +p. + +The namespace URI of the first library package defines the namespace URI of the composite library. The namespace URI of subsequent library imports may not conflict, but may be null. + +h4(#OCLstdlib-Precedence). Precedence + +The Precedence syntax defines the precedence and associativity of infix operators. + +!{width:60%}images/1400-precedence.png(OCL Standard Library Precedence Syntax)! + +Each entry in a list of precedences names a precedence level taht can then be used by an infix operator. Each level can be either left or right associative. + +Multiple lists of precedence levels can be merged from imported libraries provided the lists are interleaveable with conflict or ambiguity. + h4(#OCLstdlib-Package). Package -The Package syntax defines a hierarchy of packages. +The Package syntax defines a nested hierarchy of packages and classifiers . !{width:60%}images/1400-package1.png(OCL Standard Library Package Syntax Part 1)! +A Package has a name and optionally a namespace prefix and namespace URI. + !{width:60%}images/1400-package2.png(OCL Standard Library Package Syntax Part 2)! +The content of a Package may comprise "Packages":#OCLstdlib-Package, "Classifiers":#OCLstdlib-Classifier and Annotations. + h4(#OCLstdlib-Classifier). Class and Classifier The Class and Classifier syntax define a type within a Package. @@ -32,50 +71,78 @@ !{width:60%}images/1400-class1.png(OCL Standard Library Class Syntax Part 1)! +A Class has a name and optionally template parameters. A class may also name the metatype such as @PrimitiveType@ that the Class is an instance of. + !{width:60%}images/1400-class2.png(OCL Standard Library Class Syntax Part 2)! +A Class may extend one or more other Classes that may be specialized using the template parameters. + !{width:60%}images/1400-class3.png(OCL Standard Library Class Syntax Part 3)! +The content of a Class may comprise "Operations":#OCLstdlib-Operation, "Properties":#OCLstdlib-Property, "Invariants":#OCLstdlib-Inv and Annotations. + h4(#OCLstdlib-Inv). Inv -The Pre syntax defines an invariant constraint. +The Inv syntax defines an invariant constraint. !{width:60%}images/1400-inv.png(OCL Standard Library Inv Syntax)! h4(#OCLstdlib-Operation). Operation -The Operation syntax defines an Operation or Iteration. +The general Operation syntax defines a conventional Operation or Iteration. !{width:60%}images/1400-operation.png(OCL Standard Library Operation Syntax)! h4(#OCLstdlib-LibOperation). LibOperation -The LibOperation syntax defines an Operation. +The LibOperation syntax defines a conventional Operation. !{width:60%}images/1400-operation1.png(OCL Standard Library LibOperation Syntax Part 1)! +An Operation may be static and has a name and optionally template parameters. + !{width:60%}images/1400-operation2.png(OCL Standard Library LibOperation Syntax Part 2)! +An Operation has zero of more "Parameters":#OCLstdlib-Parameter. + !{width:60%}images/1400-operation3.png(OCL Standard Library LibOperation Syntax Part 3)! +An Operation has a return Type. An infix operation may specify a precedence level. An operation may specify the name of a Java class implementing the org.eclipse.ocl.examples.library.LibraryOperation interface. This class is used when evaluating the operation. + !{width:60%}images/1400-operation4.png(OCL Standard Library LibOperation Syntax Part 4)! +The content of an Operation may comprise "Preconditions":#OCLstdlib-Pre, "Postconditions":#OCLstdlib-Post and Annotations. + +The @static@ qualifier supports declaration of static library operations such as @allInstances()@ that are invoked on types rather than objects. + h4(#OCLstdlib-LibIteration). LibIteration The LibIteration syntax defines an Iteration. !{width:60%}images/1400-iteration1.png(OCL Standard Library LibIteration Syntax Part 1)! +An Iteration has a name and optionally template parameters. + !{width:60%}images/1400-iteration2.png(OCL Standard Library LibIteration Syntax Part 2)! +An Iteration has one or more comma-separated "Iterators":#OCLstdlib-Iterator. + !{width:60%}images/1400-iteration3.png(OCL Standard Library LibIteration Syntax Part 3)! +Optionally following a semicolon, an Iteration has one or more comma-separated "Accumulators":#OCLstdlib-Accumulator. + !{width:60%}images/1400-iteration4.png(OCL Standard Library LibIteration Syntax Part 4)! +Optionally following a bar, an Iteration has one or more comma-separated "Parameters":#OCLstdlib-Parameter. + !{width:60%}images/1400-iteration5.png(OCL Standard Library LibIteration Syntax Part 5)! +An Iteration has a return Type. An Iteration may specify the name of a Java class implementing the org.eclipse.ocl.examples.library.LibraryIteration interface. This class is used when evaluating the iteration. + !{width:60%}images/1400-iteration6.png(OCL Standard Library LibIteration Syntax Part 6)! +The content of an Iteration may comprise "Preconditions":#OCLstdlib-Pre, "Postconditions":#OCLstdlib-Post and Annotations. + h4(#OCLstdlib-Iterator). Iterator The Iterator syntax defines an Iterator. @@ -88,7 +155,7 @@ !{width:60%}images/1400-accumulator.png(OCL Standard Library Accumulator Syntax)! -h4(#OCLstdlib-Precedence). Parameter +h4(#OCLstdlib-Parameter). Parameter The Parameter syntax defines a Parameter. @@ -106,14 +173,20 @@ !{width:60%}images/1400-post.png(OCL Standard Library Post Syntax)! -h4(#OCLstdlib-LibProperty). LibProperty +h4(#OCLstdlib-Property). LibProperty The LibProperty syntax defines an Property. !{width:60%}images/1400-property1.png(OCL Standard Library LibProperty Syntax Part 1)! +An Property may be static and has a name and a Type. + !{width:60%}images/1400-property2.png(OCL Standard Library LibProperty Syntax Part 2)! +A Property may specify the name of a Java class implementing the org.eclipse.ocl.examples.library.LibraryProperty interface. This class is used when evaluating the iteration. + +The content of a Property may comprise Annotations. + h4(#OCLstdlib-Specification). Specification The Specification syntax integrates an OCL Expression as the specification of a constraint.
diff --git a/doc/org.eclipse.ocl.doc/doc/images/1400-library.png b/doc/org.eclipse.ocl.doc/doc/images/1400-library.png new file mode 100644 index 0000000..5cd586e --- /dev/null +++ b/doc/org.eclipse.ocl.doc/doc/images/1400-library.png Binary files differ