aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
O3prm.h
Go to the documentation of this file.
1/****************************************************************************
2 * This file is part of the aGrUM/pyAgrum library. *
3 * *
4 * Copyright (c) 2005-2025 by *
5 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
6 * - Christophe GONZALES(_at_AMU) *
7 * *
8 * The aGrUM/pyAgrum library is free software; you can redistribute it *
9 * and/or modify it under the terms of either : *
10 * *
11 * - the GNU Lesser General Public License as published by *
12 * the Free Software Foundation, either version 3 of the License, *
13 * or (at your option) any later version, *
14 * - the MIT license (MIT), *
15 * - or both in dual license, as here. *
16 * *
17 * (see https://agrum.gitlab.io/articles/dual-licenses-lgplv3mit.html) *
18 * *
19 * This aGrUM/pyAgrum library is distributed in the hope that it will be *
20 * useful, but WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
21 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES MERCHANTABILITY or FITNESS *
22 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
25 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
26 * OTHER DEALINGS IN THE SOFTWARE. *
27 * *
28 * See LICENCES for more details. *
29 * *
30 * SPDX-FileCopyrightText: Copyright 2005-2025 *
31 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
32 * - Christophe GONZALES(_at_AMU) *
33 * SPDX-License-Identifier: LGPL-3.0-or-later OR MIT *
34 * *
35 * Contact : info_at_agrum_dot_org *
36 * homepage : http://agrum.gitlab.io *
37 * gitlab : https://gitlab.com/agrumery/agrum *
38 * *
39 ****************************************************************************/
40
41
49
50#include <string>
51#include <utility>
52#include <vector>
53
54#include <agrum/agrum.h>
55
57
58#ifndef GUM_PRM_O3PRM_PRM_H
59# define GUM_PRM_O3PRM_PRM_H
60
61namespace gum {
62 namespace prm {
63 namespace o3prm {
64
72 class O3Position {
73 public:
74 O3Position();
75 O3Position(const std::string& filename, int line, int column);
76 O3Position(const O3Position& src);
79
80 O3Position& operator=(const O3Position& src);
82
83 std::string& file();
84 const std::string& file() const;
85
86 int& line();
87 int line() const;
88
89 int& column();
90 int column() const;
91
92 private:
93 std::string _file_;
94 int _line_;
96 };
97
105 class O3Formula {
106 public:
107 O3Formula();
108 O3Formula(const O3Position& pos, const Formula& formula);
109 O3Formula(const O3Formula& src);
110 O3Formula(O3Formula&& src);
111 ~O3Formula();
112
113 O3Formula& operator=(const O3Formula& src);
115
117 const O3Position& position() const;
118
119 Formula& formula();
120 const Formula& formula() const;
121
122 private:
124 std::unique_ptr< Formula > _formula_;
125 };
126
134 class O3Float {
135 public:
136 O3Float();
137 O3Float(const O3Position& pos, float value);
138 O3Float(const O3Float& src);
139 O3Float(O3Float&& src);
140 ~O3Float();
141
142 O3Float& operator=(const O3Float& src);
143 O3Float& operator=(O3Float&& src);
144
146 const O3Position& position() const;
147
148 float& value();
149 float value() const;
150
151 private:
153 float _value_;
154 };
155
163 class O3Integer {
164 public:
165 O3Integer();
166 O3Integer(const O3Position& pos, int value);
167 O3Integer(const O3Integer& src);
168 O3Integer(O3Integer&& src);
169 ~O3Integer();
170
171 O3Integer& operator=(const O3Integer& src);
173
175 const O3Position& position() const;
176
177 int& value();
178 int value() const;
179
180 private:
183 };
184
192 class O3Label {
193 public:
194 O3Label();
195 O3Label(const O3Position& pos, const std::string& label);
196 O3Label(const O3Label& src);
197 O3Label(O3Label&& src);
198 ~O3Label();
199
200 O3Label& operator=(const O3Label& src);
201 O3Label& operator=(O3Label&& src);
202
204 const O3Position& position() const;
205
206 std::string& label();
207 const std::string& label() const;
208
209 private:
211 std::string _label_;
212 };
213
214 std::ostream& operator<<(std::ostream& o, const O3Label& src);
215
223 class O3Type {
224 public:
225 using LabelPair = std::pair< O3Label, O3Label >;
226 using LabelMap = std::vector< LabelPair >;
227
228 O3Type();
229 O3Type(const O3Type& src);
230 O3Type(O3Type&& src);
231 ~O3Type();
232
233 O3Type& operator=(const O3Type& src);
234 O3Type& operator=(O3Type&& src);
235
237 const O3Position& position() const;
238
239 O3Label& name();
240 const O3Label& name() const;
241
243 const O3Label& superLabel() const;
244
245 LabelMap& labels();
246 const LabelMap& labels() const;
247
248 bool& o3prm_deprecated();
249 const bool& o3prm_deprecated() const;
250
251 private:
257 };
258
266 class O3IntType {
267 public:
268 O3IntType();
269 O3IntType(const O3IntType& src);
270 O3IntType(O3IntType&& src);
271 ~O3IntType();
272
273 O3IntType& operator=(const O3IntType& src);
275
277 const O3Position& position() const;
278
279 O3Label& name();
280 const O3Label& name() const;
281
282 O3Integer& start();
283 const O3Integer& start() const;
284
285 O3Integer& end();
286 const O3Integer& end() const;
287
288 bool& o3prm_deprecated();
289 const bool& o3prm_deprecated() const;
290
291 private:
297 };
298
307 public:
308 O3RealType();
309 O3RealType(const O3RealType& src);
310 O3RealType(O3RealType&& src);
311 ~O3RealType();
312
313 O3RealType& operator=(const O3RealType& src);
315
317 const O3Position& position() const;
318
319 O3Label& name();
320 const O3Label& name() const;
321
322 std::vector< O3Float >& values();
323 const std::vector< O3Float >& values() const;
324
325 bool& o3prm_deprecated();
326 const bool& o3prm_deprecated() const;
327
328 private:
331 std::vector< O3Float > _values_;
333 };
334
343 public:
345 O3InterfaceElement(const O3Label& type, const O3Label& name, bool isArray);
349
352
353 O3Label& type();
354 const O3Label& type() const;
355
356 O3Label& name();
357 const O3Label& name() const;
358
359 bool& isArray();
360 bool isArray() const;
361
362 private:
366 };
367
376 public:
377 using O3InterfaceElementList = std::vector< O3InterfaceElement >;
378
379 O3Interface();
380 O3Interface(const O3Interface& src);
382 ~O3Interface();
383
384 O3Interface& operator=(const O3Interface& src);
386
388 const O3Position& position() const;
389
390 O3Label& name();
391 const O3Label& name() const;
392
394 const O3Label& superLabel() const;
395
397 const O3InterfaceElementList& elements() const;
398
399 private:
403 std::unique_ptr< O3InterfaceElementList > _elts_;
404 };
405
414 public:
415 enum class PRMType { NONE, INT, FLOAT };
416
417 O3Parameter();
418 O3Parameter(const O3Position& pos, const O3Label& name, const O3Integer& value);
419 O3Parameter(const O3Position& pos, const O3Label& name, const O3Float& value);
420 O3Parameter(const O3Parameter& src);
422 ~O3Parameter();
423
424 O3Parameter& operator=(const O3Parameter& src);
426
427 PRMType& type();
428 PRMType type() const;
429
431 const O3Position& position() const;
432
433 O3Label& name();
434 const O3Label& name() const;
435
436 O3Float& value();
437 const O3Float& value() const;
438
439 private:
444 };
445
454 public:
456 O3ReferenceSlot(const O3Label& type, const O3Label& name, bool isArray);
460
463
464 O3Label& type();
465 const O3Label& type() const;
466
467 O3Label& name();
468 const O3Label& name() const;
469
470 bool& isArray();
471 bool isArray() const;
472
473 private:
477 };
478
487 public:
488 using O3LabelList = std::vector< O3Label >;
489
490 O3Attribute();
491 O3Attribute(const O3Label& type, const O3Label& name, const O3LabelList& parents);
492 O3Attribute(const O3Attribute& src);
494 virtual ~O3Attribute();
495
496 virtual O3Attribute& operator=(const O3Attribute& src);
497 virtual O3Attribute& operator=(O3Attribute&& src);
498
499 virtual O3Label& type();
500 virtual const O3Label& type() const;
501
502 virtual O3Label& name();
503 virtual const O3Label& name() const;
504
505 virtual O3LabelList& parents();
506 virtual const O3LabelList& parents() const;
507
508 virtual std::unique_ptr< O3Attribute > copy() const = 0;
509
510 private:
514 };
515
523 class O3RawCPT: public O3Attribute {
524 public:
525 using O3FormulaList = std::vector< O3Formula >;
526
527 O3RawCPT();
528 O3RawCPT(const O3Label& type,
529 const O3Label& name,
531 const O3FormulaList& values);
532 O3RawCPT(const O3RawCPT& src);
533 O3RawCPT(O3RawCPT&& src);
534 ~O3RawCPT();
535
536 private: // best attempt to get rid of overloaded virtual warnings
537 using O3Attribute::operator=;
538
539 public:
540 virtual O3RawCPT& operator=(const O3RawCPT& src);
541 virtual O3RawCPT& operator=(O3RawCPT&& src);
542
543 virtual O3FormulaList& values();
544 virtual const O3FormulaList& values() const;
545
546 virtual std::unique_ptr< O3Attribute > copy() const;
547
548 private:
549 std::unique_ptr< O3FormulaList > _values_;
550 };
551
559 class O3RuleCPT: public O3Attribute {
560 public:
561 using O3LabelList = std::vector< O3Label >;
562 using O3FormulaList = std::vector< O3Formula >;
563 using O3Rule = std::pair< O3LabelList, O3FormulaList >;
564 using O3RuleList = std::vector< O3Rule >;
565
566 O3RuleCPT();
567 O3RuleCPT(const O3Label& type,
568 const O3Label& name,
570 O3RuleList&& rules);
571 O3RuleCPT(const O3RuleCPT& src);
572 O3RuleCPT(O3RuleCPT&& src);
573 ~O3RuleCPT();
574
575 private: // best attempt to get rid of overloaded virtual warnings
576 using O3Attribute::operator=;
577
578 public:
579 virtual O3RuleCPT& operator=(const O3RuleCPT& src);
580 virtual O3RuleCPT& operator=(O3RuleCPT&& src);
581
582 virtual O3RuleList& rules();
583 virtual const O3RuleList& rules() const;
584
585 virtual std::unique_ptr< O3Attribute > copy() const;
586
587 private:
588 std::unique_ptr< O3RuleList > _rules_;
589 };
590
599 public:
600 using O3LabelList = std::vector< O3Label >;
601
602 O3Aggregate();
603 O3Aggregate(const O3Aggregate& src);
605 virtual ~O3Aggregate();
606
607 O3Aggregate& operator=(const O3Aggregate& src);
609
611 const O3Label& variableType() const;
612
614 const O3Label& aggregateType() const;
615
616 O3Label& name();
617 const O3Label& name() const;
618
620 const O3LabelList& parents() const;
621
623 const O3LabelList& parameters() const;
624
625 private:
631 };
632
640 class O3Class {
641 public:
642 using O3LabelList = std::vector< O3Label >;
643 using O3ParameterList = std::vector< O3Parameter >;
644 using O3ReferenceSlotList = std::vector< O3ReferenceSlot >;
645 using O3AttributeList = std::vector< std::unique_ptr< O3Attribute > >;
646 using O3AggregateList = std::vector< O3Aggregate >;
647
648 O3Class();
649 O3Class(const O3Class& src);
650 O3Class(O3Class&& src);
651 ~O3Class();
652
653 O3Class& operator=(const O3Class& src);
654 O3Class& operator=(O3Class&& src);
655
657 const O3Position& position() const;
658
659 O3Label& name();
660 const O3Label& name() const;
661
663 const O3Label& superLabel() const;
664
666 const O3LabelList& interfaces() const;
667
669 const O3ParameterList& parameters() const;
670
672 const O3ReferenceSlotList& referenceSlots() const;
673
675 const O3AttributeList& attributes() const;
676
678 const O3AggregateList& aggregates() const;
679
680 private:
684 std::unique_ptr< O3LabelList > _interfaces_;
685 std::unique_ptr< O3ParameterList > _params_;
686 std::unique_ptr< O3ReferenceSlotList > _refs_;
687 std::unique_ptr< O3AttributeList > _attrs_;
688 std::unique_ptr< O3AggregateList > _aggs_;
689 };
690
699 public:
700 O3Assignment();
701 O3Assignment(const O3Assignment& src);
704
707
709 const O3Label& leftInstance() const;
710
712 const O3Integer& leftIndex() const;
713
715 const O3Label& leftReference() const;
716
718 const O3Label& rightInstance() const;
719
721 const O3Integer& rightIndex() const;
722
723 private:
729 };
730
739 public:
740 O3Increment();
741 O3Increment(const O3Increment& src);
743 ~O3Increment();
744
745 O3Increment& operator=(const O3Increment& src);
747
749 const O3Label& leftInstance() const;
750
752 const O3Integer& leftIndex() const;
753
755 const O3Label& leftReference() const;
756
758 const O3Label& rightInstance() const;
759
761 const O3Integer& rightIndex() const;
762
763 private:
769 };
770
780 public:
785
788
789 O3Label& name();
790 const O3Label& name() const;
791
792 O3Float& value();
793 const O3Float& value() const;
794
795 bool& isInteger();
796 bool isInteger() const;
797
798 private:
802 };
803
812 public:
813 using O3InstanceParameterList = std::vector< O3InstanceParameter >;
814
815 O3Instance();
816 O3Instance(const O3Instance& src);
817 O3Instance(O3Instance&& src);
818 ~O3Instance();
819
820 O3Instance& operator=(const O3Instance& src);
822
823 O3Label& type();
824 const O3Label& type() const;
825
826 O3Label& name();
827 const O3Label& name() const;
828
829 O3Integer& size();
830 const O3Integer& size() const;
831
833 const O3InstanceParameterList& parameters() const;
834
835 private:
840 };
841
849 class O3System {
850 public:
851 using O3InstanceList = std::vector< O3Instance >;
852 using O3AssignmentList = std::vector< O3Assignment >;
853 using O3IncrementList = std::vector< O3Increment >;
854
855 O3System();
856 O3System(const O3System& src);
857 O3System(O3System&& src);
858 ~O3System();
859
860 O3System& operator=(const O3System& src);
862
863 O3Label& name();
864 const O3Label& name() const;
865
867 const O3InstanceList& instances() const;
868
870 const O3AssignmentList& assignments() const;
871
873 const O3IncrementList& increments() const;
874
875 private:
880 };
881
889 class O3Import {
890 public:
891 O3Import();
892 O3Import(const O3Import& src);
893 O3Import(O3Import&& src);
894 ~O3Import();
895
896 O3Import& operator=(const O3Import& src);
898
899 O3Label& import();
900 const O3Label& import() const;
901
902 private:
904 };
905
913 class O3PRM {
914 public:
915 using O3TypeList = std::vector< std::unique_ptr< O3Type > >;
916 using O3IntTypeList = std::vector< std::unique_ptr< O3IntType > >;
917 using O3RealTypeList = std::vector< std::unique_ptr< O3RealType > >;
918 using O3InterfaceList = std::vector< std::unique_ptr< O3Interface > >;
919 using O3ClassList = std::vector< std::unique_ptr< O3Class > >;
920 using O3SystemList = std::vector< std::unique_ptr< O3System > >;
921 using O3ImportList = std::vector< std::unique_ptr< O3Import > >;
922
923 O3PRM();
924 O3PRM(const O3PRM& src);
925 O3PRM(O3PRM&& src);
926 ~O3PRM();
927
928 O3PRM& operator=(const O3PRM& src);
929 O3PRM& operator=(O3PRM&& src);
930
931 O3TypeList& types();
932 const O3TypeList& types() const;
933
935 const O3IntTypeList& int_types() const;
936
938 const O3RealTypeList& real_types() const;
939
941 const O3InterfaceList& interfaces() const;
942
944 const O3ClassList& classes() const;
945
947 const O3SystemList& systems() const;
948
950 const O3ImportList& imports() const;
951
952 private:
960 };
961
962 } // namespace o3prm
963 } // namespace prm
964} // namespace gum
965
966#endif // GUM_PRM_O3PRM_PRM_H
Evaluates a string as a algebraic formula.
Definition formula.h:293
This is a decoration of the DiscreteVariable class.
Definition PRMType.h:78
O3LabelList & parameters()
Definition O3prm.cpp:1163
O3Aggregate & operator=(const O3Aggregate &src)
Definition O3prm.cpp:1127
O3LabelList & parents()
Definition O3prm.cpp:1159
std::vector< O3Label > O3LabelList
Definition O3prm.h:600
O3Assignment & operator=(const O3Assignment &src)
Definition O3prm.cpp:1192
virtual std::unique_ptr< O3Attribute > copy() const =0
virtual O3Label & type()
Definition O3prm.cpp:744
virtual O3Attribute & operator=(const O3Attribute &src)
Definition O3prm.cpp:728
virtual O3Label & name()
Definition O3prm.cpp:748
std::vector< O3Label > O3LabelList
Definition O3prm.h:488
virtual O3LabelList & parents()
Definition O3prm.cpp:752
O3ParameterList & parameters()
Definition O3prm.cpp:971
std::vector< std::unique_ptr< O3Attribute > > O3AttributeList
Definition O3prm.h:645
std::unique_ptr< O3ParameterList > _params_
Definition O3prm.h:685
std::vector< O3Aggregate > O3AggregateList
Definition O3prm.h:646
O3Position & position()
Definition O3prm.cpp:955
std::vector< O3Label > O3LabelList
Definition O3prm.h:642
std::vector< O3Parameter > O3ParameterList
Definition O3prm.h:643
std::unique_ptr< O3ReferenceSlotList > _refs_
Definition O3prm.h:686
O3AggregateList & aggregates()
Definition O3prm.cpp:981
O3LabelList & interfaces()
Definition O3prm.cpp:967
std::unique_ptr< O3AttributeList > _attrs_
Definition O3prm.h:687
std::unique_ptr< O3LabelList > _interfaces_
Definition O3prm.h:684
std::unique_ptr< O3AggregateList > _aggs_
Definition O3prm.h:688
O3ReferenceSlotList & referenceSlots()
Definition O3prm.cpp:975
O3Label & superLabel()
Definition O3prm.cpp:963
O3Class & operator=(const O3Class &src)
Definition O3prm.cpp:914
std::vector< O3ReferenceSlot > O3ReferenceSlotList
Definition O3prm.h:644
O3AttributeList & attributes()
Definition O3prm.cpp:977
The O3Float is part of the AST of the O3PRM language.
Definition O3prm.h:134
O3Position & position()
Definition O3prm.cpp:191
O3Float & operator=(const O3Float &src)
Definition O3prm.cpp:175
std::unique_ptr< Formula > _formula_
Definition O3prm.h:124
O3Formula & operator=(const O3Formula &src)
Definition O3prm.cpp:221
O3Position & position()
Definition O3prm.cpp:237
O3Import & operator=(const O3Import &src)
Definition O3prm.cpp:1479
O3Increment & operator=(const O3Increment &src)
Definition O3prm.cpp:1257
O3InstanceParameter & operator=(const O3InstanceParameter &src)
Definition O3prm.cpp:1433
O3InstanceParameterList _parameters_
Definition O3prm.h:839
O3Instance & operator=(const O3Instance &src)
Definition O3prm.cpp:1319
O3InstanceParameterList & parameters()
Definition O3prm.cpp:1353
std::vector< O3InstanceParameter > O3InstanceParameterList
Definition O3prm.h:813
O3IntType & operator=(const O3IntType &src)
Definition O3prm.cpp:375
O3Position & position()
Definition O3prm.cpp:407
The O3Integer is part of the AST of the O3PRM language.
Definition O3prm.h:163
O3Integer & operator=(const O3Integer &src)
Definition O3prm.cpp:130
O3Position & position()
Definition O3prm.cpp:146
O3InterfaceElement & operator=(const O3InterfaceElement &src)
Definition O3prm.cpp:615
std::vector< O3InterfaceElement > O3InterfaceElementList
Definition O3prm.h:377
O3Interface & operator=(const O3Interface &src)
Definition O3prm.cpp:665
std::unique_ptr< O3InterfaceElementList > _elts_
Definition O3prm.h:403
O3Position & position()
Definition O3prm.cpp:684
O3InterfaceElementList & elements()
Definition O3prm.cpp:696
The O3Label is part of the AST of the O3PRM language.
Definition O3prm.h:192
std::string _label_
Definition O3prm.h:211
O3Label & operator=(const O3Label &src)
Definition O3prm.cpp:267
std::string & label()
Definition O3prm.cpp:287
O3Position & position()
Definition O3prm.cpp:283
O3SystemList _systems_
Definition O3prm.h:958
O3ImportList _imports_
Definition O3prm.h:959
std::vector< std::unique_ptr< O3Type > > O3TypeList
Definition O3prm.h:915
std::vector< std::unique_ptr< O3Interface > > O3InterfaceList
Definition O3prm.h:918
std::vector< std::unique_ptr< O3IntType > > O3IntTypeList
Definition O3prm.h:916
O3PRM & operator=(const O3PRM &src)
Definition O3prm.cpp:525
O3ClassList _classes_
Definition O3prm.h:957
O3ImportList & imports()
Definition O3prm.cpp:587
O3TypeList & types()
Definition O3prm.cpp:563
O3RealTypeList _real_types_
Definition O3prm.h:955
O3InterfaceList _interfaces_
Definition O3prm.h:956
std::vector< std::unique_ptr< O3RealType > > O3RealTypeList
Definition O3prm.h:917
O3ClassList & classes()
Definition O3prm.cpp:579
O3InterfaceList & interfaces()
Definition O3prm.cpp:575
O3RealTypeList & real_types()
Definition O3prm.cpp:571
std::vector< std::unique_ptr< O3Class > > O3ClassList
Definition O3prm.h:919
std::vector< std::unique_ptr< O3System > > O3SystemList
Definition O3prm.h:920
O3IntTypeList _int_types_
Definition O3prm.h:954
O3TypeList _types_
Definition O3prm.h:953
std::vector< std::unique_ptr< O3Import > > O3ImportList
Definition O3prm.h:921
O3SystemList & systems()
Definition O3prm.cpp:583
O3IntTypeList & int_types()
Definition O3prm.cpp:567
The O3Parameter is part of the AST of the O3PRM language.
Definition O3prm.h:413
O3Parameter & operator=(const O3Parameter &src)
Definition O3prm.cpp:1016
The O3Position is part of the AST of the O3PRM language.
Definition O3prm.h:72
std::string & file()
Definition O3prm.cpp:95
O3Position & operator=(const O3Position &src)
Definition O3prm.cpp:79
virtual O3FormulaList & values()
Definition O3prm.cpp:799
std::unique_ptr< O3FormulaList > _values_
Definition O3prm.h:549
std::vector< O3Formula > O3FormulaList
Definition O3prm.h:525
virtual O3RawCPT & operator=(const O3RawCPT &src)
Definition O3prm.cpp:784
virtual std::unique_ptr< O3Attribute > copy() const
Definition O3prm.cpp:803
std::vector< O3Float > _values_
Definition O3prm.h:331
O3Position & position()
Definition O3prm.cpp:456
O3RealType & operator=(const O3RealType &src)
Definition O3prm.cpp:436
std::vector< O3Float > & values()
Definition O3prm.cpp:464
O3ReferenceSlot & operator=(const O3ReferenceSlot &src)
Definition O3prm.cpp:1076
std::vector< O3Label > O3LabelList
Definition O3prm.h:561
std::pair< O3LabelList, O3FormulaList > O3Rule
Definition O3prm.h:563
std::vector< O3Formula > O3FormulaList
Definition O3prm.h:562
virtual O3RuleCPT & operator=(const O3RuleCPT &src)
Definition O3prm.cpp:835
virtual O3RuleList & rules()
Definition O3prm.cpp:851
std::vector< O3Rule > O3RuleList
Definition O3prm.h:564
virtual std::unique_ptr< O3Attribute > copy() const
Definition O3prm.cpp:855
std::unique_ptr< O3RuleList > _rules_
Definition O3prm.h:588
std::vector< O3Increment > O3IncrementList
Definition O3prm.h:853
O3AssignmentList & assignments()
Definition O3prm.cpp:1405
O3AssignmentList _assigments_
Definition O3prm.h:878
std::vector< O3Instance > O3InstanceList
Definition O3prm.h:851
O3InstanceList & instances()
Definition O3prm.cpp:1401
O3System & operator=(const O3System &src)
Definition O3prm.cpp:1377
O3IncrementList & increments()
Definition O3prm.cpp:1409
O3InstanceList _instances_
Definition O3prm.h:877
O3IncrementList _increments_
Definition O3prm.h:879
std::vector< O3Assignment > O3AssignmentList
Definition O3prm.h:852
O3Label & superLabel()
Definition O3prm.cpp:336
O3Type & operator=(const O3Type &src)
Definition O3prm.cpp:312
O3Position & position()
Definition O3prm.cpp:344
std::pair< O3Label, O3Label > LabelPair
Definition O3prm.h:225
std::vector< LabelPair > LabelMap
Definition O3prm.h:226
bool & o3prm_deprecated()
Definition O3prm.cpp:348
LabelMap & labels()
Definition O3prm.cpp:340
Headers files for the gum::FormulaPart and gum::Formula classes.
std::ostream & operator<<(std::ostream &o, const O3Label &src)
Definition O3prm.cpp:1411
namespace for all probabilistic relational models entities
Definition agrum.h:68
gum is the global namespace for all aGrUM entities
Definition agrum.h:46