122 lines
6.3 KiB
Standard ML
122 lines
6.3 KiB
Standard ML
(*****************************************************************************
|
|
* su4sml --- an SML repository for managing (Secure)UML/OCL models
|
|
* http://projects.brucker.ch/su4sml/
|
|
*
|
|
* xmi_datatypes.sml --- XMI-UML basic datatypes for the import interface
|
|
* This file is part of su4sml.
|
|
*
|
|
* Copyright (c) 2005-2007, ETH Zurich, Switzerland
|
|
*
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are
|
|
* met:
|
|
*
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
*
|
|
* * Redistributions in binary form must reproduce the above
|
|
* copyright notice, this list of conditions and the following
|
|
* disclaimer in the documentation and/or other materials provided
|
|
* with the distribution.
|
|
*
|
|
* * Neither the name of the copyright holders nor the names of its
|
|
* contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
******************************************************************************)
|
|
(* $Id$ *)
|
|
|
|
structure XMI_DataTypes =
|
|
(* from UML 1.5 Core Overview: ----------------------------------------------
|
|
* The Data Types package is the subpackage that specifies the different data
|
|
* types that are used to define UML.
|
|
*
|
|
* the following constructs are currently not represented: ArgListsExpression,
|
|
* Boolean, BooleanExpression, CallConcurrencyKind, Expression, Geometry,
|
|
* Integer, LocationReference, Mapping, MappingExpression, Name,
|
|
* ProcedureExpression, PseudostateKind, ScopeKind, String, TimeExpression,
|
|
* TypeExpression, UnlimitedInteger
|
|
* --------------------------------------------------------------------------*)
|
|
struct
|
|
|
|
datatype AggregationKind = NoAggregation | Aggregate | Composite
|
|
|
|
datatype ScopeKind = InstanceScope | ClassifierScope
|
|
|
|
(* from UML 1.5 Core: --------------------------------------------------------
|
|
* ChangeableKind defines an enumeration that denotes how an AttributeLink or
|
|
* LinkEnd may be modified.
|
|
* --------------------------------------------------------------------------*)
|
|
datatype ChangeableKind = Changeable (* No restrictions on modification. *)
|
|
| Frozen (* The value may not be changed from the*)
|
|
(* source end after the creation and *)
|
|
(* initialization of the source object. *)
|
|
(* Operations on the other end may *)
|
|
(* change a value. *)
|
|
| AddOnly (* If the multiplicity is not fixed, *)
|
|
(* values may be added at any time from *)
|
|
(* the source object, but once created a*)
|
|
(* value may not be removed from the *)
|
|
(* source end. Operations on the other *)
|
|
(* end may change a value. *)
|
|
|
|
(* from UML 1.5 Data Types: --------------------------------------------------
|
|
* a Multiplicity [consists of a list of MultiplicityRanges and] defines a
|
|
* non-empty set of non-negative integers.
|
|
* a MultiplicityRange defines a range of integers. The upper bound of the
|
|
* range cannot be below the lower bound. The lower bound must be a
|
|
* nonnegative integer. The upper bound must be a nonnegative integer or the
|
|
* special value unlimited, which indicates there is no upper bound on the
|
|
* range.
|
|
* --------------------------------------------------------------------------*)
|
|
(* provisionally, we denote the upper bound 'unlimited' by "-1" *)
|
|
type Multiplicity = (int * int) list
|
|
|
|
datatype OrderingKind = Unordered | Ordered
|
|
datatype ParameterDirectionKind = In | Out | Inout | Return
|
|
|
|
|
|
(* from UML 1.5 Core: --------------------------------------------------------
|
|
* VisibilityKind defines an enumeration that denotes how the element to which
|
|
* it refers is seen outside the enclosing name space.
|
|
* --------------------------------------------------------------------------*)
|
|
datatype VisibilityKind = public (* Other elements may see and use the target*)
|
|
(* element. *)
|
|
| private (* Only the source element may see and use *)
|
|
(* the target element. *)
|
|
| protected (* Descendants of the source element may see *)
|
|
(* and use the target element. *)
|
|
| package (* Elements declared in the same package as *)
|
|
(* the target element may see and use the *)
|
|
(* target *)
|
|
|
|
|
|
(* from UML 1.5 Core: --------------------------------------------------------
|
|
* A parameter is an unbound variable that can be changed, passed, or
|
|
* returned. A parameter may include a name, type, and direction of
|
|
* communication. Parameters are used in the specification of operations,
|
|
* messages and events, templates, etc.
|
|
* not supported: attribute defaultValue
|
|
* --------------------------------------------------------------------------*)
|
|
type Parameter = { xmiid : string,
|
|
name : string,
|
|
kind : ParameterDirectionKind,
|
|
(* defaultValue : ..., *)
|
|
type_id : string (* xmi.idref to type *)}
|
|
|
|
|
|
end
|