aGrUM
0.20.2
a C++ library for (probabilistic) graphical models
O3prm.cpp
Go to the documentation of this file.
1
/**
2
*
3
* Copyright 2005-2020 Pierre-Henri WUILLEMIN(@LIP6) & Christophe GONZALES(@AMU)
4
* info_at_agrum_dot_org
5
*
6
* This library is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU Lesser General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* This library is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public License
17
* along with this library. If not, see <http://www.gnu.org/licenses/>.
18
*
19
*/
20
21
22
/**
23
* @file
24
* @brief Implementation for the AST of the O3PRM language.
25
*
26
* @author Christophe GONZALES(@AMU) and Pierre-Henri WUILLEMIN(@LIP6)
27
* @author Lionel TORTI
28
*/
29
30
#
include
<
agrum
/
PRM
/
o3prm
/
O3prm
.
h
>
31
32
namespace
gum
{
33
namespace
prm
{
34
namespace
o3prm
{
35
36
O3Position
::
O3Position
() :
file__
(
""
),
line__
(0),
column__
(0) {
37
GUM_CONSTRUCTOR
(
O3Position
);
38
}
39
40
O3Position
::
O3Position
(
const
std
::
string
&
file
,
int
line
,
int
column
) :
41
file__
(
file
),
line__
(
line
),
column__
(
column
) {
42
GUM_CONSTRUCTOR
(
O3Position
);
43
}
44
45
O3Position
::
O3Position
(
const
O3Position
&
src
) :
46
file__
(
src
.
file__
),
line__
(
src
.
line__
),
column__
(
src
.
column__
) {
47
GUM_CONS_CPY
(
O3Position
);
48
}
49
50
O3Position
::
O3Position
(
O3Position
&&
src
) :
51
file__
(
std
::
move
(
src
.
file__
)),
line__
(
std
::
move
(
src
.
line__
)),
52
column__
(
std
::
move
(
src
.
column__
)) {
53
GUM_CONS_MOV
(
O3Position
);
54
}
55
56
O3Position
::~
O3Position
() {
GUM_DESTRUCTOR
(
O3Position
); }
57
58
O3Position
&
O3Position
::
operator
=(
const
O3Position
&
src
) {
59
if
(
this
== &
src
) {
return
*
this
; }
60
file__
=
src
.
file__
;
61
line__
=
src
.
line__
;
62
column__
=
src
.
column__
;
63
return
*
this
;
64
}
65
66
O3Position
&
O3Position
::
operator
=(
O3Position
&&
src
) {
67
if
(
this
== &
src
) {
return
*
this
; }
68
file__
=
std
::
move
(
src
.
file__
);
69
line__
=
std
::
move
(
src
.
line__
);
70
column__
=
std
::
move
(
src
.
column__
);
71
return
*
this
;
72
}
73
74
std
::
string
&
O3Position
::
file
() {
return
file__
; }
75
const
std
::
string
&
O3Position
::
file
()
const
{
return
file__
; }
76
77
int
&
O3Position
::
line
() {
return
line__
; }
78
int
O3Position
::
line
()
const
{
return
line__
; }
79
80
int
&
O3Position
::
column
() {
return
column__
; }
81
int
O3Position
::
column
()
const
{
return
column__
; }
82
83
O3Integer
::
O3Integer
() :
pos__
(),
value__
(0) {
GUM_CONSTRUCTOR
(
O3Integer
); }
84
85
O3Integer
::
O3Integer
(
const
O3Position
&
pos
,
int
value
) :
86
pos__
(
pos
),
value__
(
value
) {
87
GUM_CONSTRUCTOR
(
O3Integer
);
88
}
89
90
O3Integer
::
O3Integer
(
const
O3Integer
&
src
) :
91
pos__
(
src
.
pos__
),
value__
(
src
.
value__
) {
92
GUM_CONS_CPY
(
O3Integer
);
93
}
94
95
O3Integer
::
O3Integer
(
O3Integer
&&
src
) :
96
pos__
(
std
::
move
(
src
.
pos__
)),
value__
(
std
::
move
(
src
.
value__
)) {
97
GUM_CONS_MOV
(
O3Integer
);
98
}
99
100
O3Integer
::~
O3Integer
() {
GUM_DESTRUCTOR
(
O3Integer
); }
101
102
O3Integer
&
O3Integer
::
operator
=(
const
O3Integer
&
src
) {
103
if
(
this
== &
src
) {
return
*
this
; }
104
pos__
=
src
.
pos__
;
105
value__
=
src
.
value__
;
106
return
*
this
;
107
}
108
109
O3Integer
&
O3Integer
::
operator
=(
O3Integer
&&
src
) {
110
if
(
this
== &
src
) {
return
*
this
; }
111
pos__
=
std
::
move
(
src
.
pos__
);
112
value__
=
std
::
move
(
src
.
value__
);
113
return
*
this
;
114
}
115
116
const
O3Position
&
O3Integer
::
position
()
const
{
return
pos__
; }
117
O3Position
&
O3Integer
::
position
() {
return
pos__
; }
118
119
int
O3Integer
::
value
()
const
{
return
value__
; }
120
int
&
O3Integer
::
value
() {
return
value__
; }
121
122
O3Float
::
O3Float
() {
GUM_CONSTRUCTOR
(
O3Float
); }
123
124
O3Float
::
O3Float
(
const
O3Position
&
pos
,
float
value
) :
125
pos__
(
pos
),
value__
(
value
) {
126
GUM_CONSTRUCTOR
(
O3Float
);
127
}
128
129
O3Float
::
O3Float
(
const
O3Float
&
src
) :
130
pos__
(
src
.
pos__
),
value__
(
src
.
value__
) {
131
GUM_CONS_CPY
(
O3Float
);
132
}
133
134
O3Float
::
O3Float
(
O3Float
&&
src
) :
135
pos__
(
std
::
move
(
src
.
pos__
)),
value__
(
std
::
move
(
src
.
value__
)) {
136
GUM_CONS_MOV
(
O3Float
);
137
}
138
139
O3Float
::~
O3Float
() {
GUM_DESTRUCTOR
(
O3Float
); }
140
141
O3Float
&
O3Float
::
operator
=(
const
O3Float
&
src
) {
142
if
(
this
== &
src
) {
return
*
this
; }
143
pos__
=
src
.
pos__
;
144
value__
=
src
.
value__
;
145
return
*
this
;
146
}
147
148
O3Float
&
O3Float
::
operator
=(
O3Float
&&
src
) {
149
if
(
this
== &
src
) {
return
*
this
; }
150
pos__
=
std
::
move
(
src
.
pos__
);
151
value__
=
std
::
move
(
src
.
value__
);
152
return
*
this
;
153
}
154
155
const
O3Position
&
O3Float
::
position
()
const
{
return
pos__
; }
156
O3Position
&
O3Float
::
position
() {
return
pos__
; }
157
158
float
O3Float
::
value
()
const
{
return
value__
; }
159
float
&
O3Float
::
value
() {
return
value__
; }
160
161
O3Formula
::
O3Formula
() :
162
pos__
(),
formula__
(
std
::
unique_ptr
<
Formula
>(
new
Formula
(
""
))) {
163
GUM_CONSTRUCTOR
(
O3Formula
);
164
}
165
166
O3Formula
::
O3Formula
(
const
O3Position
&
pos
,
const
Formula
&
formula
) :
167
pos__
(
pos
),
formula__
(
std
::
unique_ptr
<
Formula
>(
new
Formula
(
formula
))) {
168
GUM_CONSTRUCTOR
(
O3Formula
);
169
}
170
171
O3Formula
::
O3Formula
(
const
O3Formula
&
src
) :
172
pos__
(
src
.
pos__
),
173
formula__
(
std
::
unique_ptr
<
Formula
>(
new
Formula
(
src
.
formula
()))) {
174
GUM_CONS_CPY
(
O3Formula
);
175
}
176
177
O3Formula
::
O3Formula
(
O3Formula
&&
src
) :
178
pos__
(
std
::
move
(
src
.
pos__
)),
formula__
(
std
::
move
(
src
.
formula__
)) {
179
GUM_CONS_MOV
(
O3Formula
);
180
}
181
182
O3Formula
::~
O3Formula
() {
GUM_DESTRUCTOR
(
O3Formula
); }
183
184
O3Formula
&
O3Formula
::
operator
=(
const
O3Formula
&
src
) {
185
if
(
this
== &
src
) {
return
*
this
; }
186
pos__
=
src
.
pos__
;
187
formula__
=
std
::
unique_ptr
<
Formula
>(
new
Formula
(
src
.
formula
()));
188
return
*
this
;
189
}
190
191
O3Formula
&
O3Formula
::
operator
=(
O3Formula
&&
src
) {
192
if
(
this
== &
src
) {
return
*
this
; }
193
pos__
=
std
::
move
(
src
.
pos__
);
194
formula__
=
std
::
move
(
src
.
formula__
);
195
return
*
this
;
196
}
197
198
const
O3Position
&
O3Formula
::
position
()
const
{
return
pos__
; }
199
O3Position
&
O3Formula
::
position
() {
return
pos__
; }
200
201
const
Formula
&
O3Formula
::
formula
()
const
{
return
*
formula__
; }
202
Formula
&
O3Formula
::
formula
() {
return
*
formula__
; }
203
204
O3Label
::
O3Label
() :
pos__
(),
label__
() {
GUM_CONSTRUCTOR
(
O3Label
); }
205
206
O3Label
::
O3Label
(
const
O3Position
&
pos
,
const
std
::
string
&
label
) :
207
pos__
(
pos
),
label__
(
label
) {
208
GUM_CONSTRUCTOR
(
O3Label
);
209
}
210
211
O3Label
::
O3Label
(
const
O3Label
&
src
) :
212
pos__
(
src
.
pos__
),
label__
(
src
.
label__
) {
213
GUM_CONS_CPY
(
O3Label
);
214
}
215
216
O3Label
::
O3Label
(
O3Label
&&
src
) :
217
pos__
(
std
::
move
(
src
.
pos__
)),
label__
(
std
::
move
(
src
.
label__
)) {
218
GUM_CONS_MOV
(
O3Label
);
219
}
220
221
O3Label
::~
O3Label
() {
GUM_DESTRUCTOR
(
O3Label
); }
222
223
O3Label
&
O3Label
::
operator
=(
const
O3Label
&
src
) {
224
if
(
this
== &
src
) {
return
*
this
; }
225
pos__
=
src
.
pos__
;
226
label__
=
src
.
label__
;
227
return
*
this
;
228
}
229
230
O3Label
&
O3Label
::
operator
=(
O3Label
&&
src
) {
231
if
(
this
== &
src
) {
return
*
this
; }
232
pos__
=
std
::
move
(
src
.
pos__
);
233
label__
=
std
::
move
(
src
.
label__
);
234
return
*
this
;
235
}
236
237
const
O3Position
&
O3Label
::
position
()
const
{
return
pos__
; }
238
O3Position
&
O3Label
::
position
() {
return
pos__
; }
239
240
const
std
::
string
&
O3Label
::
label
()
const
{
return
label__
; }
241
std
::
string
&
O3Label
::
label
() {
return
label__
; }
242
243
O3Type
::
O3Type
() :
dep_flag__
(
false
) {
GUM_CONSTRUCTOR
(
O3Type
); }
244
245
O3Type
::
O3Type
(
const
O3Type
&
src
) :
246
pos__
(
src
.
pos__
),
name__
(
src
.
name__
),
superLabel__
(
src
.
superLabel__
),
247
labels__
(
src
.
labels__
),
dep_flag__
(
src
.
dep_flag__
) {
248
GUM_CONS_CPY
(
O3Type
);
249
}
250
251
O3Type
::
O3Type
(
O3Type
&&
src
) :
252
pos__
(
std
::
move
(
src
.
pos__
)),
name__
(
std
::
move
(
src
.
name__
)),
253
superLabel__
(
std
::
move
(
src
.
superLabel__
)),
254
labels__
(
std
::
move
(
src
.
labels__
)),
255
dep_flag__
(
std
::
move
(
src
.
dep_flag__
)) {
256
GUM_CONS_MOV
(
O3Type
);
257
}
258
259
O3Type
::~
O3Type
() {
GUM_DESTRUCTOR
(
O3Type
); }
260
261
O3Type
&
O3Type
::
operator
=(
const
O3Type
&
src
) {
262
if
(
this
== &
src
) {
return
*
this
; }
263
pos__
=
src
.
pos__
;
264
name__
=
src
.
name__
;
265
superLabel__
=
src
.
superLabel__
;
266
labels__
=
src
.
labels__
;
267
dep_flag__
=
src
.
dep_flag__
;
268
return
*
this
;
269
}
270
271
O3Type
&
O3Type
::
operator
=(
O3Type
&&
src
) {
272
if
(
this
== &
src
) {
return
*
this
; }
273
pos__
=
std
::
move
(
src
.
pos__
);
274
name__
=
std
::
move
(
src
.
name__
);
275
superLabel__
=
std
::
move
(
src
.
superLabel__
);
276
labels__
=
std
::
move
(
src
.
labels__
);
277
dep_flag__
=
std
::
move
(
src
.
dep_flag__
);
278
return
*
this
;
279
}
280
281
O3Label
&
O3Type
::
name
() {
return
name__
; }
282
const
O3Label
&
O3Type
::
name
()
const
{
return
name__
; }
283
284
O3Label
&
O3Type
::
superLabel
() {
return
superLabel__
; }
285
const
O3Label
&
O3Type
::
superLabel
()
const
{
return
superLabel__
; }
286
287
O3Type
::
LabelMap
&
O3Type
::
labels
() {
return
labels__
; }
288
const
O3Type
::
LabelMap
&
O3Type
::
labels
()
const
{
return
labels__
; }
289
290
O3Position
&
O3Type
::
position
() {
return
pos__
; }
291
const
O3Position
&
O3Type
::
position
()
const
{
return
pos__
; }
292
293
bool
&
O3Type
::
deprecated
() {
return
dep_flag__
; }
294
const
bool
&
O3Type
::
deprecated
()
const
{
return
dep_flag__
; }
295
296
O3IntType
::
O3IntType
() :
dep_flag__
(
false
) {
GUM_CONSTRUCTOR
(
O3IntType
); }
297
298
O3IntType
::
O3IntType
(
const
O3IntType
&
src
) :
299
pos__
(
src
.
pos__
),
name__
(
src
.
name__
),
start__
(
src
.
start__
),
300
end__
(
src
.
end__
),
dep_flag__
(
src
.
dep_flag__
) {
301
GUM_CONS_CPY
(
O3IntType
);
302
}
303
304
O3IntType
::
O3IntType
(
O3IntType
&&
src
) :
305
pos__
(
std
::
move
(
src
.
pos__
)),
name__
(
std
::
move
(
src
.
name__
)),
306
start__
(
std
::
move
(
src
.
start__
)),
end__
(
std
::
move
(
src
.
end__
)),
307
dep_flag__
(
std
::
move
(
src
.
dep_flag__
)) {
308
GUM_CONS_MOV
(
O3IntType
);
309
}
310
311
O3IntType
::~
O3IntType
() {
GUM_DESTRUCTOR
(
O3IntType
); }
312
313
O3IntType
&
O3IntType
::
operator
=(
const
O3IntType
&
src
) {
314
if
(
this
== &
src
) {
return
*
this
; }
315
pos__
=
src
.
pos__
;
316
name__
=
src
.
name__
;
317
start__
=
src
.
start__
;
318
end__
=
src
.
end__
;
319
dep_flag__
=
src
.
dep_flag__
;
320
return
*
this
;
321
}
322
323
O3IntType
&
O3IntType
::
operator
=(
O3IntType
&&
src
) {
324
if
(
this
== &
src
) {
return
*
this
; }
325
pos__
=
std
::
move
(
src
.
pos__
);
326
name__
=
std
::
move
(
src
.
name__
);
327
start__
=
std
::
move
(
src
.
start__
);
328
end__
=
std
::
move
(
src
.
end__
);
329
dep_flag__
=
std
::
move
(
src
.
dep_flag__
);
330
return
*
this
;
331
}
332
333
O3Label
&
O3IntType
::
name
() {
return
name__
; }
334
const
O3Label
&
O3IntType
::
name
()
const
{
return
name__
; }
335
336
O3Integer
&
O3IntType
::
start
() {
return
start__
; }
337
const
O3Integer
&
O3IntType
::
start
()
const
{
return
start__
; }
338
339
O3Integer
&
O3IntType
::
end
() {
return
end__
; }
340
const
O3Integer
&
O3IntType
::
end
()
const
{
return
end__
; }
341
342
O3Position
&
O3IntType
::
position
() {
return
pos__
; }
343
const
O3Position
&
O3IntType
::
position
()
const
{
return
pos__
; }
344
345
bool
&
O3IntType
::
deprecated
() {
return
dep_flag__
; }
346
const
bool
&
O3IntType
::
deprecated
()
const
{
return
dep_flag__
; }
347
348
O3RealType
::
O3RealType
() :
dep_flag__
(
false
) {
GUM_CONSTRUCTOR
(
O3RealType
); }
349
350
O3RealType
::
O3RealType
(
const
O3RealType
&
src
) :
351
pos__
(
src
.
pos__
),
name__
(
src
.
name__
),
values__
(
src
.
values__
),
352
dep_flag__
(
src
.
dep_flag__
) {
353
GUM_CONS_CPY
(
O3RealType
);
354
}
355
356
O3RealType
::
O3RealType
(
O3RealType
&&
src
) :
357
pos__
(
std
::
move
(
src
.
pos__
)),
name__
(
std
::
move
(
src
.
name__
)),
358
values__
(
std
::
move
(
src
.
values__
)),
359
dep_flag__
(
std
::
move
(
src
.
dep_flag__
)) {
360
GUM_CONS_MOV
(
O3RealType
);
361
}
362
363
O3RealType
::~
O3RealType
() {
GUM_DESTRUCTOR
(
O3RealType
); }
364
365
O3RealType
&
O3RealType
::
operator
=(
const
O3RealType
&
src
) {
366
if
(
this
== &
src
) {
return
*
this
; }
367
368
pos__
=
src
.
pos__
;
369
name__
=
src
.
name__
;
370
values__
=
src
.
values__
;
371
dep_flag__
=
src
.
dep_flag__
;
372
return
*
this
;
373
}
374
375
O3RealType
&
O3RealType
::
operator
=(
O3RealType
&&
src
) {
376
if
(
this
== &
src
) {
return
*
this
; }
377
378
pos__
=
std
::
move
(
src
.
pos__
);
379
name__
=
std
::
move
(
src
.
name__
);
380
values__
=
std
::
move
(
src
.
values__
);
381
dep_flag__
=
std
::
move
(
src
.
dep_flag__
);
382
return
*
this
;
383
}
384
385
O3Position
&
O3RealType
::
position
() {
return
pos__
; }
386
const
O3Position
&
O3RealType
::
position
()
const
{
return
pos__
; }
387
388
O3Label
&
O3RealType
::
name
() {
return
name__
; }
389
const
O3Label
&
O3RealType
::
name
()
const
{
return
name__
; }
390
391
std
::
vector
<
O3Float
>&
O3RealType
::
values
() {
return
values__
; }
392
const
std
::
vector
<
O3Float
>&
O3RealType
::
values
()
const
{
return
values__
; }
393
394
bool
&
O3RealType
::
deprecated
() {
return
dep_flag__
; }
395
const
bool
&
O3RealType
::
deprecated
()
const
{
return
dep_flag__
; }
396
397
O3PRM
::
O3PRM
() {
398
GUM_CONSTRUCTOR
(
O3PRM
);
399
// Creating the boolean type
400
auto
name
=
O3Label
(
O3Position
(),
"boolean"
);
401
auto
f
=
O3Label
(
O3Position
(),
"false"
);
402
auto
t
=
O3Label
(
O3Position
(),
"true"
);
403
auto
labels
=
O3Type
::
LabelMap
();
404
labels
.
push_back
(
O3Type
::
LabelPair
(
f
,
O3Label
()));
405
labels
.
push_back
(
O3Type
::
LabelPair
(
t
,
O3Label
()));
406
auto
boolean
=
std
::
unique_ptr
<
O3Type
>(
new
O3Type
());
407
boolean
->
name
() =
std
::
move
(
name
);
408
boolean
->
labels
() =
std
::
move
(
labels
);
409
types__
.
push_back
(
std
::
move
(
boolean
));
410
}
411
412
O3PRM
::
O3PRM
(
const
O3PRM
&
src
) {
413
GUM_CONS_CPY
(
O3PRM
);
414
for
(
const
auto
&
t
:
src
.
types__
) {
415
types__
.
emplace_back
(
new
O3Type
(*
t
));
416
}
417
for
(
const
auto
&
t
:
src
.
int_types__
) {
418
int_types__
.
emplace_back
(
new
O3IntType
(*
t
));
419
}
420
for
(
const
auto
&
t
:
src
.
real_types__
) {
421
real_types__
.
emplace_back
(
new
O3RealType
(*
t
));
422
}
423
for
(
const
auto
&
i
:
src
.
interfaces__
) {
424
interfaces__
.
emplace_back
(
new
O3Interface
(*
i
));
425
}
426
for
(
const
auto
&
c
:
src
.
classes__
) {
427
classes__
.
emplace_back
(
new
O3Class
(*
c
));
428
}
429
for
(
const
auto
&
s
:
src
.
systems__
) {
430
systems__
.
emplace_back
(
new
O3System
(*
s
));
431
}
432
for
(
const
auto
&
i
:
src
.
imports__
) {
433
imports__
.
emplace_back
(
new
O3Import
(*
i
));
434
}
435
}
436
437
O3PRM
::
O3PRM
(
O3PRM
&&
src
) :
438
types__
(
std
::
move
(
src
.
types__
)),
int_types__
(
std
::
move
(
src
.
int_types__
)),
439
real_types__
(
std
::
move
(
src
.
real_types__
)),
440
interfaces__
(
std
::
move
(
src
.
interfaces__
)),
441
classes__
(
std
::
move
(
src
.
classes__
)),
systems__
(
std
::
move
(
src
.
systems__
)),
442
imports__
(
std
::
move
(
src
.
imports__
)) {
443
GUM_CONS_MOV
(
O3PRM
);
444
}
445
446
O3PRM
::~
O3PRM
() {
GUM_DESTRUCTOR
(
O3PRM
); }
447
448
O3PRM
&
O3PRM
::
operator
=(
const
O3PRM
&
src
) {
449
if
(
this
== &
src
) {
return
*
this
; }
450
for
(
const
auto
&
t
:
src
.
types__
) {
451
types__
.
emplace_back
(
new
O3Type
(*
t
));
452
}
453
for
(
const
auto
&
t
:
src
.
int_types__
) {
454
int_types__
.
emplace_back
(
new
O3IntType
(*
t
));
455
}
456
for
(
const
auto
&
t
:
src
.
real_types__
) {
457
real_types__
.
emplace_back
(
new
O3RealType
(*
t
));
458
}
459
for
(
const
auto
&
i
:
src
.
interfaces__
) {
460
interfaces__
.
emplace_back
(
new
O3Interface
(*
i
));
461
}
462
for
(
const
auto
&
c
:
src
.
classes__
) {
463
classes__
.
emplace_back
(
new
O3Class
(*
c
));
464
}
465
for
(
const
auto
&
s
:
src
.
systems__
) {
466
systems__
.
emplace_back
(
new
O3System
(*
s
));
467
}
468
for
(
const
auto
&
i
:
src
.
imports__
) {
469
imports__
.
emplace_back
(
new
O3Import
(*
i
));
470
}
471
return
*
this
;
472
}
473
474
O3PRM
&
O3PRM
::
operator
=(
O3PRM
&&
src
) {
475
if
(
this
== &
src
) {
return
*
this
; }
476
types__
=
std
::
move
(
src
.
types__
);
477
int_types__
=
std
::
move
(
src
.
int_types__
);
478
real_types__
=
std
::
move
(
src
.
real_types__
);
479
interfaces__
=
std
::
move
(
src
.
interfaces__
);
480
classes__
=
std
::
move
(
src
.
classes__
);
481
systems__
=
std
::
move
(
src
.
systems__
);
482
imports__
=
std
::
move
(
src
.
imports__
);
483
return
*
this
;
484
}
485
486
O3PRM
::
O3TypeList
&
O3PRM
::
types
() {
return
types__
; }
487
const
O3PRM
::
O3TypeList
&
O3PRM
::
types
()
const
{
return
types__
; }
488
489
O3PRM
::
O3IntTypeList
&
O3PRM
::
int_types
() {
return
int_types__
; }
490
const
O3PRM
::
O3IntTypeList
&
O3PRM
::
int_types
()
const
{
return
int_types__
; }
491
492
O3PRM
::
O3RealTypeList
&
O3PRM
::
real_types
() {
return
real_types__
; }
493
const
O3PRM
::
O3RealTypeList
&
O3PRM
::
real_types
()
const
{
494
return
real_types__
;
495
}
496
497
O3PRM
::
O3InterfaceList
&
O3PRM
::
interfaces
() {
return
interfaces__
; }
498
const
O3PRM
::
O3InterfaceList
&
O3PRM
::
interfaces
()
const
{
499
return
interfaces__
;
500
}
501
502
O3PRM
::
O3ClassList
&
O3PRM
::
classes
() {
return
classes__
; }
503
504
const
O3PRM
::
O3ClassList
&
O3PRM
::
classes
()
const
{
return
classes__
; }
505
506
O3PRM
::
O3SystemList
&
O3PRM
::
systems
() {
return
systems__
; }
507
508
const
O3PRM
::
O3SystemList
&
O3PRM
::
systems
()
const
{
return
systems__
; }
509
510
O3PRM
::
O3ImportList
&
O3PRM
::
imports
() {
return
imports__
; }
511
512
const
O3PRM
::
O3ImportList
&
O3PRM
::
imports
()
const
{
return
imports__
; }
513
514
O3InterfaceElement
::
O3InterfaceElement
() :
isArray__
(
false
) {
515
GUM_CONSTRUCTOR
(
O3InterfaceElement
);
516
}
517
518
O3InterfaceElement
::
O3InterfaceElement
(
const
O3Label
&
type
,
519
const
O3Label
&
name
,
520
bool
isArray
) :
521
type__
(
type
),
522
name__
(
name
),
isArray__
(
isArray
) {
523
GUM_CONSTRUCTOR
(
O3InterfaceElement
);
524
}
525
526
O3InterfaceElement
::
O3InterfaceElement
(
const
O3InterfaceElement
&
src
) :
527
type__
(
src
.
type__
),
name__
(
src
.
name__
),
isArray__
(
src
.
isArray__
) {
528
GUM_CONS_CPY
(
O3InterfaceElement
);
529
}
530
531
O3InterfaceElement
::
O3InterfaceElement
(
O3InterfaceElement
&&
src
) :
532
type__
(
std
::
move
(
src
.
type__
)),
name__
(
std
::
move
(
src
.
name__
)),
533
isArray__
(
std
::
move
(
src
.
isArray__
)) {
534
GUM_CONS_MOV
(
O3InterfaceElement
);
535
}
536
537
O3InterfaceElement
::~
O3InterfaceElement
() {
538
GUM_DESTRUCTOR
(
O3InterfaceElement
);
539
}
540
541
O3InterfaceElement
&
542
O3InterfaceElement
::
operator
=(
const
O3InterfaceElement
&
src
) {
543
if
(
this
== &
src
) {
return
*
this
; }
544
type__
=
src
.
type__
;
545
name__
=
src
.
name__
;
546
isArray__
=
src
.
isArray__
;
547
return
*
this
;
548
}
549
550
O3InterfaceElement
&
O3InterfaceElement
::
operator
=(
O3InterfaceElement
&&
src
) {
551
if
(
this
== &
src
) {
return
*
this
; }
552
type__
=
std
::
move
(
src
.
type__
);
553
name__
=
std
::
move
(
src
.
name__
);
554
isArray__
=
std
::
move
(
src
.
isArray__
);
555
return
*
this
;
556
}
557
558
O3Label
&
O3InterfaceElement
::
type
() {
return
type__
; }
559
const
O3Label
&
O3InterfaceElement
::
type
()
const
{
return
type__
; }
560
561
O3Label
&
O3InterfaceElement
::
name
() {
return
name__
; }
562
const
O3Label
&
O3InterfaceElement
::
name
()
const
{
return
name__
; }
563
564
bool
&
O3InterfaceElement
::
isArray
() {
return
isArray__
; }
565
bool
O3InterfaceElement
::
isArray
()
const
{
return
isArray__
; }
566
567
O3Interface
::
O3Interface
() :
elts__
(
new
O3InterfaceElementList
()) {
568
GUM_CONSTRUCTOR
(
O3Interface
);
569
}
570
571
O3Interface
::
O3Interface
(
const
O3Interface
&
src
) :
572
pos__
(
src
.
pos__
),
name__
(
src
.
name__
),
superLabel__
(
src
.
superLabel__
) {
573
GUM_CONS_CPY
(
O3Interface
);
574
auto
copy
=
new
O3InterfaceElementList
(
src
.
elements
());
575
elts__
=
std
::
unique_ptr
<
O3InterfaceElementList
>(
copy
);
576
}
577
578
O3Interface
::
O3Interface
(
O3Interface
&&
src
) :
579
pos__
(
std
::
move
(
src
.
pos__
)),
name__
(
std
::
move
(
src
.
name__
)),
580
superLabel__
(
std
::
move
(
src
.
superLabel__
)),
581
elts__
(
std
::
move
(
src
.
elts__
)) {
582
GUM_CONS_MOV
(
O3Interface
);
583
}
584
585
O3Interface
::~
O3Interface
() {
GUM_DESTRUCTOR
(
O3Interface
); }
586
587
O3Interface
&
O3Interface
::
operator
=(
const
O3Interface
&
src
) {
588
if
(
this
== &
src
) {
return
*
this
; }
589
pos__
=
src
.
pos__
;
590
name__
=
src
.
name__
;
591
superLabel__
=
src
.
superLabel__
;
592
auto
copy
=
new
O3InterfaceElementList
(
src
.
elements
());
593
elts__
=
std
::
unique_ptr
<
O3InterfaceElementList
>(
copy
);
594
return
*
this
;
595
}
596
597
O3Interface
&
O3Interface
::
operator
=(
O3Interface
&&
src
) {
598
if
(
this
== &
src
) {
return
*
this
; }
599
pos__
=
std
::
move
(
src
.
pos__
);
600
name__
=
std
::
move
(
src
.
name__
);
601
superLabel__
=
std
::
move
(
src
.
superLabel__
);
602
elts__
=
std
::
move
(
src
.
elts__
);
603
return
*
this
;
604
}
605
606
O3Position
&
O3Interface
::
position
() {
return
pos__
; }
607
const
O3Position
&
O3Interface
::
position
()
const
{
return
pos__
; }
608
609
O3Label
&
O3Interface
::
name
() {
return
name__
; }
610
const
O3Label
&
O3Interface
::
name
()
const
{
return
name__
; }
611
612
O3Label
&
O3Interface
::
superLabel
() {
return
superLabel__
; }
613
const
O3Label
&
O3Interface
::
superLabel
()
const
{
return
superLabel__
; }
614
615
O3Interface
::
O3InterfaceElementList
&
O3Interface
::
elements
() {
616
return
*
elts__
;
617
}
618
const
O3Interface
::
O3InterfaceElementList
&
O3Interface
::
elements
()
const
{
619
return
*
elts__
;
620
}
621
622
O3Attribute
::
O3Attribute
() {
GUM_CONSTRUCTOR
(
O3Attribute
); }
623
624
O3Attribute
::
O3Attribute
(
const
O3Label
&
type
,
625
const
O3Label
&
name
,
626
const
O3LabelList
&
parents
) :
627
type__
(
type
),
628
name__
(
name
),
parents__
(
parents
) {
629
GUM_CONSTRUCTOR
(
O3Attribute
);
630
}
631
632
O3Attribute
::
O3Attribute
(
const
O3Attribute
&
src
) :
633
type__
(
src
.
type__
),
name__
(
src
.
name__
),
parents__
(
src
.
parents__
) {
634
GUM_CONS_CPY
(
O3Attribute
);
635
}
636
637
O3Attribute
::
O3Attribute
(
O3Attribute
&&
src
) :
638
type__
(
std
::
move
(
src
.
type__
)),
name__
(
std
::
move
(
src
.
name__
)),
639
parents__
(
std
::
move
(
src
.
parents__
)) {
640
GUM_CONS_MOV
(
O3Attribute
);
641
}
642
643
O3Attribute
::~
O3Attribute
() {
GUM_DESTRUCTOR
(
O3Attribute
); }
644
645
O3Attribute
&
O3Attribute
::
operator
=(
const
O3Attribute
&
src
) {
646
if
(
this
== &
src
) {
return
*
this
; }
647
type__
=
src
.
type__
;
648
name__
=
src
.
name__
;
649
parents__
=
src
.
parents__
;
650
return
*
this
;
651
}
652
653
O3Attribute
&
O3Attribute
::
operator
=(
O3Attribute
&&
src
) {
654
if
(
this
== &
src
) {
return
*
this
; }
655
type__
=
std
::
move
(
src
.
type__
);
656
name__
=
std
::
move
(
src
.
name__
);
657
parents__
=
std
::
move
(
src
.
parents__
);
658
return
*
this
;
659
}
660
661
O3Label
&
O3Attribute
::
type
() {
return
type__
; }
662
const
O3Label
&
O3Attribute
::
type
()
const
{
return
type__
; }
663
664
O3Label
&
O3Attribute
::
name
() {
return
name__
; }
665
const
O3Label
&
O3Attribute
::
name
()
const
{
return
name__
; }
666
667
O3Attribute
::
O3LabelList
&
O3Attribute
::
parents
() {
return
parents__
; }
668
const
O3Attribute
::
O3LabelList
&
O3Attribute
::
parents
()
const
{
669
return
parents__
;
670
}
671
672
O3RawCPT
::
O3RawCPT
() :
O3Attribute
(),
values__
{
new
O3FormulaList
{}} {
673
GUM_CONSTRUCTOR
(
O3RawCPT
);
674
}
675
676
O3RawCPT
::
O3RawCPT
(
const
O3Label
&
type
,
677
const
O3Label
&
name
,
678
const
O3LabelList
&
parents
,
679
const
O3FormulaList
&
values
) :
680
O3Attribute
(
type
,
name
,
parents
) {
681
GUM_CONSTRUCTOR
(
O3RawCPT
);
682
auto
copy
=
new
O3FormulaList
(
values
);
683
values__
=
std
::
unique_ptr
<
O3FormulaList
>(
copy
);
684
}
685
686
O3RawCPT
::
O3RawCPT
(
const
O3RawCPT
&
src
) :
O3Attribute
(
src
) {
687
GUM_CONS_CPY
(
O3RawCPT
);
688
auto
copy
=
new
O3FormulaList
(*(
src
.
values__
));
689
values__
=
std
::
unique_ptr
<
O3FormulaList
>(
copy
);
690
}
691
692
O3RawCPT
::
O3RawCPT
(
O3RawCPT
&&
src
) :
693
O3Attribute
(
src
),
values__
(
std
::
move
(
src
.
values__
)) {
694
GUM_CONS_MOV
(
O3RawCPT
);
695
}
696
697
O3RawCPT
::~
O3RawCPT
() {
GUM_DESTRUCTOR
(
O3RawCPT
); }
698
699
O3RawCPT
&
O3RawCPT
::
operator
=(
const
O3RawCPT
&
src
) {
700
if
(
this
== &
src
) {
return
*
this
; }
701
O3Attribute
::
operator
=(
src
);
702
auto
copy
=
new
O3FormulaList
(*(
src
.
values__
));
703
values__
=
std
::
unique_ptr
<
O3FormulaList
>(
copy
);
704
return
*
this
;
705
}
706
707
O3RawCPT
&
O3RawCPT
::
operator
=(
O3RawCPT
&&
src
) {
708
if
(
this
== &
src
) {
return
*
this
; }
709
O3Attribute
::
operator
=(
src
);
710
values__
=
std
::
move
(
src
.
values__
);
711
return
*
this
;
712
}
713
714
O3RawCPT
::
O3FormulaList
&
O3RawCPT
::
values
() {
return
*
values__
; }
715
716
const
O3RawCPT
::
O3FormulaList
&
O3RawCPT
::
values
()
const
{
return
*
values__
; }
717
718
std
::
unique_ptr
<
O3Attribute
>
O3RawCPT
::
copy
()
const
{
719
auto
copy
=
new
O3RawCPT
(*
this
);
720
return
std
::
unique_ptr
<
O3Attribute
>(
copy
);
721
}
722
723
O3RuleCPT
::
O3RuleCPT
() :
O3Attribute
(),
rules__
{
new
O3RuleList
{}} {
724
GUM_CONSTRUCTOR
(
O3RuleCPT
);
725
}
726
727
O3RuleCPT
::
O3RuleCPT
(
const
O3Label
&
type
,
728
const
O3Label
&
name
,
729
const
O3Attribute
::
O3LabelList
&
parents
,
730
O3RuleList
&&
rules
) :
731
O3Attribute
(
type
,
name
,
parents
),
732
rules__
(
std
::
unique_ptr
<
O3RuleList
>(
new
O3RuleList
(
rules
))) {
733
GUM_CONSTRUCTOR
(
O3RuleCPT
);
734
}
735
736
O3RuleCPT
::
O3RuleCPT
(
const
O3RuleCPT
&
src
) :
737
O3Attribute
(
src
),
738
rules__
(
std
::
unique_ptr
<
O3RuleList
>(
new
O3RuleList
(
src
.
rules
()))) {
739
GUM_CONS_CPY
(
O3RuleCPT
);
740
}
741
742
O3RuleCPT
::
O3RuleCPT
(
O3RuleCPT
&&
src
) :
743
O3Attribute
(
src
),
rules__
(
std
::
move
(
src
.
rules__
)) {
744
GUM_CONS_MOV
(
O3RuleCPT
);
745
}
746
747
O3RuleCPT
::~
O3RuleCPT
() {
GUM_DESTRUCTOR
(
O3RuleCPT
); }
748
749
O3RuleCPT
&
O3RuleCPT
::
operator
=(
const
O3RuleCPT
&
src
) {
750
if
(
this
== &
src
) {
return
*
this
; }
751
752
O3Attribute
::
operator
=(
src
);
753
rules__
=
std
::
unique_ptr
<
O3RuleList
>(
new
O3RuleList
(
src
.
rules
()));
754
return
*
this
;
755
}
756
757
O3RuleCPT
&
O3RuleCPT
::
operator
=(
O3RuleCPT
&&
src
) {
758
if
(
this
== &
src
) {
return
*
this
; }
759
760
O3Attribute
::
operator
=(
src
);
761
rules__
=
std
::
move
(
src
.
rules__
);
762
return
*
this
;
763
}
764
765
O3RuleCPT
::
O3RuleList
&
O3RuleCPT
::
rules
() {
return
*
rules__
; }
766
const
O3RuleCPT
::
O3RuleList
&
O3RuleCPT
::
rules
()
const
{
return
*
rules__
; }
767
768
std
::
unique_ptr
<
O3Attribute
>
O3RuleCPT
::
copy
()
const
{
769
auto
copy
=
new
O3RuleCPT
(*
this
);
770
return
std
::
unique_ptr
<
O3Attribute
>(
copy
);
771
}
772
773
O3Class
::
O3Class
() {
774
GUM_CONSTRUCTOR
(
O3Class
);
775
776
auto
i
=
new
O3LabelList
();
777
interfaces__
=
std
::
unique_ptr
<
O3LabelList
>(
i
);
778
779
auto
p
=
new
O3ParameterList
();
780
params__
=
std
::
unique_ptr
<
O3ParameterList
>(
p
);
781
782
auto
r
=
new
O3ReferenceSlotList
();
783
refs__
=
std
::
unique_ptr
<
O3ReferenceSlotList
>(
r
);
784
785
auto
e
=
new
O3AttributeList
();
786
attrs__
=
std
::
unique_ptr
<
O3AttributeList
>(
e
);
787
788
auto
a
=
new
O3AggregateList
();
789
aggs__
=
std
::
unique_ptr
<
O3AggregateList
>(
a
);
790
}
791
792
O3Class
::
O3Class
(
const
O3Class
&
src
) :
793
pos__
(
src
.
pos__
),
name__
(
src
.
name__
),
superLabel__
(
src
.
superLabel__
) {
794
GUM_CONS_CPY
(
O3Class
);
795
auto
i
=
new
O3LabelList
(
src
.
interfaces
());
796
interfaces__
=
std
::
unique_ptr
<
O3LabelList
>(
i
);
797
798
auto
p
=
new
O3ParameterList
(
src
.
parameters
());
799
params__
=
std
::
unique_ptr
<
O3ParameterList
>(
p
);
800
801
auto
r
=
new
O3ReferenceSlotList
(
src
.
referenceSlots
());
802
refs__
=
std
::
unique_ptr
<
O3ReferenceSlotList
>(
r
);
803
804
auto
e
=
new
O3AttributeList
();
805
attrs__
=
std
::
unique_ptr
<
O3AttributeList
>(
e
);
806
for
(
const
auto
&
elt
:
src
.
attributes
()) {
807
attrs__
->
push_back
(
elt
->
copy
());
808
}
809
810
auto
a
=
new
O3AggregateList
(
src
.
aggregates
());
811
aggs__
=
std
::
unique_ptr
<
O3AggregateList
>(
a
);
812
}
813
814
O3Class
::
O3Class
(
O3Class
&&
src
) :
815
pos__
(
std
::
move
(
src
.
pos__
)),
name__
(
std
::
move
(
src
.
name__
)),
816
superLabel__
(
std
::
move
(
src
.
superLabel__
)),
817
interfaces__
(
std
::
move
(
src
.
interfaces__
)),
818
params__
(
std
::
move
(
src
.
params__
)),
refs__
(
std
::
move
(
src
.
refs__
)),
819
attrs__
(
std
::
move
(
src
.
attrs__
)),
aggs__
(
std
::
move
(
src
.
aggs__
)) {
820
GUM_CONS_MOV
(
O3Class
);
821
}
822
823
O3Class
::~
O3Class
() {
GUM_DESTRUCTOR
(
O3Class
); }
824
825
O3Class
&
O3Class
::
operator
=(
const
O3Class
&
src
) {
826
if
(
this
== &
src
) {
return
*
this
; }
827
pos__
=
src
.
pos__
;
828
name__
=
src
.
name__
;
829
superLabel__
=
src
.
superLabel__
;
830
831
auto
i
=
new
O3LabelList
(
src
.
interfaces
());
832
interfaces__
=
std
::
unique_ptr
<
O3LabelList
>(
i
);
833
834
auto
p
=
new
O3ParameterList
(
src
.
parameters
());
835
params__
=
std
::
unique_ptr
<
O3ParameterList
>(
p
);
836
837
auto
r
=
new
O3ReferenceSlotList
(
src
.
referenceSlots
());
838
refs__
=
std
::
unique_ptr
<
O3ReferenceSlotList
>(
r
);
839
840
auto
e
=
new
O3AttributeList
();
841
attrs__
=
std
::
unique_ptr
<
O3AttributeList
>(
e
);
842
for
(
const
auto
&
elt
:
src
.
attributes
()) {
843
attrs__
->
push_back
(
elt
->
copy
());
844
}
845
846
auto
a
=
new
O3AggregateList
(
src
.
aggregates
());
847
aggs__
=
std
::
unique_ptr
<
O3AggregateList
>(
a
);
848
return
*
this
;
849
}
850
851
O3Class
&
O3Class
::
operator
=(
O3Class
&&
src
) {
852
if
(
this
== &
src
) {
return
*
this
; }
853
pos__
=
std
::
move
(
src
.
pos__
);
854
name__
=
std
::
move
(
src
.
name__
);
855
superLabel__
=
std
::
move
(
src
.
superLabel__
);
856
interfaces__
=
std
::
move
(
src
.
interfaces__
);
857
params__
=
std
::
move
(
src
.
params__
);
858
refs__
=
std
::
move
(
src
.
refs__
);
859
attrs__
=
std
::
move
(
src
.
attrs__
);
860
aggs__
=
std
::
move
(
src
.
aggs__
);
861
return
*
this
;
862
}
863
864
const
O3Position
&
O3Class
::
position
()
const
{
return
pos__
; }
865
O3Position
&
O3Class
::
position
() {
return
pos__
; }
866
867
const
O3Label
&
O3Class
::
name
()
const
{
return
name__
; }
868
O3Label
&
O3Class
::
name
() {
return
name__
; }
869
870
const
O3Label
&
O3Class
::
superLabel
()
const
{
return
superLabel__
; }
871
O3Label
&
O3Class
::
superLabel
() {
return
superLabel__
; }
872
873
const
O3Class
::
O3LabelList
&
O3Class
::
interfaces
()
const
{
874
return
*
interfaces__
;
875
}
876
O3Class
::
O3LabelList
&
O3Class
::
interfaces
() {
return
*
interfaces__
; }
877
878
const
O3Class
::
O3ParameterList
&
O3Class
::
parameters
()
const
{
879
return
*
params__
;
880
}
881
O3Class
::
O3ParameterList
&
O3Class
::
parameters
() {
return
*
params__
; }
882
883
const
O3Class
::
O3ReferenceSlotList
&
O3Class
::
referenceSlots
()
const
{
884
return
*
refs__
;
885
}
886
O3Class
::
O3ReferenceSlotList
&
O3Class
::
referenceSlots
() {
return
*
refs__
; }
887
888
O3Class
::
O3AttributeList
&
O3Class
::
attributes
() {
return
*
attrs__
; }
889
890
const
O3Class
::
O3AttributeList
&
O3Class
::
attributes
()
const
{
891
return
*
attrs__
;
892
}
893
894
O3Class
::
O3AggregateList
&
O3Class
::
aggregates
() {
return
*
aggs__
; }
895
const
O3Class
::
O3AggregateList
&
O3Class
::
aggregates
()
const
{
896
return
*
aggs__
;
897
}
898
899
O3Parameter
::
O3Parameter
() :
type__
(
O3Parameter
::
PRMType
::
NONE
) {
900
GUM_CONSTRUCTOR
(
O3Parameter
);
901
}
902
903
O3Parameter
::
O3Parameter
(
const
O3Position
&
pos
,
904
const
O3Label
&
name
,
905
const
O3Integer
&
value
) :
906
type__
(
O3Parameter
::
PRMType
::
INT
),
907
pos__
(
pos
),
name__
(
name
),
908
value__
(
O3Float
(
value
.
position
(), (
float
)
value
.
value
())) {
909
GUM_CONSTRUCTOR
(
O3Parameter
);
910
}
911
912
O3Parameter
::
O3Parameter
(
const
O3Position
&
pos
,
913
const
O3Label
&
name
,
914
const
O3Float
&
value
) :
915
type__
(
O3Parameter
::
PRMType
::
FLOAT
),
916
pos__
(
pos
),
name__
(
name
),
value__
(
value
) {
917
GUM_CONSTRUCTOR
(
O3Parameter
);
918
}
919
920
O3Parameter
::
O3Parameter
(
const
O3Parameter
&
src
) :
921
type__
(
src
.
type__
),
pos__
(
src
.
pos__
),
name__
(
src
.
name__
),
922
value__
(
src
.
value__
) {
923
GUM_CONS_CPY
(
O3Parameter
);
924
}
925
926
O3Parameter
::
O3Parameter
(
O3Parameter
&&
src
) :
927
type__
(
std
::
move
(
src
.
type__
)),
pos__
(
std
::
move
(
src
.
pos__
)),
928
name__
(
std
::
move
(
src
.
name__
)),
value__
(
std
::
move
(
src
.
value__
)) {
929
GUM_CONS_MOV
(
O3Parameter
);
930
}
931
932
O3Parameter
::~
O3Parameter
() {
GUM_DESTRUCTOR
(
O3Parameter
); }
933
934
O3Parameter
&
O3Parameter
::
operator
=(
const
O3Parameter
&
src
) {
935
if
(
this
== &
src
) {
return
*
this
; }
936
type__
=
src
.
type__
;
937
pos__
=
src
.
pos__
;
938
name__
=
src
.
name__
;
939
value__
=
src
.
value__
;
940
return
*
this
;
941
}
942
943
O3Parameter
&
O3Parameter
::
operator
=(
O3Parameter
&&
src
) {
944
if
(
this
== &
src
) {
return
*
this
; }
945
type__
=
std
::
move
(
src
.
type__
);
946
pos__
=
std
::
move
(
src
.
pos__
);
947
name__
=
std
::
move
(
src
.
name__
);
948
value__
=
std
::
move
(
src
.
value__
);
949
return
*
this
;
950
}
951
952
O3Parameter
::
PRMType
&
O3Parameter
::
type
() {
return
type__
; }
953
O3Parameter
::
PRMType
O3Parameter
::
type
()
const
{
return
type__
; }
954
955
O3Position
&
O3Parameter
::
position
() {
return
pos__
; }
956
const
O3Position
&
O3Parameter
::
position
()
const
{
return
pos__
; }
957
958
O3Label
&
O3Parameter
::
name
() {
return
name__
; }
959
const
O3Label
&
O3Parameter
::
name
()
const
{
return
name__
; }
960
961
O3Float
&
O3Parameter
::
value
() {
return
value__
; }
962
const
O3Float
&
O3Parameter
::
value
()
const
{
return
value__
; }
963
964
O3ReferenceSlot
::
O3ReferenceSlot
() {
GUM_CONSTRUCTOR
(
O3ReferenceSlot
); }
965
966
O3ReferenceSlot
::
O3ReferenceSlot
(
const
O3Label
&
type
,
967
const
O3Label
&
name
,
968
bool
isArray
) :
969
type__
(
type
),
970
name__
(
name
),
isArray__
(
isArray
) {
971
GUM_CONSTRUCTOR
(
O3ReferenceSlot
);
972
}
973
974
O3ReferenceSlot
::
O3ReferenceSlot
(
const
O3ReferenceSlot
&
src
) :
975
type__
(
src
.
type__
),
name__
(
src
.
name__
),
isArray__
(
src
.
isArray__
) {
976
GUM_CONS_CPY
(
O3ReferenceSlot
);
977
}
978
979
O3ReferenceSlot
::
O3ReferenceSlot
(
O3ReferenceSlot
&&
src
) :
980
type__
(
std
::
move
(
src
.
type__
)),
name__
(
std
::
move
(
src
.
name__
)),
981
isArray__
(
std
::
move
(
src
.
isArray__
)) {
982
GUM_CONS_MOV
(
O3ReferenceSlot
);
983
}
984
985
O3ReferenceSlot
::~
O3ReferenceSlot
() {
GUM_DESTRUCTOR
(
O3ReferenceSlot
); }
986
987
O3ReferenceSlot
&
O3ReferenceSlot
::
operator
=(
const
O3ReferenceSlot
&
src
) {
988
if
(
this
== &
src
) {
return
*
this
; }
989
type__
=
src
.
type__
;
990
name__
=
src
.
name__
;
991
isArray__
=
src
.
isArray__
;
992
return
*
this
;
993
}
994
995
O3ReferenceSlot
&
O3ReferenceSlot
::
operator
=(
O3ReferenceSlot
&&
src
) {
996
if
(
this
== &
src
) {
return
*
this
; }
997
type__
=
std
::
move
(
src
.
type__
);
998
name__
=
std
::
move
(
src
.
name__
);
999
isArray__
=
std
::
move
(
src
.
isArray__
);
1000
return
*
this
;
1001
}
1002
1003
O3Label
&
O3ReferenceSlot
::
type
() {
return
type__
; }
1004
const
O3Label
&
O3ReferenceSlot
::
type
()
const
{
return
type__
; }
1005
1006
O3Label
&
O3ReferenceSlot
::
name
() {
return
name__
; }
1007
const
O3Label
&
O3ReferenceSlot
::
name
()
const
{
return
name__
; }
1008
1009
bool
&
O3ReferenceSlot
::
isArray
() {
return
isArray__
; }
1010
bool
O3ReferenceSlot
::
isArray
()
const
{
return
isArray__
; }
1011
1012
O3Aggregate
::
O3Aggregate
() :
1013
variableType__
(),
aggregateType__
(),
name__
(),
parents__
(),
1014
parameters__
() {
1015
GUM_CONSTRUCTOR
(
O3Aggregate
);
1016
}
1017
1018
O3Aggregate
::
O3Aggregate
(
const
O3Aggregate
&
src
) :
1019
variableType__
(
src
.
variableType__
),
aggregateType__
(
src
.
aggregateType__
),
1020
name__
(
src
.
name__
),
parents__
(
src
.
parents__
),
1021
parameters__
(
src
.
parameters__
) {
1022
GUM_CONS_CPY
(
O3Aggregate
);
1023
}
1024
1025
O3Aggregate
::
O3Aggregate
(
O3Aggregate
&&
src
) :
1026
variableType__
(
std
::
move
(
src
.
variableType__
)),
1027
aggregateType__
(
std
::
move
(
src
.
aggregateType__
)),
1028
name__
(
std
::
move
(
src
.
name__
)),
parents__
(
std
::
move
(
src
.
parents__
)),
1029
parameters__
(
std
::
move
(
src
.
parameters__
)) {
1030
GUM_CONS_MOV
(
O3Aggregate
);
1031
}
1032
1033
O3Aggregate
::~
O3Aggregate
() {
GUM_DESTRUCTOR
(
O3Aggregate
); }
1034
1035
O3Aggregate
&
O3Aggregate
::
operator
=(
const
O3Aggregate
&
src
) {
1036
if
(
this
== &
src
) {
return
*
this
; }
1037
aggregateType__
=
src
.
aggregateType__
;
1038
variableType__
=
src
.
variableType__
;
1039
name__
=
src
.
name__
;
1040
parents__
=
src
.
parents__
;
1041
parameters__
=
src
.
parameters__
;
1042
return
*
this
;
1043
}
1044
1045
O3Aggregate
&
O3Aggregate
::
operator
=(
O3Aggregate
&&
src
) {
1046
if
(
this
== &
src
) {
return
*
this
; }
1047
aggregateType__
=
std
::
move
(
src
.
aggregateType__
);
1048
variableType__
=
std
::
move
(
src
.
variableType__
);
1049
name__
=
std
::
move
(
src
.
name__
);
1050
parents__
=
std
::
move
(
src
.
parents__
);
1051
parameters__
=
std
::
move
(
src
.
parameters__
);
1052
return
*
this
;
1053
}
1054
1055
O3Label
&
O3Aggregate
::
variableType
() {
return
variableType__
; }
1056
1057
const
O3Label
&
O3Aggregate
::
variableType
()
const
{
return
variableType__
; }
1058
1059
O3Label
&
O3Aggregate
::
aggregateType
() {
return
aggregateType__
; }
1060
1061
const
O3Label
&
O3Aggregate
::
aggregateType
()
const
{
return
aggregateType__
; }
1062
1063
O3Label
&
O3Aggregate
::
name
() {
return
name__
; }
1064
1065
const
O3Label
&
O3Aggregate
::
name
()
const
{
return
name__
; }
1066
1067
O3Aggregate
::
O3LabelList
&
O3Aggregate
::
parents
() {
return
parents__
; }
1068
1069
const
O3Aggregate
::
O3LabelList
&
O3Aggregate
::
parents
()
const
{
1070
return
parents__
;
1071
}
1072
1073
O3Aggregate
::
O3LabelList
&
O3Aggregate
::
parameters
() {
return
parameters__
; }
1074
1075
const
O3Aggregate
::
O3LabelList
&
O3Aggregate
::
parameters
()
const
{
1076
return
parameters__
;
1077
}
1078
1079
O3Assignment
::
O3Assignment
() {
GUM_CONSTRUCTOR
(
O3Assignment
); }
1080
1081
O3Assignment
::
O3Assignment
(
const
O3Assignment
&
src
) :
1082
leftInstance__
(
src
.
leftInstance__
),
leftIndex__
(
src
.
leftIndex__
),
1083
leftReference__
(
src
.
leftReference__
),
1084
rightInstance__
(
src
.
rightInstance__
),
rightIndex__
(
src
.
rightIndex__
) {
1085
GUM_CONS_CPY
(
O3Assignment
);
1086
}
1087
1088
O3Assignment
::
O3Assignment
(
O3Assignment
&&
src
) :
1089
leftInstance__
(
std
::
move
(
src
.
leftInstance__
)),
1090
leftIndex__
(
std
::
move
(
src
.
leftIndex__
)),
1091
leftReference__
(
std
::
move
(
src
.
leftReference__
)),
1092
rightInstance__
(
std
::
move
(
src
.
rightInstance__
)),
1093
rightIndex__
(
std
::
move
(
src
.
rightIndex__
)) {
1094
GUM_CONS_CPY
(
O3Assignment
);
1095
}
1096
1097
O3Assignment
::~
O3Assignment
() {
GUM_DESTRUCTOR
(
O3Assignment
); }
1098
1099
O3Assignment
&
O3Assignment
::
operator
=(
const
O3Assignment
&
src
) {
1100
if
(
this
== &
src
) {
return
*
this
; }
1101
leftInstance__
=
src
.
leftInstance__
;
1102
leftIndex__
=
src
.
leftIndex__
;
1103
leftReference__
=
src
.
leftReference__
;
1104
rightInstance__
=
src
.
rightInstance__
;
1105
rightIndex__
=
src
.
rightIndex__
;
1106
return
*
this
;
1107
}
1108
1109
O3Assignment
&
O3Assignment
::
operator
=(
O3Assignment
&&
src
) {
1110
if
(
this
== &
src
) {
return
*
this
; }
1111
leftInstance__
=
std
::
move
(
src
.
leftInstance__
);
1112
leftIndex__
=
std
::
move
(
src
.
leftIndex__
);
1113
leftReference__
=
std
::
move
(
src
.
leftReference__
);
1114
rightInstance__
=
std
::
move
(
src
.
rightInstance__
);
1115
rightIndex__
=
std
::
move
(
src
.
rightIndex__
);
1116
return
*
this
;
1117
}
1118
1119
const
O3Label
&
O3Assignment
::
leftInstance
()
const
{
return
leftInstance__
; }
1120
1121
O3Label
&
O3Assignment
::
leftInstance
() {
return
leftInstance__
; }
1122
1123
const
O3Integer
&
O3Assignment
::
leftIndex
()
const
{
return
leftIndex__
; }
1124
1125
O3Integer
&
O3Assignment
::
leftIndex
() {
return
leftIndex__
; }
1126
1127
const
O3Label
&
O3Assignment
::
leftReference
()
const
{
1128
return
leftReference__
;
1129
}
1130
1131
O3Label
&
O3Assignment
::
leftReference
() {
return
leftReference__
; }
1132
1133
const
O3Label
&
O3Assignment
::
rightInstance
()
const
{
1134
return
rightInstance__
;
1135
}
1136
1137
O3Label
&
O3Assignment
::
rightInstance
() {
return
rightInstance__
; }
1138
1139
O3Integer
&
O3Assignment
::
rightIndex
() {
return
rightIndex__
; }
1140
1141
const
O3Integer
&
O3Assignment
::
rightIndex
()
const
{
return
rightIndex__
; }
1142
1143
O3Increment
::
O3Increment
() {
GUM_CONSTRUCTOR
(
O3Increment
); }
1144
1145
O3Increment
::
O3Increment
(
const
O3Increment
&
src
) :
1146
leftInstance__
(
src
.
leftInstance__
),
leftIndex__
(
src
.
leftIndex__
),
1147
leftReference__
(
src
.
leftReference__
),
1148
rightInstance__
(
src
.
rightInstance__
),
rightIndex__
(
src
.
rightIndex__
) {
1149
GUM_CONS_CPY
(
O3Increment
);
1150
}
1151
1152
O3Increment
::
O3Increment
(
O3Increment
&&
src
) :
1153
leftInstance__
(
std
::
move
(
src
.
leftInstance__
)),
1154
leftIndex__
(
std
::
move
(
src
.
leftIndex__
)),
1155
leftReference__
(
std
::
move
(
src
.
leftReference__
)),
1156
rightInstance__
(
std
::
move
(
src
.
rightInstance__
)),
1157
rightIndex__
(
std
::
move
(
src
.
rightIndex__
)) {
1158
GUM_CONS_CPY
(
O3Increment
);
1159
}
1160
1161
O3Increment
::~
O3Increment
() {
GUM_DESTRUCTOR
(
O3Increment
); }
1162
1163
O3Increment
&
O3Increment
::
operator
=(
const
O3Increment
&
src
) {
1164
if
(
this
== &
src
) {
return
*
this
; }
1165
leftInstance__
=
src
.
leftInstance__
;
1166
leftIndex__
=
src
.
leftIndex__
;
1167
leftReference__
=
src
.
leftReference__
;
1168
rightInstance__
=
src
.
rightInstance__
;
1169
rightIndex__
=
src
.
rightIndex__
;
1170
return
*
this
;
1171
}
1172
1173
O3Increment
&
O3Increment
::
operator
=(
O3Increment
&&
src
) {
1174
if
(
this
== &
src
) {
return
*
this
; }
1175
leftInstance__
=
std
::
move
(
src
.
leftInstance__
);
1176
leftIndex__
=
std
::
move
(
src
.
leftIndex__
);
1177
leftReference__
=
std
::
move
(
src
.
leftReference__
);
1178
rightInstance__
=
std
::
move
(
src
.
rightInstance__
);
1179
rightIndex__
=
std
::
move
(
src
.
rightIndex__
);
1180
return
*
this
;
1181
}
1182
1183
const
O3Label
&
O3Increment
::
leftInstance
()
const
{
return
leftInstance__
; }
1184
1185
O3Label
&
O3Increment
::
leftInstance
() {
return
leftInstance__
; }
1186
1187
const
O3Integer
&
O3Increment
::
leftIndex
()
const
{
return
leftIndex__
; }
1188
1189
O3Integer
&
O3Increment
::
leftIndex
() {
return
leftIndex__
; }
1190
1191
const
O3Label
&
O3Increment
::
leftReference
()
const
{
return
leftReference__
; }
1192
1193
O3Label
&
O3Increment
::
leftReference
() {
return
leftReference__
; }
1194
1195
const
O3Label
&
O3Increment
::
rightInstance
()
const
{
return
rightInstance__
; }
1196
1197
O3Integer
&
O3Increment
::
rightIndex
() {
return
rightIndex__
; }
1198
const
O3Integer
&
O3Increment
::
rightIndex
()
const
{
return
rightIndex__
; }
1199
1200
O3Label
&
O3Increment
::
rightInstance
() {
return
rightInstance__
; }
1201
1202
O3Instance
::
O3Instance
() {
GUM_CONSTRUCTOR
(
O3Instance
); }
1203
1204
O3Instance
::
O3Instance
(
const
O3Instance
&
src
) :
1205
type__
(
src
.
type__
),
name__
(
src
.
name__
),
size__
(
src
.
size__
),
1206
parameters__
(
src
.
parameters__
) {
1207
GUM_CONS_CPY
(
O3Instance
);
1208
}
1209
1210
O3Instance
::
O3Instance
(
O3Instance
&&
src
) :
1211
type__
(
std
::
move
(
src
.
type__
)),
name__
(
std
::
move
(
src
.
name__
)),
1212
size__
(
std
::
move
(
src
.
size__
)),
1213
parameters__
(
std
::
move
(
src
.
parameters__
)) {
1214
GUM_CONS_MOV
(
O3Instance
);
1215
}
1216
1217
O3Instance
::~
O3Instance
() {
GUM_DESTRUCTOR
(
O3Instance
); }
1218
1219
O3Instance
&
O3Instance
::
operator
=(
const
O3Instance
&
src
) {
1220
if
(
this
== &
src
) {
return
*
this
; }
1221
type__
=
src
.
type__
;
1222
name__
=
src
.
name__
;
1223
size__
=
src
.
size__
;
1224
parameters__
=
src
.
parameters__
;
1225
return
*
this
;
1226
}
1227
1228
O3Instance
&
O3Instance
::
operator
=(
O3Instance
&&
src
) {
1229
if
(
this
== &
src
) {
return
*
this
; }
1230
type__
=
std
::
move
(
src
.
type__
);
1231
name__
=
std
::
move
(
src
.
name__
);
1232
size__
=
std
::
move
(
src
.
size__
);
1233
parameters__
=
std
::
move
(
src
.
parameters__
);
1234
return
*
this
;
1235
}
1236
1237
const
O3Label
&
O3Instance
::
type
()
const
{
return
type__
; }
1238
1239
O3Label
&
O3Instance
::
type
() {
return
type__
; }
1240
1241
const
O3Label
&
O3Instance
::
name
()
const
{
return
name__
; }
1242
1243
O3Label
&
O3Instance
::
name
() {
return
name__
; }
1244
1245
const
O3Integer
&
O3Instance
::
size
()
const
{
return
size__
; }
1246
1247
O3Integer
&
O3Instance
::
size
() {
return
size__
; }
1248
1249
const
O3Instance
::
O3InstanceParameterList
&
O3Instance
::
parameters
()
const
{
1250
return
parameters__
;
1251
}
1252
1253
O3Instance
::
O3InstanceParameterList
&
O3Instance
::
parameters
() {
1254
return
parameters__
;
1255
}
1256
1257
O3System
::
O3System
() {
GUM_CONSTRUCTOR
(
O3System
); }
1258
1259
O3System
::
O3System
(
const
O3System
&
src
) :
1260
name__
(
src
.
name__
),
instances__
(
src
.
instances__
),
1261
assigments__
(
src
.
assigments__
),
increments__
(
src
.
increments__
) {
1262
GUM_CONS_CPY
(
O3System
);
1263
}
1264
1265
O3System
::
O3System
(
O3System
&&
src
) :
1266
name__
(
std
::
move
(
src
.
name__
)),
instances__
(
std
::
move
(
src
.
instances__
)),
1267
assigments__
(
std
::
move
(
src
.
assigments__
)),
1268
increments__
(
std
::
move
(
src
.
increments__
)) {
1269
GUM_CONS_MOV
(
O3System
);
1270
}
1271
1272
O3System
::~
O3System
() {
GUM_DESTRUCTOR
(
O3System
); }
1273
1274
O3System
&
O3System
::
operator
=(
const
O3System
&
src
) {
1275
if
(
this
== &
src
) {
return
*
this
; }
1276
name__
=
src
.
name__
;
1277
instances__
=
src
.
instances__
;
1278
assigments__
=
src
.
assigments__
;
1279
increments__
=
src
.
increments__
;
1280
return
*
this
;
1281
}
1282
1283
O3System
&
O3System
::
operator
=(
O3System
&&
src
) {
1284
if
(
this
== &
src
) {
return
*
this
; }
1285
name__
=
std
::
move
(
src
.
name__
);
1286
instances__
=
std
::
move
(
src
.
instances__
);
1287
assigments__
=
std
::
move
(
src
.
assigments__
);
1288
increments__
=
std
::
move
(
src
.
increments__
);
1289
return
*
this
;
1290
}
1291
1292
const
O3Label
&
O3System
::
name
()
const
{
return
name__
; }
1293
1294
O3Label
&
O3System
::
name
() {
return
name__
; }
1295
1296
const
O3System
::
O3InstanceList
&
O3System
::
instances
()
const
{
1297
return
instances__
;
1298
}
1299
1300
O3System
::
O3InstanceList
&
O3System
::
instances
() {
return
instances__
; }
1301
1302
const
O3System
::
O3AssignmentList
&
O3System
::
assignments
()
const
{
1303
return
assigments__
;
1304
}
1305
1306
O3System
::
O3AssignmentList
&
O3System
::
assignments
() {
return
assigments__
; }
1307
1308
const
O3System
::
O3IncrementList
&
O3System
::
increments
()
const
{
1309
return
increments__
;
1310
}
1311
1312
O3System
::
O3IncrementList
&
O3System
::
increments
() {
return
increments__
; }
1313
1314
std
::
ostream
&
operator
<<(
std
::
ostream
&
o
,
const
O3Label
&
src
) {
1315
o << src.label();
1316
return
o;
1317
}
1318
1319
O3InstanceParameter
::
O3InstanceParameter
() :
isInteger__
(
false
) {
1320
GUM_CONSTRUCTOR
(
O3InstanceParameter
);
1321
}
1322
1323
O3InstanceParameter
::
O3InstanceParameter
(
const
O3InstanceParameter
&
src
) :
1324
name__
(
src
.
name__
),
value__
(
src
.
value__
),
isInteger__
(
src
.
isInteger__
) {
1325
GUM_CONS_CPY
(
O3InstanceParameter
);
1326
}
1327
1328
O3InstanceParameter
::
O3InstanceParameter
(
O3InstanceParameter
&&
src
) :
1329
name__
(
std
::
move
(
src
.
name__
)),
value__
(
std
::
move
(
src
.
value__
)),
1330
isInteger__
(
std
::
move
(
src
.
isInteger__
)) {
1331
GUM_CONS_MOV
(
O3InstanceParameter
);
1332
}
1333
1334
O3InstanceParameter
::~
O3InstanceParameter
() {
1335
GUM_DESTRUCTOR
(
O3InstanceParameter
);
1336
}
1337
1338
O3InstanceParameter
&
1339
O3InstanceParameter
::
operator
=(
const
O3InstanceParameter
&
src
) {
1340
if
(
this
== &
src
) {
return
*
this
; }
1341
name__
=
src
.
name__
;
1342
value__
=
src
.
value__
;
1343
isInteger__
=
src
.
isInteger__
;
1344
return
*
this
;
1345
}
1346
1347
O3InstanceParameter
&
1348
O3InstanceParameter
::
operator
=(
O3InstanceParameter
&&
src
) {
1349
if
(
this
== &
src
) {
return
*
this
; }
1350
name__
=
std
::
move
(
src
.
name__
);
1351
value__
=
std
::
move
(
src
.
value__
);
1352
isInteger__
=
std
::
move
(
src
.
isInteger__
);
1353
return
*
this
;
1354
}
1355
1356
const
O3Label
&
O3InstanceParameter
::
name
()
const
{
return
name__
; }
1357
1358
O3Label
&
O3InstanceParameter
::
name
() {
return
name__
; }
1359
1360
const
O3Float
&
O3InstanceParameter
::
value
()
const
{
return
value__
; }
1361
1362
O3Float
&
O3InstanceParameter
::
value
() {
return
value__
; }
1363
1364
bool
O3InstanceParameter
::
isInteger
()
const
{
return
isInteger__
; }
1365
1366
bool
&
O3InstanceParameter
::
isInteger
() {
return
isInteger__
; }
1367
1368
O3Import
::
O3Import
() {
GUM_CONSTRUCTOR
(
O3Import
); }
1369
1370
O3Import
::
O3Import
(
const
O3Import
&
src
) :
import__
(
src
.
import__
) {
1371
GUM_CONSTRUCTOR
(
O3Import
);
1372
}
1373
1374
O3Import
::
O3Import
(
O3Import
&&
src
) :
import__
(
std
::
move
(
src
.
import__
)) {
1375
GUM_CONS_MOV
(
O3Import
);
1376
}
1377
1378
O3Import
::~
O3Import
() {
GUM_DESTRUCTOR
(
O3Import
); }
1379
1380
O3Import
&
O3Import
::
operator
=(
const
O3Import
&
src
) {
1381
if
(
this
== &
src
) {
return
*
this
; }
1382
import__
=
src
.
import__
;
1383
return
*
this
;
1384
}
1385
1386
O3Import
&
O3Import
::
operator
=(
O3Import
&&
src
) {
1387
if
(
this
== &
src
) {
return
*
this
; }
1388
import__
=
std
::
move
(
src
.
import__
);
1389
return
*
this
;
1390
}
1391
1392
const
O3Label
&
O3Import
::
import
()
const
{
return
import__
; }
1393
1394
O3Label
&
O3Import
::
import
() {
return
import__
; }
1395
1396
}
// namespace o3prm
1397
}
// namespace prm
1398
}
// namespace gum
gum::Set::emplace
INLINE void emplace(Args &&... args)
Definition:
set_tpl.h:669
gum::prm::o3prm::operator<<
std::ostream & operator<<(std::ostream &o, const O3Label &src)
Definition:
O3prm.cpp:1314
gum::prm::o3prm
Definition:
O3prm.cpp:34
gum::prm::ParamScopeData::ParamScopeData
ParamScopeData(const std::string &s, const PRMReferenceSlot< GUM_SCALAR > &ref, Idx d)
Definition:
PRMClass_tpl.h:1101