1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
-- File: UndefinedContent.cdl
-- Created: Tue Feb 4 13:56:27 1992
-- Author: Christian CAILLET
-- <cky@phobox>
---Copyright: Matra Datavision 1992
class UndefinedContent from Interface inherits TShared
---Purpose : Defines resources for an "Undefined Entity" : such an Entity
-- is used to describe an Entity which complies with the Norm,
-- but of an Unknown Type : hence it is kept under a literal
-- form (avoiding to loose data). UndefinedContent offers a way
-- to store a list of Parameters, as literals or references to
-- other Entities
--
-- Each Interface must provide one "UndefinedEntity", which must
-- have same basic description as all its types of entities :
-- the best way would be double inheritance : on the Entity Root
-- of the Norm and on an general "UndefinedEntity"
--
-- While it is not possible to do so, the UndefinedEntity of each
-- Interface can define its own UndefinedEntity by INCLUDING
-- (in a field) this UndefinedContent
--
-- Hence, for that UndefinedEntity, define a Constructor which
-- creates this UndefinedContent, plus access methods to it
-- (or to its data, calling methods defined here).
--
-- Finally, the Protocols of each norm have to Create and
-- Recognize Unknown Entities of this norm
---See Also : Protocol
uses Transient, HAsciiString from TCollection,
HArray1OfInteger from TColStd, HArray1OfHAsciiString from Interface,
ParamType, EntityList, CopyTool
raises OutOfRange, NoSuchObject, InterfaceMismatch, InterfaceError
is
Create returns mutable UndefinedContent;
---Purpose : Defines an empty UndefinedContent
-- -- Access to Parameters -- --
NbParams (me) returns Integer is static;
---Purpose : Gives count of recorded parameters
NbLiterals (me) returns Integer is static;
---Purpose : Gives count of Literal Parameters
ParamData (me; num : Integer; ptype : out ParamType;
ent : out mutable Transient;
val : out HAsciiString from TCollection)
returns Boolean is static;
---Purpose : Returns data of a Parameter : its type, and the entity if it
-- designates en entity ("ent") or its literal value else ("str")
-- Returned value (Boolean) : True if it is an Entity, False else
ParamType (me; num : Integer) returns ParamType
raises OutOfRange is static;
---Purpose : Returns the ParamType of a Param, given its rank
-- Error if num is not between 1 and NbParams
IsParamEntity (me; num : Integer) returns Boolean
raises OutOfRange is static;
---Purpose : Returns True if a Parameter is recorded as an entity
-- Error if num is not between 1 and NbParams
ParamEntity (me; num : Integer) returns mutable Transient
---Purpose : Returns Entity corresponding to a Param, given its rank
raises InterfaceError, OutOfRange is static;
-- Error if out of range or if Param num does not designate
-- an Entity
ParamValue (me; num : Integer) returns HAsciiString from TCollection
---Purpose : Returns litteral value of a Parameter, given its rank
raises InterfaceError, OutOfRange is static;
-- Error if num is out of range, or if Parameter is not literal
Reservate (me : mutable; nb,nblit : Integer) is static;
---Purpose : Manages reservation for parameters (internal use)
-- (nb : total count of parameters, nblit : count of literals)
AddLiteral (me : mutable; ptype : ParamType;
val : HAsciiString from TCollection) is static;
---Purpose : Adds a literal Parameter to the list
AddEntity (me : mutable; ptype : ParamType; ent : mutable Transient)
is static;
---Purpose : Adds a Parameter which references an Entity
RemoveParam (me : mutable; num : Integer)
---Purpose : Removes a Parameter given its rank
raises OutOfRange is static;
-- Error if num is out of range
SetLiteral (me : mutable; num : Integer; ptype : ParamType;
val : HAsciiString from TCollection)
---Purpose : Sets a new value for the Parameter <num>, to a literal value
-- (if it referenced formerly an Entity, this Entity is removed)
raises OutOfRange is static;
-- Error if num is out of range
SetEntity (me : mutable; num : Integer; ptype : ParamType;
ent : mutable Transient)
---Purpose : Sets a new value for the Parameter <num>, to reference an
-- Entity. To simply change the Entity, see the variant below
raises OutOfRange is static;
-- Error if num is out of range
SetEntity (me : mutable; num : Integer; ent : mutable Transient)
---Purpose : Changes the Entity referenced by the Parameter <num>
-- (with same ParamType)
raises InterfaceError, OutOfRange is static;
-- Error if num is out of range or if <num> is not for an Entity
EntityList (me) returns EntityList is static;
---Purpose : Returns globally the list of param entities. Note that it can
-- be used as shared entity list for the UndefinedEntity
GetFromAnother (me : mutable;
other : UndefinedContent; TC : in out CopyTool)
is static;
---Purpose : Copies contents of undefined entities; deigned to be called by
-- GetFromAnother method from Undefined entity of each Interface
-- (the basic operation is the same regardless the norm)
fields
thenbparams : Integer; -- total count of parameters
thenbstr : Integer; -- count of literal parameters
theparams : HArray1OfInteger from TColStd;
thevalues : HArray1OfHAsciiString from Interface;
theentities : EntityList;
end UndefinedContent;
|