added OclLib (package: UML_OCL) implementation

git-svn-id: https://projects.brucker.ch/su4sml/svn/infsec-import/trunk/src/su4sml@5397 3260e6d1-4efc-4170-b0a7-36055960796d
This commit is contained in:
Achim D. Brucker 2006-10-04 08:03:29 +00:00
parent f3947ff40f
commit 1f76d533a8
7 changed files with 967 additions and 3 deletions

View File

@ -68,6 +68,7 @@ use "rep_ocl.sml";
use "rep_state_machines.sml";
use "rep_activity_graphs.sml";
use "rep_core.sml";
use "ocl_library.sml";
(* use "rep_secureuml.sig"; *)
(* use "rep_secureuml.sml"; *)
use "rep.sml";

939
src/ocl_library.sml Normal file
View File

@ -0,0 +1,939 @@
(*****************************************************************************
* su4sml - a SecureUML repository for SML
*
* ocl_library.sml -
* Copyright (C) 2006 Achim D. Brucker <brucker@inf.ethz.ch>
* Jürgen Doser <doserj@inf.ethz.ch>
*
* This file is part of su4sml.
*
* su4sml is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* su4sml is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
******************************************************************************)
signature OCL_LIBRARY=
sig
val oclLib : Rep_Core.Classifier list
end
structure OclLibrary : OCL_LIBRARY=
struct
open Rep_Core
open Rep_OclType
val OclLibPackage="UML_OCL"
val oclLib =
[Template
{
parameter = TemplateParameter "T",
classifier = Class
{
interfaces=[],attributes=[],
associationends=[],
activity_graphs=[],
invariant=[],
name=["Sequence(T)"],
operations=[
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,
name="count",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Integer"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Sequence(T)"])],
isQuery=true,
name="=",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Sequence(T)"])],
isQuery=true,
name="==",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Sequence(T)"])],
isQuery=true,
name="~=",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Sequence(T)"])],
isQuery=true,
name="~==",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Sequence(T)"])],
isQuery=true,
name="~=~",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Sequence(T)"])],
isQuery=true,
name="~==~",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Sequence(T)"])],
isQuery=true,
name="union",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],
isQuery=true,
name="flatten",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("object", Classifier [OclLibPackage,"T"])],
isQuery=true,
name="append",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,
name="prepend",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("index",Classifier [OclLibPackage,"Integer"]),
("object",Classifier [OclLibPackage,"T"])],
isQuery=true,name="insertAt",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("lower",Classifier [OclLibPackage,"Integer"]),
("upper",Classifier [OclLibPackage,"Integer"])],
isQuery=true,
name="subSequence",postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("i",Classifier [OclLibPackage,"Integer"])],
isQuery=true,
name="at",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"T"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("obj",Classifier [OclLibPackage,"T"])],
isQuery=true,
name="indexOf",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Integer"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],
isQuery=true,
name="first",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"T"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],
isQuery=true,
name="last",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"T"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,
name="including",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,
name="excluding",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],
isQuery=true,
name="asSet",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],
isQuery=true,
name="asSequence",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],
isQuery=true,
name="asBag",
postcondition=[],
precondition=[],
result=Classifier [OclLibPackage,"Bag(T)"],
scope=XMI.InstanceScope,
visibility=XMI.public
}],
parent=NONE,
stereotypes=[],thyname=NONE
}: Rep_Core.Classifier
},
Template
{
parameter = TemplateParameter "T",
classifier = Class
{
attributes=[],
associationends=[],
activity_graphs=[],
interfaces=[],
invariant=[],
name=["Bag(T)"],
operations=[
{
arguments=[("bag",Classifier [OclLibPackage,"Bag(T)"])],
isQuery=true,name="=",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("bag",Classifier [OclLibPackage,"Bag(T)"])],
isQuery=true,name="==",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("bag",Classifier [OclLibPackage,"Bag(T)"])],
isQuery=true,name="~=",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("bag",Classifier [OclLibPackage,"Bag(T)"])],
isQuery=true,name="~==",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("bag",Classifier [OclLibPackage,"Bag(T)"])],
isQuery=true,name="~=~",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("bag",Classifier [OclLibPackage,"Bag(T)"])],
isQuery=true,name="~==~",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("bag",Classifier [OclLibPackage,"Bag(T)"])],
isQuery=true,name="union",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Bag(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("bag",Classifier [OclLibPackage,"Bag(T)"])],
isQuery=true,name="intersection",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Bag(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("set",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="intersection",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,name="including",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Bag(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,name="excluding",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Bag(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,name="count",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],isQuery=true,name="flatten",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Bag(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="asSet",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="asSequence",
postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="asBag",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Bag(T)"],
scope=XMI.InstanceScope,visibility=XMI.public}],parent=NONE,
stereotypes=[],thyname=NONE
}: Rep_Core.Classifier
},
Template
{
parameter = TemplateParameter "T",
classifier = Class
{
attributes=[],
associationends=[],
activity_graphs=[],
interfaces=[],invariant=[],name=["Set(T)"],
operations=[
{
arguments=[("s",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="union",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("bag",Classifier [OclLibPackage,"Bag(T)"])],
isQuery=true,name="union",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Bag(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="=",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="==",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="~=",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="~==",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="~=~",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="~==~",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="intersection",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("bag",Classifier [OclLibPackage,"Bag(T)"])],
isQuery=true,name="intersection",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="-",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,name="including",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,name="excluding",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="symmetricDifference",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,name="count",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],isQuery=true,name="flatten",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="asSet",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="asSequence",
postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Sequence(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="asBag",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Bag(T)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("set",Classifier [OclLibPackage,"Set(T)"])],
isQuery=true,name="union",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Bag(T)"],
scope=XMI.InstanceScope,visibility=XMI.public}],parent=NONE,
stereotypes=[],thyname=NONE
}: Rep_Core.Classifier
},
Template
{
parameter = TemplateParameter "T",
classifier = Class
{
attributes=[],
associationends=[],
activity_graphs=[],
interfaces=[],invariant=[],name=["Collection(T)"],
operations=[
{
arguments=[],isQuery=true,name="size",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Integer"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="modifiedOnly",
postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,name="includes",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,name="excludes",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"T"])],
isQuery=true,name="count",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("c",Classifier [OclLibPackage,"Collection(T)"])],
isQuery=true,name="includesAll",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("c",Classifier [OclLibPackage,"Collection(T)"])],
isQuery=true,name="excludesAll",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="isEmpty",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="notEmpty",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="sum",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"T"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("c2",
Classifier [OclLibPackage,"Collection(T)"])],
isQuery=true,name="product",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(T)"],
scope=XMI.InstanceScope,visibility=XMI.public}],parent=NONE,
stereotypes=[],thyname=NONE
}: Rep_Core.Classifier
},
Class
{
attributes=[],
associationends=[],
activity_graphs=[],
interfaces=[],invariant=[],name=["OclVoid"],operations=[],
parent=NONE,stereotypes=[],thyname=NONE
},
Primitive
{
associationends=[],interfaces=[],invariant=[],name=[OclLibPackage,"OclAny"],
operations=[
{
arguments=[("object",Classifier [OclLibPackage,"OclAny"])],
isQuery=true,name="=",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"OclAny"])],
isQuery=true,name="==",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"OclAny"])],
isQuery=true,name="~=",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"OclAny"])],
isQuery=true,name="~==",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"OclAny"])],
isQuery=true,name="~=~",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"OclAny"])],
isQuery=true,name="~==~",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("object",Classifier [OclLibPackage,"OclAny"])],
isQuery=true,name="<>",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],isQuery=true,name="oclIsNew",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="oclIsUndefined",
postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],isQuery=true,name="asSet",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Set(OclAny)"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="atPre",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"OclAny"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("statename",Classifier ["OclState"])],
isQuery=true,name="oclIsInState",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="allInstances",
postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Set(OclAny)"],
scope=XMI.ClassifierScope,visibility=XMI.public}],parent=NONE,
stereotypes=[],thyname=NONE
},
Primitive
{
associationends=[],interfaces=[],invariant=[],name=[OclLibPackage,"String"],
operations=[
{
arguments=[],isQuery=true,name="size",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Integer"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("s",Classifier [OclLibPackage,"String"])],
isQuery=true,name="concat",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"String"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("lower",Classifier [OclLibPackage,"Integer"]),
("upper",Classifier [OclLibPackage,"Integer"])],
isQuery=true,name="substring",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"String"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="toInteger",
postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],isQuery=true,name="toReal",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Real"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="toUpper",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"String"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="toLower",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"String"],
scope=XMI.InstanceScope,visibility=XMI.public}],parent=NONE,
stereotypes=[],thyname=NONE
},
Primitive
{
associationends=[],interfaces=[],invariant=[],name=[OclLibPackage,"Boolean"],
operations=[
{
arguments=[("b",Classifier [OclLibPackage,"Boolean"])],
isQuery=true,name="or",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("b",Classifier [OclLibPackage,"Boolean"])],
isQuery=true,name="xor",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("b",Classifier [OclLibPackage,"Boolean"])],
isQuery=true,name="and",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("b",Classifier [OclLibPackage,"Boolean"])],
isQuery=true,name="implies",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="not",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("b",Classifier [OclLibPackage,"Boolean"])],
isQuery=true,name="sor",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("b",Classifier [OclLibPackage,"Boolean"])],
isQuery=true,name="sxor",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("b",Classifier [OclLibPackage,"Boolean"])],
isQuery=true,name="sand",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("b",Classifier [OclLibPackage,"Boolean"])],
isQuery=true,name="simplies",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("b",Classifier [OclLibPackage,"Boolean"])],
isQuery=true,name="implies1",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("b",Classifier [OclLibPackage,"Boolean"])],
isQuery=true,name="implies2",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Boolean"],
scope=XMI.InstanceScope,visibility=XMI.public}],parent=NONE,
stereotypes=[],thyname=NONE
},
Primitive
{
associationends=[],interfaces=[],invariant=[],name=[OclLibPackage,"Integer"],
operations=[
{
arguments=[("i",Classifier [OclLibPackage,"Integer"])],
isQuery=true,name="+",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("i",Classifier [OclLibPackage,"Integer"])],
isQuery=true,name="-",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("i",Classifier [OclLibPackage,"Integer"])],
isQuery=true,name="*",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],isQuery=true,name="-",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Integer"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("i",Classifier [OclLibPackage,"Integer"])],
isQuery=true,name="/",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Real"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("i",Classifier [OclLibPackage,"Integer"])],
isQuery=true,name="div",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],isQuery=true,name="abs",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Integer"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("i",Classifier [OclLibPackage,"Integer"])],
isQuery=true,name="mod",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("i",Classifier [OclLibPackage,"Integer"])],
isQuery=true,name="max",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("i",Classifier [OclLibPackage,"Integer"])],
isQuery=true,name="min",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Integer"],scope=XMI.InstanceScope,
visibility=XMI.public}],parent=NONE,stereotypes=[],
thyname=NONE
},
Primitive
{
associationends=[],interfaces=[],invariant=[],name=[OclLibPackage,"Real"],
operations=[
{
arguments=[("r",Classifier [OclLibPackage,"Real"])],
isQuery=true,name="+",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Real"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("r",Classifier [OclLibPackage,"Real"])],
isQuery=true,name="-",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Real"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("r",Classifier [OclLibPackage,"Real"])],
isQuery=true,name="*",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Real"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],isQuery=true,name="-",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Real"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("r",Classifier [OclLibPackage,"Real"])],
isQuery=true,name="/",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Real"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[],isQuery=true,name="abs",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Real"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="floor",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Integer"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[],isQuery=true,name="round",postcondition=[],
precondition=[],result=Classifier [OclLibPackage,"Integer"],
scope=XMI.InstanceScope,visibility=XMI.public
},
{
arguments=[("r",Classifier [OclLibPackage,"Real"])],
isQuery=true,name="max",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Real"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("r",Classifier [OclLibPackage,"Real"])],
isQuery=true,name="min",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Real"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("r",Classifier [OclLibPackage,"Real"])],
isQuery=true,name="<",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("r",Classifier [OclLibPackage,"Real"])],
isQuery=true,name=">",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("r",Classifier [OclLibPackage,"Real"])],
isQuery=true,name="<=",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public
},
{
arguments=[("r",Classifier [OclLibPackage,"Real"])],
isQuery=true,name=">=",postcondition=[],precondition=[],
result=Classifier [OclLibPackage,"Boolean"],scope=XMI.InstanceScope,
visibility=XMI.public}],parent=NONE,stereotypes=[],
thyname=NONE
}
] : Rep_Core.Classifier list
end

View File

@ -27,6 +27,7 @@ sig
include REP_CORE
include REP_ACTIVITY_GRAPH
include OCL_LIBRARY
type Model = Classifier list
@ -36,6 +37,7 @@ structure Rep : REP =
struct
open Rep_Core Rep_StateMachine Rep_ActivityGraph
open OclLibrary
type Model = Classifier list
end

View File

@ -94,6 +94,10 @@ datatype Classifier =
interfaces : Rep_OclType.Path list,
thyname : string option
}
| Template of
{ parameter : Rep_OclType.OclType,
classifier : Classifier
}
val OclAnyC : Classifier
@ -207,8 +211,12 @@ datatype Classifier =
stereotypes : string list,
interfaces : Rep_OclType.Path list,
thyname : string option
}
}
| Template of
{ parameter : Rep_OclType.OclType,
classifier : Classifier
}
(* convert an association end into the corresponding collection type *)
fun assoc_to_attr_type {name,aend_type,multiplicity,ordered,visibility,init} =
case multiplicity of

View File

@ -31,7 +31,7 @@ sig
| Set of OclType | Sequence of OclType
| OrderedSet of OclType | Bag of OclType
| Collection of OclType
| Classifier of Path | OclVoid | DummyT
| Classifier of Path | OclVoid | DummyT | TemplateParameter of string
val string_of_OclType : OclType -> string
val string_of_path : Path -> string
val is_Classifier : OclType -> bool
@ -95,6 +95,7 @@ datatype OclType = Integer | Real | String | Boolean | OclAny
| OrderedSet of OclType | Bag of OclType
| Collection of OclType | OclVoid | DummyT
| Classifier of Path
| TemplateParameter of string
fun string_of_path (path:Path) = case path of
[] => ""

View File

@ -16,6 +16,7 @@ Group is
secure_uml.sml
component_uml.sml
rep_secure.sml
ocl_library.sml
rep.sml
xmi_ocl.sml
xmi_core.sml

View File

@ -338,6 +338,18 @@ fun classifier_name_of (Primitive{name,...}) = name
| classifier_name_of (OrderedSet{name,...}) = name
| classifier_name_of (Void{name,...}) = name
fun classifier_operations_of (Primitive{operations,...}) = operations
| classifier_operations_of (Class{operations,...}) = operations
| classifier_operations_of (AssociationClass{operations,...}) = operations
| classifier_operations_of (Interface{operations,...}) = operations
| classifier_operations_of (Enumeration{operations,...}) = operations
| classifier_operations_of (Collection{operations,...}) = operations
| classifier_operations_of (Sequence{operations,...}) = operations
| classifier_operations_of (Set{operations,...}) = operations
| classifier_operations_of (Bag{operations,...}) = operations
| classifier_operations_of (OrderedSet{operations,...}) = operations
| classifier_operations_of (Void{...}) = []
fun classifier_xmiid_of (Primitive{xmiid,...}) = xmiid
| classifier_xmiid_of (Class{xmiid,...}) = xmiid
| classifier_xmiid_of (AssociationClass{xmiid,...}) = xmiid