(* ---------------------------------------------------------------------- *)
(* Common Object Service
*)
(* ---------------------------------------------------------------------- *)
(* ICosProperty - Interface Module for the Common Object Service
"Object Property Service"
*)
(* ---------------------------------------------------------------------- *)
(* Symbol prefixing: I - Interface Module, C - Class Interface
T - Non-class Type, E - Enumeration Type
k - constant p - parameter to a method
a - variable *)
(* ---------------------------------------------------------------------- *)
INTERFACE ICosProperty;
TYPE PPropertySet = PropertySet;
TYPE TObject = RECORD
aSBH : ilu.CString,
aType : ilu.CString
END;
TYPE TAnyList = SEQUENCE of Any;
TYPE Any = UNION
INTEGER, CARDINAL, BYTE, BOOLEAN, REAL, CHARACTER,
ilu.CString,
TObject,
PPropertySet,
TAnyList
END;
TYPE PropertyName = ilu.CString;
TYPE Property = RECORD
property-name : PropertyName,
property-value : Any
END;
TYPE PropertyModeType = ENUMERATION normal, read-only, fixed-normal, fixed-readonly, undefined END;
TYPE PropertyDef = RECORD
property-name : PropertyName,
property-value : Any,
property-mode : PropertyModeType
END;
TYPE PropertyMode = RECORD
property-name : PropertyName,
property-mode : PropertyModeType
END;
TYPE PropertyNames = SEQUENCE OF PropertyName;
TYPE Properties = SEQUENCE OF Property;
TYPE PropertiesList = SEQUENCE OF Properties; (* SWH 6.15.95 *)
TYPE PropertyDefs = SEQUENCE OF PropertyDef;
TYPE PropertyModes = SEQUENCE OF PropertyMode;
TYPE PropertyTypes = SEQUENCE OF PropertyModeType;
EXCEPTION ConstraintNotSupported;
EXCEPTION InvalidPropertyName;
EXCEPTION ConflictingProperty;
EXCEPTION PropertyNotFound;
EXCEPTION UnsupportedTypeCode;
EXCEPTION UnsupportedProperty;
EXCEPTION UnsupportedMode;
EXCEPTION FixedProperty;
EXCEPTION ReadOnlyProperty;
TYPE ExceptionReason = ENUMERATION
invalid-property-name, conflicting-property,
property-not-found, unsupported-type-code, unsupported-property,
unsupported-mode, fixed-property, read-only-property
END;
TYPE PropertyException = RECORD
reason : ExceptionReason,
failing-property-name : PropertyName
END;
TYPE PropertyExceptions = SEQUENCE OF PropertyException;
TYPE MultipleExceptions = RECORD
exceptions : PropertyExceptions
END;
EXCEPTION MultipleExceptions : MultipleExceptions;
(* ------------------------------------------------------------ *)
TYPE PropertySetFactory = OBJECT OPTIONAL
METHODS
create-propertyset () : PropertySet,
create-constrained-propertyset (allowed-property-types : PropertyTypes, allowed-properties : Properties) : PropertySet
RAISES ConstraintNotSupported END,
create-initial-propertyset (initial-properties : Properties) : PropertySet
RAISES MultipleExceptions END
END;
(* ------------------------------------------------------------ *)
TYPE PropertySetDefFactory = OBJECT OPTIONAL
METHODS
create-propertysetdef () : PropertySetDef,
create-constrained-propertysetdef (allowed-property-types : PropertyTypes,
allowed-property-defs : PropertyDefs) : PropertySetDef
RAISES ConstraintNotSupported END,
create-initial-propertysetdef (initial-property-defs : PropertyDefs) : PropertySetDef
RAISES MultipleExceptions END
END;
(* ------------------------------------------------------------ *)
TYPE PropertySet = OBJECT OPTIONAL
METHODS
define-property (property-name : PropertyName, property-value : Any)
RAISES InvalidPropertyName, ConflictingProperty, UnsupportedTypeCode, UnsupportedProperty, ReadOnlyProperty END,
define-properties (nproperties : Properties)
RAISES MultipleExceptions END,
get-number-of-properties () : CARDINAL,
get-all-property-names (how-many : CARDINAL, OUT property-names : PropertyNames, OUT rest : PropertyNamesIterator),
get-property-value (property-name : PropertyName) : Any
RAISES PropertyNotFound, InvalidPropertyName END,
get-properties (property-names : PropertyNames, OUT nproperties : Properties) : BOOLEAN,
get-all-properties (how-many : CARDINAL, OUT nproperties : Properties, OUT rest : PropertiesIterator),
delete-property (property-name : PropertyName)
RAISES PropertyNotFound, InvalidPropertyName, FixedProperty END,
delete-properties (property-names : PropertyNames)
RAISES MultipleExceptions END,
delete-all-properties () : BOOLEAN,
is-property-defined (property-name : PropertyName) : BOOLEAN
RAISES InvalidPropertyName END
END;
(* ------------------------------------------------------------ *)
TYPE PropertySetDef = OBJECT OPTIONAL
SUPERCLASS PropertySet
METHODS
get-allowed-property-types (OUT property-types : PropertyTypes),
get-allowed-properties (OUT property-defs : PropertyDefs),
define-property-with-mode (property-name : PropertyName, property-value : Any, property-mode : PropertyModeType)
RAISES InvalidPropertyName, ConflictingProperty, UnsupportedTypeCode, UnsupportedProperty, UnsupportedMode, ReadOnlyProperty END,
define-properties-with-modes (property-defs : PropertyDefs)
RAISES MultipleExceptions END,
get-property-mode (property-name : PropertyName) : PropertyModeType
RAISES PropertyNotFound, InvalidPropertyName END,
get-property-modes (property-names : PropertyNames, OUT property-modes : PropertyModes) : BOOLEAN,
set-property-mode (property-name : PropertyName, property-mode : PropertyModeType)
RAISES InvalidPropertyName, PropertyNotFound, UnsupportedMode END,
set-property-modes (property-modes : PropertyModes)
RAISES MultipleExceptions END
END;
(* ------------------------------------------------------------ *)
TYPE PropertyNamesIterator = OBJECT OPTIONAL
METHODS
reset (),
next-one (OUT property-name : PropertyName) : BOOLEAN,
next-n (how-many : CARDINAL, OUT property-names : PropertyNames) : BOOLEAN,
destroy ()
END;
(* ------------------------------------------------------------ *)
TYPE PropertiesIterator = OBJECT OPTIONAL
METHODS
reset (),
next-one (OUT aproperty : Property) : BOOLEAN,
next-n (how-many : CARDINAL, OUT nproperties : Properties) : BOOLEAN,
destroy ()
END;
(* ------------------------------------------------------------ *)