1 /**
2  * @file CSGSetOperator.h
3  * @brief Definition of the CSGSetOperator class.
4  * @author SBMLTeam
5  *
6  * <!--------------------------------------------------------------------------
7  * This file is part of libSBML. Please visit http://sbml.org for more
8  * information about SBML, and the latest version of libSBML.
9  *
10  * Copyright (C) 2020 jointly by the following organizations:
11  *     1. California Institute of Technology, Pasadena, CA, USA
12  *     2. University of Heidelberg, Heidelberg, Germany
13  *     3. University College London, London, UK
14  *
15  * Copyright (C) 2019 jointly by the following organizations:
16  * 1. California Institute of Technology, Pasadena, CA, USA
17  * 2. University of Heidelberg, Heidelberg, Germany
18  *
19  * Copyright (C) 2013-2018 jointly by the following organizations:
20  * 1. California Institute of Technology, Pasadena, CA, USA
21  * 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
22  * 3. University of Heidelberg, Heidelberg, Germany
23  *
24  * Copyright (C) 2009-2013 jointly by the following organizations:
25  * 1. California Institute of Technology, Pasadena, CA, USA
26  * 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
27  *
28  * Copyright (C) 2006-2008 by the California Institute of Technology,
29  * Pasadena, CA, USA
30  *
31  * Copyright (C) 2002-2005 jointly by the following organizations:
32  * 1. California Institute of Technology, Pasadena, CA, USA
33  * 2. Japan Science and Technology Agency, Japan
34  *
35  * This library is free software; you can redistribute it and/or modify it
36  * under the terms of the GNU Lesser General Public License as published by the
37  * Free Software Foundation. A copy of the license agreement is provided in the
38  * file named "LICENSE.txt" included with this software distribution and also
39  * available online as http://sbml.org/software/libsbml/license.html
40  * ------------------------------------------------------------------------ -->
41  *
42  * @class CSGSetOperator
43  * @sbmlbrief{spatial} TODO:Definition of the CSGSetOperator class.
44  */
45 
46 /**
47  * <!-- ~ ~ ~ ~ ~ Start of common documentation strings ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
48  * The following text is used as common documentation blocks copied multiple
49  * times elsewhere in this file. The use of @class is a hack needed because
50  * Doxygen's @copydetails command has limited functionality. Symbols
51  * beginning with "doc_" are marked as ignored in our Doxygen configuration.
52  * ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ -->
53  *
54  *
55  * @class doc_csgsetoperator_operationType
56  *
57  * @par
58  * The attribute "operationType" on a CSGSetOperator object is used to TODO:add
59  * explanation
60  *
61  * In the SBML
62  * Level&nbsp;3 Version&nbsp;1 Spatial specification, the following are the
63  * allowable values for "operationType":
64  * <ul>
65  * <li> @c "union", TODO:add description
66  *
67  * <li> @c "intersection", TODO:add description
68  *
69  * <li> @c "difference", TODO:add description
70  *
71  * </ul>
72  */
73 
74 
75 #ifndef CSGSetOperator_H__
76 #define CSGSetOperator_H__
77 
78 
79 #include <sbml/common/extern.h>
80 #include <sbml/common/sbmlfwd.h>
81 #include <sbml/packages/spatial/common/spatialfwd.h>
82 
83 
84 #ifdef __cplusplus
85 
86 
87 #include <string>
88 
89 
90 #include <sbml/packages/spatial/sbml/CSGNode.h>
91 #include <sbml/packages/spatial/extension/SpatialExtension.h>
92 #include <sbml/packages/spatial/sbml/ListOfCSGNodes.h>
93 
94 
95 LIBSBML_CPP_NAMESPACE_BEGIN
96 
97 
98 class LIBSBML_EXTERN CSGSetOperator : public CSGNode
99 {
100 protected:
101 
102   /** @cond doxygenLibsbmlInternal */
103 
104   SetOperation_t mOperationType;
105   std::string mComplementA;
106   std::string mComplementB;
107   ListOfCSGNodes mCSGNodes;
108 
109   /** @endcond */
110 
111 public:
112 
113   /**
114    * Creates a new CSGSetOperator using the given SBML Level, Version and
115    * &ldquo;spatial&rdquo; package version.
116    *
117    * @param level an unsigned int, the SBML Level to assign to this
118    * CSGSetOperator.
119    *
120    * @param version an unsigned int, the SBML Version to assign to this
121    * CSGSetOperator.
122    *
123    * @param pkgVersion an unsigned int, the SBML Spatial Version to assign to
124    * this CSGSetOperator.
125    *
126    * @copydetails doc_note_setting_lv_pkg
127    */
128   CSGSetOperator(unsigned int level = SpatialExtension::getDefaultLevel(),
129                  unsigned int version = SpatialExtension::getDefaultVersion(),
130                  unsigned int pkgVersion =
131                    SpatialExtension::getDefaultPackageVersion());
132 
133 
134   /**
135    * Creates a new CSGSetOperator using the given SpatialPkgNamespaces object.
136    *
137    * @copydetails doc_what_are_sbml_package_namespaces
138    *
139    * @param spatialns the SpatialPkgNamespaces object.
140    *
141    * @copydetails doc_note_setting_lv_pkg
142    */
143   CSGSetOperator(SpatialPkgNamespaces *spatialns);
144 
145 
146   /**
147    * Copy constructor for CSGSetOperator.
148    *
149    * @param orig the CSGSetOperator instance to copy.
150    */
151   CSGSetOperator(const CSGSetOperator& orig);
152 
153 
154   /**
155    * Assignment operator for CSGSetOperator.
156    *
157    * @param rhs the CSGSetOperator object whose values are to be used as the
158    * basis of the assignment.
159    */
160   CSGSetOperator& operator=(const CSGSetOperator& rhs);
161 
162 
163   /**
164    * Creates and returns a deep copy of this CSGSetOperator object.
165    *
166    * @return a (deep) copy of this CSGSetOperator object.
167    */
168   virtual CSGSetOperator* clone() const;
169 
170 
171   /**
172    * Destructor for CSGSetOperator.
173    */
174   virtual ~CSGSetOperator();
175 
176 
177   /**
178    * Returns the value of the "operationType" attribute of this CSGSetOperator.
179    *
180    * @return the value of the "operationType" attribute of this CSGSetOperator
181    * as a SetOperation_t.
182    *
183    * @copydetails doc_csgsetoperator_operationType
184    * @if clike The value is drawn from the enumeration @ref SetOperation_t
185    * @endif
186    * The possible values returned by this method are:
187    * @li @sbmlconstant{SPATIAL_SETOPERATION_UNION, SetOperation_t}
188    * @li @sbmlconstant{SPATIAL_SETOPERATION_INTERSECTION, SetOperation_t}
189    * @li @sbmlconstant{SPATIAL_SETOPERATION_DIFFERENCE, SetOperation_t}
190    * @li @sbmlconstant{SPATIAL_SETOPERATION_INVALID, SetOperation_t}
191    */
192   SetOperation_t getOperationType() const;
193 
194 
195   /**
196    * Returns the value of the "operationType" attribute of this CSGSetOperator.
197    *
198    * @return the value of the "operationType" attribute of this CSGSetOperator
199    * as a string.
200    *
201    * @copydetails doc_csgsetoperator_operationType
202    * The possible values returned by this method are:
203    * @li @c "union"
204    * @li @c "intersection"
205    * @li @c "difference"
206    * @li @c "invalid SetOperation value"
207    */
208   std::string getOperationTypeAsString() const;
209 
210 
211   /**
212    * Returns the value of the "complementA" attribute of this CSGSetOperator.
213    *
214    * @return the value of the "complementA" attribute of this CSGSetOperator as
215    * a string.
216    */
217   const std::string& getComplementA() const;
218 
219 
220   /**
221    * Returns the value of the "complementB" attribute of this CSGSetOperator.
222    *
223    * @return the value of the "complementB" attribute of this CSGSetOperator as
224    * a string.
225    */
226   const std::string& getComplementB() const;
227 
228 
229   /**
230    * Predicate returning @c true if this CSGSetOperator's "operationType"
231    * attribute is set.
232    *
233    * @return @c true if this CSGSetOperator's "operationType" attribute has
234    * been set, otherwise @c false is returned.
235    *
236    * @copydetails doc_csgsetoperator_operationType
237    */
238   bool isSetOperationType() const;
239 
240 
241   /**
242    * Predicate returning @c true if this CSGSetOperator's "complementA"
243    * attribute is set.
244    *
245    * @return @c true if this CSGSetOperator's "complementA" attribute has been
246    * set, otherwise @c false is returned.
247    */
248   bool isSetComplementA() const;
249 
250 
251   /**
252    * Predicate returning @c true if this CSGSetOperator's "complementB"
253    * attribute is set.
254    *
255    * @return @c true if this CSGSetOperator's "complementB" attribute has been
256    * set, otherwise @c false is returned.
257    */
258   bool isSetComplementB() const;
259 
260 
261   /**
262    * Sets the value of the "operationType" attribute of this CSGSetOperator.
263    *
264    * @param operationType @if clike SetOperation_t@else int@endif value of the
265    * "operationType" attribute to be set.
266    *
267    * @copydetails doc_returns_success_code
268    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
269    * @li @sbmlconstant{LIBSBML_INVALID_ATTRIBUTE_VALUE,
270    * OperationReturnValues_t}
271    *
272    * @copydetails doc_csgsetoperator_operationType
273    */
274   int setOperationType(const SetOperation_t operationType);
275 
276 
277   /**
278    * Sets the value of the "operationType" attribute of this CSGSetOperator.
279    *
280    * @param operationType std::string& of the "operationType" attribute to be
281    * set.
282    *
283    * @copydetails doc_returns_success_code
284    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
285    * @li @sbmlconstant{LIBSBML_INVALID_ATTRIBUTE_VALUE,
286    * OperationReturnValues_t}
287    *
288    * @copydetails doc_csgsetoperator_operationType
289    */
290   int setOperationType(const std::string& operationType);
291 
292 
293   /**
294    * Sets the value of the "complementA" attribute of this CSGSetOperator.
295    *
296    * @param complementA std::string& value of the "complementA" attribute to be
297    * set.
298    *
299    * @copydetails doc_returns_success_code
300    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
301    * @li @sbmlconstant{LIBSBML_INVALID_ATTRIBUTE_VALUE,
302    * OperationReturnValues_t}
303    */
304   int setComplementA(const std::string& complementA);
305 
306 
307   /**
308    * Sets the value of the "complementB" attribute of this CSGSetOperator.
309    *
310    * @param complementB std::string& value of the "complementB" attribute to be
311    * set.
312    *
313    * @copydetails doc_returns_success_code
314    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
315    * @li @sbmlconstant{LIBSBML_INVALID_ATTRIBUTE_VALUE,
316    * OperationReturnValues_t}
317    */
318   int setComplementB(const std::string& complementB);
319 
320 
321   /**
322    * Unsets the value of the "operationType" attribute of this CSGSetOperator.
323    *
324    * @copydetails doc_returns_one_success_code
325    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
326    *
327    * @copydetails doc_csgsetoperator_operationType
328    */
329   int unsetOperationType();
330 
331 
332   /**
333    * Unsets the value of the "complementA" attribute of this CSGSetOperator.
334    *
335    * @copydetails doc_returns_success_code
336    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
337    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
338    */
339   int unsetComplementA();
340 
341 
342   /**
343    * Unsets the value of the "complementB" attribute of this CSGSetOperator.
344    *
345    * @copydetails doc_returns_success_code
346    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
347    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
348    */
349   int unsetComplementB();
350 
351 
352   /**
353    * Returns the ListOfCSGNodes from this CSGSetOperator.
354    *
355    * @return the ListOfCSGNodes from this CSGSetOperator.
356    *
357    * @copydetails doc_returned_unowned_pointer
358    *
359    * @see addCSGNode(const CSGNode* object)
360    * @see createCSGNode()
361    * @see getCSGNode(const std::string& sid)
362    * @see getCSGNode(unsigned int n)
363    * @see getNumCSGNodes()
364    * @see removeCSGNode(const std::string& sid)
365    * @see removeCSGNode(unsigned int n)
366    */
367   const ListOfCSGNodes* getListOfCSGNodes() const;
368 
369 
370   /**
371    * Returns the ListOfCSGNodes from this CSGSetOperator.
372    *
373    * @return the ListOfCSGNodes from this CSGSetOperator.
374    *
375    * @copydetails doc_returned_unowned_pointer
376    *
377    * @see addCSGNode(const CSGNode* object)
378    * @see createCSGNode()
379    * @see getCSGNode(const std::string& sid)
380    * @see getCSGNode(unsigned int n)
381    * @see getNumCSGNodes()
382    * @see removeCSGNode(const std::string& sid)
383    * @see removeCSGNode(unsigned int n)
384    */
385   ListOfCSGNodes* getListOfCSGNodes();
386 
387 
388   /**
389    * Get a CSGNode from the CSGSetOperator.
390    *
391    * @param n an unsigned int representing the index of the CSGNode to
392    * retrieve.
393    *
394    * @return the nth CSGNode in the ListOfCSGNodes within this CSGSetOperator
395    * or @c NULL if no such object exists.
396    *
397    * @copydetails doc_returned_unowned_pointer
398    *
399    * @see addCSGNode(const CSGNode* object)
400    * @see createCSGNode()
401    * @see getCSGNode(const std::string& sid)
402    * @see getNumCSGNodes()
403    * @see removeCSGNode(const std::string& sid)
404    * @see removeCSGNode(unsigned int n)
405    */
406   CSGNode* getCSGNode(unsigned int n);
407 
408 
409   /**
410    * Get a CSGNode from the CSGSetOperator.
411    *
412    * @param n an unsigned int representing the index of the CSGNode to
413    * retrieve.
414    *
415    * @return the nth CSGNode in the ListOfCSGNodes within this CSGSetOperator
416    * or @c NULL if no such object exists.
417    *
418    * @copydetails doc_returned_unowned_pointer
419    *
420    * @see addCSGNode(const CSGNode* object)
421    * @see createCSGNode()
422    * @see getCSGNode(const std::string& sid)
423    * @see getNumCSGNodes()
424    * @see removeCSGNode(const std::string& sid)
425    * @see removeCSGNode(unsigned int n)
426    */
427   const CSGNode* getCSGNode(unsigned int n) const;
428 
429 
430   /**
431    * Get a CSGNode from the CSGSetOperator based on its identifier.
432    *
433    * @param sid a string representing the identifier of the CSGNode to
434    * retrieve.
435    *
436    * @return the CSGNode in the ListOfCSGNodes within this CSGSetOperator with
437    * the given @p sid or @c NULL if no such CSGNode exists.
438    *
439    * @copydetails doc_returned_unowned_pointer
440    *
441    * @see addCSGNode(const CSGNode* object)
442    * @see createCSGNode()
443    * @see getCSGNode(unsigned int n)
444    * @see getNumCSGNodes()
445    * @see removeCSGNode(const std::string& sid)
446    * @see removeCSGNode(unsigned int n)
447    */
448   CSGNode* getCSGNode(const std::string& sid);
449 
450 
451   /**
452    * Get a CSGNode from the CSGSetOperator based on its identifier.
453    *
454    * @param sid a string representing the identifier of the CSGNode to
455    * retrieve.
456    *
457    * @return the CSGNode in the ListOfCSGNodes within this CSGSetOperator with
458    * the given @p sid or @c NULL if no such CSGNode exists.
459    *
460    * @copydetails doc_returned_unowned_pointer
461    *
462    * @see addCSGNode(const CSGNode* object)
463    * @see createCSGNode()
464    * @see getCSGNode(unsigned int n)
465    * @see getNumCSGNodes()
466    * @see removeCSGNode(const std::string& sid)
467    * @see removeCSGNode(unsigned int n)
468    */
469   const CSGNode* getCSGNode(const std::string& sid) const;
470 
471 
472   /**
473    * Adds a copy of the given CSGNode to this CSGSetOperator.
474    *
475    * @param csgn the CSGNode object to add.
476    *
477    * @copydetails doc_returns_success_code
478    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
479    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
480    * @li @sbmlconstant{LIBSBML_INVALID_OBJECT, OperationReturnValues_t}
481    * @li @sbmlconstant{LIBSBML_LEVEL_MISMATCH, OperationReturnValues_t}
482    * @li @sbmlconstant{LIBSBML_VERSION_MISMATCH, OperationReturnValues_t}
483    * @li @sbmlconstant{LIBSBML_PKG_VERSION_MISMATCH, OperationReturnValues_t}
484    * @li @sbmlconstant{LIBSBML_DUPLICATE_OBJECT_ID, OperationReturnValues_t}
485    *
486    * @copydetails doc_note_object_is_copied
487    *
488    * @see createCSGNode()
489    * @see getCSGNode(const std::string& sid)
490    * @see getCSGNode(unsigned int n)
491    * @see getNumCSGNodes()
492    * @see removeCSGNode(const std::string& sid)
493    * @see removeCSGNode(unsigned int n)
494    */
495   int addCSGNode(const CSGNode* csgn);
496 
497 
498   /**
499    * Get the number of CSGNode objects in this CSGSetOperator.
500    *
501    * @return the number of CSGNode objects in this CSGSetOperator.
502    *
503    * @see addCSGNode(const CSGNode* object)
504    * @see createCSGNode()
505    * @see getCSGNode(const std::string& sid)
506    * @see getCSGNode(unsigned int n)
507    * @see removeCSGNode(const std::string& sid)
508    * @see removeCSGNode(unsigned int n)
509    */
510   unsigned int getNumCSGNodes() const;
511 
512 
513   /**
514    * Creates a new CSGPrimitive object, adds it to this CSGSetOperator object
515    * and returns the CSGPrimitive object created.
516    *
517    * @return a new CSGPrimitive object instance.
518    *
519    * @copydetails doc_returned_unowned_pointer
520    *
521    * @see addCSGNode(const CSGNode* object)
522    * @see getCSGNode(const std::string& sid)
523    * @see getCSGNode(unsigned int n)
524    * @see getNumCSGNodes()
525    * @see removeCSGNode(const std::string& sid)
526    * @see removeCSGNode(unsigned int n)
527    */
528   CSGPrimitive* createCSGPrimitive();
529 
530 
531   /**
532    * Creates a new CSGTranslation object, adds it to this CSGSetOperator object
533    * and returns the CSGTranslation object created.
534    *
535    * @return a new CSGTranslation object instance.
536    *
537    * @copydetails doc_returned_unowned_pointer
538    *
539    * @see addCSGNode(const CSGNode* object)
540    * @see getCSGNode(const std::string& sid)
541    * @see getCSGNode(unsigned int n)
542    * @see getNumCSGNodes()
543    * @see removeCSGNode(const std::string& sid)
544    * @see removeCSGNode(unsigned int n)
545    */
546   CSGTranslation* createCSGTranslation();
547 
548 
549   /**
550    * Creates a new CSGRotation object, adds it to this CSGSetOperator object
551    * and returns the CSGRotation object created.
552    *
553    * @return a new CSGRotation object instance.
554    *
555    * @copydetails doc_returned_unowned_pointer
556    *
557    * @see addCSGNode(const CSGNode* object)
558    * @see getCSGNode(const std::string& sid)
559    * @see getCSGNode(unsigned int n)
560    * @see getNumCSGNodes()
561    * @see removeCSGNode(const std::string& sid)
562    * @see removeCSGNode(unsigned int n)
563    */
564   CSGRotation* createCSGRotation();
565 
566 
567   /**
568    * Creates a new CSGScale object, adds it to this CSGSetOperator object and
569    * returns the CSGScale object created.
570    *
571    * @return a new CSGScale object instance.
572    *
573    * @copydetails doc_returned_unowned_pointer
574    *
575    * @see addCSGNode(const CSGNode* object)
576    * @see getCSGNode(const std::string& sid)
577    * @see getCSGNode(unsigned int n)
578    * @see getNumCSGNodes()
579    * @see removeCSGNode(const std::string& sid)
580    * @see removeCSGNode(unsigned int n)
581    */
582   CSGScale* createCSGScale();
583 
584 
585   /**
586    * Creates a new CSGHomogeneousTransformation object, adds it to this
587    * CSGSetOperator object and returns the CSGHomogeneousTransformation object
588    * created.
589    *
590    * @return a new CSGHomogeneousTransformation object instance.
591    *
592    * @copydetails doc_returned_unowned_pointer
593    *
594    * @see addCSGNode(const CSGNode* object)
595    * @see getCSGNode(const std::string& sid)
596    * @see getCSGNode(unsigned int n)
597    * @see getNumCSGNodes()
598    * @see removeCSGNode(const std::string& sid)
599    * @see removeCSGNode(unsigned int n)
600    */
601   CSGHomogeneousTransformation* createCSGHomogeneousTransformation();
602 
603 
604   /**
605    * Creates a new CSGSetOperator object, adds it to this CSGSetOperator object
606    * and returns the CSGSetOperator object created.
607    *
608    * @return a new CSGSetOperator object instance.
609    *
610    * @copydetails doc_returned_unowned_pointer
611    *
612    * @see addCSGNode(const CSGNode* object)
613    * @see getCSGNode(const std::string& sid)
614    * @see getCSGNode(unsigned int n)
615    * @see getNumCSGNodes()
616    * @see removeCSGNode(const std::string& sid)
617    * @see removeCSGNode(unsigned int n)
618    */
619   CSGSetOperator* createCSGSetOperator();
620 
621 
622   /**
623    * Removes the nth CSGNode from this CSGSetOperator and returns a pointer to
624    * it.
625    *
626    * @param n an unsigned int representing the index of the CSGNode to remove.
627    *
628    * @return a pointer to the nth CSGNode in this CSGSetOperator.
629    *
630    * @copydetails doc_warning_returns_owned_pointer
631    *
632    * @see addCSGNode(const CSGNode* object)
633    * @see createCSGNode()
634    * @see getCSGNode(const std::string& sid)
635    * @see getCSGNode(unsigned int n)
636    * @see getNumCSGNodes()
637    * @see removeCSGNode(const std::string& sid)
638    */
639   CSGNode* removeCSGNode(unsigned int n);
640 
641 
642   /**
643    * Removes the CSGNode from this CSGSetOperator based on its identifier and
644    * returns a pointer to it.
645    *
646    * @param sid a string representing the identifier of the CSGNode to remove.
647    *
648    * @return the CSGNode in this CSGSetOperator based on the identifier or NULL
649    * if no such CSGNode exists.
650    *
651    * @copydetails doc_warning_returns_owned_pointer
652    *
653    * @see addCSGNode(const CSGNode* object)
654    * @see createCSGNode()
655    * @see getCSGNode(const std::string& sid)
656    * @see getCSGNode(unsigned int n)
657    * @see getNumCSGNodes()
658    * @see removeCSGNode(unsigned int n)
659    */
660   CSGNode* removeCSGNode(const std::string& sid);
661 
662 
663   /**
664    * @copydoc doc_renamesidref_common
665    */
666   virtual void renameSIdRefs(const std::string& oldid,
667                              const std::string& newid);
668 
669 
670   /**
671    * Returns the XML element name of this CSGSetOperator object.
672    *
673    * For CSGSetOperator, the XML element name is always @c "csgSetOperator".
674    *
675    * @return the name of this element, i.e. @c "csgSetOperator".
676    */
677   virtual const std::string& getElementName() const;
678 
679 
680   /**
681    * Returns the libSBML type code for this CSGSetOperator object.
682    *
683    * @copydetails doc_what_are_typecodes
684    *
685    * @return the SBML type code for this object:
686    * @sbmlconstant{SBML_SPATIAL_CSGSETOPERATOR, SBMLSpatialTypeCode_t}.
687    *
688    * @copydetails doc_warning_typecodes_not_unique
689    *
690    * @see getElementName()
691    * @see getPackageName()
692    */
693   virtual int getTypeCode() const;
694 
695 
696   /**
697    * Predicate returning @c true if all the required attributes for this
698    * CSGSetOperator object have been set.
699    *
700    * @return @c true to indicate that all the required attributes of this
701    * CSGSetOperator have been set, otherwise @c false is returned.
702    *
703    *
704    * @note The required attributes for the CSGSetOperator object are:
705    * @li "operationType"
706    */
707   virtual bool hasRequiredAttributes() const;
708 
709 
710   /**
711    * Predicate returning @c true if all the required elements for this
712    * CSGSetOperator object have been set.
713    *
714    * @return @c true to indicate that all the required elements of this
715    * CSGSetOperator have been set, otherwise @c false is returned.
716    *
717    *
718    * @note The required elements for the CSGSetOperator object are:
719    */
720   virtual bool hasRequiredElements() const;
721 
722 
723 
724   /** @cond doxygenLibsbmlInternal */
725 
726   /**
727    * Write any contained elements
728    */
729   virtual void writeElements(XMLOutputStream& stream) const;
730 
731   /** @endcond */
732 
733 
734 
735   /** @cond doxygenLibsbmlInternal */
736 
737   /**
738    * Accepts the given SBMLVisitor
739    */
740   virtual bool accept(SBMLVisitor& v) const;
741 
742   /** @endcond */
743 
744 
745 
746   /** @cond doxygenLibsbmlInternal */
747 
748   /**
749    * Sets the parent SBMLDocument
750    */
751   virtual void setSBMLDocument(SBMLDocument* d);
752 
753   /** @endcond */
754 
755 
756 
757   /** @cond doxygenLibsbmlInternal */
758 
759   /**
760    * Connects to child elements
761    */
762   virtual void connectToChild();
763 
764   /** @endcond */
765 
766 
767 
768   /** @cond doxygenLibsbmlInternal */
769 
770   /**
771    * Enables/disables the given package with this element
772    */
773   virtual void enablePackageInternal(const std::string& pkgURI,
774                                      const std::string& pkgPrefix,
775                                      bool flag);
776 
777   /** @endcond */
778 
779 
780 
781   /** @cond doxygenLibsbmlInternal */
782 
783   /**
784    * Updates the namespaces when setLevelVersion is used
785    */
786   virtual void updateSBMLNamespace(const std::string& package,
787                                    unsigned int level,
788                                    unsigned int version);
789 
790   /** @endcond */
791 
792 
793 
794 
795   #ifndef SWIG
796 
797 
798 
799   /** @cond doxygenLibsbmlInternal */
800 
801   /**
802    * Gets the value of the "attributeName" attribute of this CSGSetOperator.
803    *
804    * @param attributeName, the name of the attribute to retrieve.
805    *
806    * @param value, the address of the value to record.
807    *
808    * @copydetails doc_returns_success_code
809    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
810    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
811    */
812   virtual int getAttribute(const std::string& attributeName, bool& value)
813     const;
814 
815   /** @endcond */
816 
817 
818 
819   /** @cond doxygenLibsbmlInternal */
820 
821   /**
822    * Gets the value of the "attributeName" attribute of this CSGSetOperator.
823    *
824    * @param attributeName, the name of the attribute to retrieve.
825    *
826    * @param value, the address of the value to record.
827    *
828    * @copydetails doc_returns_success_code
829    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
830    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
831    */
832   virtual int getAttribute(const std::string& attributeName, int& value) const;
833 
834   /** @endcond */
835 
836 
837 
838   /** @cond doxygenLibsbmlInternal */
839 
840   /**
841    * Gets the value of the "attributeName" attribute of this CSGSetOperator.
842    *
843    * @param attributeName, the name of the attribute to retrieve.
844    *
845    * @param value, the address of the value to record.
846    *
847    * @copydetails doc_returns_success_code
848    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
849    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
850    */
851   virtual int getAttribute(const std::string& attributeName,
852                            double& value) const;
853 
854   /** @endcond */
855 
856 
857 
858   /** @cond doxygenLibsbmlInternal */
859 
860   /**
861    * Gets the value of the "attributeName" attribute of this CSGSetOperator.
862    *
863    * @param attributeName, the name of the attribute to retrieve.
864    *
865    * @param value, the address of the value to record.
866    *
867    * @copydetails doc_returns_success_code
868    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
869    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
870    */
871   virtual int getAttribute(const std::string& attributeName,
872                            unsigned int& value) const;
873 
874   /** @endcond */
875 
876 
877 
878   /** @cond doxygenLibsbmlInternal */
879 
880   /**
881    * Gets the value of the "attributeName" attribute of this CSGSetOperator.
882    *
883    * @param attributeName, the name of the attribute to retrieve.
884    *
885    * @param value, the address of the value to record.
886    *
887    * @copydetails doc_returns_success_code
888    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
889    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
890    */
891   virtual int getAttribute(const std::string& attributeName,
892                            std::string& value) const;
893 
894   /** @endcond */
895 
896 
897 
898   /** @cond doxygenLibsbmlInternal */
899 
900   /**
901    * Predicate returning @c true if this CSGSetOperator's attribute
902    * "attributeName" is set.
903    *
904    * @param attributeName, the name of the attribute to query.
905    *
906    * @return @c true if this CSGSetOperator's attribute "attributeName" has
907    * been set, otherwise @c false is returned.
908    */
909   virtual bool isSetAttribute(const std::string& attributeName) const;
910 
911   /** @endcond */
912 
913 
914 
915   /** @cond doxygenLibsbmlInternal */
916 
917   /**
918    * Sets the value of the "attributeName" attribute of this CSGSetOperator.
919    *
920    * @param attributeName, the name of the attribute to set.
921    *
922    * @param value, the value of the attribute to set.
923    *
924    * @copydetails doc_returns_success_code
925    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
926    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
927    */
928   virtual int setAttribute(const std::string& attributeName, bool value);
929 
930   /** @endcond */
931 
932 
933 
934   /** @cond doxygenLibsbmlInternal */
935 
936   /**
937    * Sets the value of the "attributeName" attribute of this CSGSetOperator.
938    *
939    * @param attributeName, the name of the attribute to set.
940    *
941    * @param value, the value of the attribute to set.
942    *
943    * @copydetails doc_returns_success_code
944    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
945    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
946    */
947   virtual int setAttribute(const std::string& attributeName, int value);
948 
949   /** @endcond */
950 
951 
952 
953   /** @cond doxygenLibsbmlInternal */
954 
955   /**
956    * Sets the value of the "attributeName" attribute of this CSGSetOperator.
957    *
958    * @param attributeName, the name of the attribute to set.
959    *
960    * @param value, the value of the attribute to set.
961    *
962    * @copydetails doc_returns_success_code
963    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
964    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
965    */
966   virtual int setAttribute(const std::string& attributeName, double value);
967 
968   /** @endcond */
969 
970 
971 
972   /** @cond doxygenLibsbmlInternal */
973 
974   /**
975    * Sets the value of the "attributeName" attribute of this CSGSetOperator.
976    *
977    * @param attributeName, the name of the attribute to set.
978    *
979    * @param value, the value of the attribute to set.
980    *
981    * @copydetails doc_returns_success_code
982    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
983    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
984    */
985   virtual int setAttribute(const std::string& attributeName,
986                            unsigned int value);
987 
988   /** @endcond */
989 
990 
991 
992   /** @cond doxygenLibsbmlInternal */
993 
994   /**
995    * Sets the value of the "attributeName" attribute of this CSGSetOperator.
996    *
997    * @param attributeName, the name of the attribute to set.
998    *
999    * @param value, the value of the attribute to set.
1000    *
1001    * @copydetails doc_returns_success_code
1002    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1003    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
1004    */
1005   virtual int setAttribute(const std::string& attributeName,
1006                            const std::string& value);
1007 
1008   /** @endcond */
1009 
1010 
1011 
1012   /** @cond doxygenLibsbmlInternal */
1013 
1014   /**
1015    * Unsets the value of the "attributeName" attribute of this CSGSetOperator.
1016    *
1017    * @param attributeName, the name of the attribute to query.
1018    *
1019    * @copydetails doc_returns_success_code
1020    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1021    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
1022    */
1023   virtual int unsetAttribute(const std::string& attributeName);
1024 
1025   /** @endcond */
1026 
1027 
1028 
1029   /** @cond doxygenLibsbmlInternal */
1030 
1031   /**
1032    * Creates and returns an new "elementName" object in this CSGSetOperator.
1033    *
1034    * @param elementName, the name of the element to create.
1035    *
1036    * @return pointer to the element created.
1037    */
1038   virtual SBase* createChildObject(const std::string& elementName);
1039 
1040   /** @endcond */
1041 
1042 
1043 
1044   /** @cond doxygenLibsbmlInternal */
1045 
1046   /**
1047    * Adds a new "elementName" object to this CSGSetOperator.
1048    *
1049    * @param elementName, the name of the element to create.
1050    *
1051    * @param element, pointer to the element to be added.
1052    *
1053    * @copydetails doc_returns_success_code
1054    * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1055    * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
1056    */
1057   virtual int addChildObject(const std::string& elementName,
1058                              const SBase* element);
1059 
1060   /** @endcond */
1061 
1062 
1063 
1064   /** @cond doxygenLibsbmlInternal */
1065 
1066   /**
1067    * Removes and returns the new "elementName" object with the given id in this
1068    * CSGSetOperator.
1069    *
1070    * @param elementName, the name of the element to remove.
1071    *
1072    * @param id, the id of the element to remove.
1073    *
1074    * @return pointer to the element removed.
1075    */
1076   virtual SBase* removeChildObject(const std::string& elementName,
1077                                    const std::string& id);
1078 
1079   /** @endcond */
1080 
1081 
1082 
1083   /** @cond doxygenLibsbmlInternal */
1084 
1085   /**
1086    * Returns the number of "elementName" in this CSGSetOperator.
1087    *
1088    * @param elementName, the name of the element to get number of.
1089    *
1090    * @return unsigned int number of elements.
1091    */
1092   virtual unsigned int getNumObjects(const std::string& elementName);
1093 
1094   /** @endcond */
1095 
1096 
1097 
1098   /** @cond doxygenLibsbmlInternal */
1099 
1100   /**
1101    * Returns the nth object of "objectName" in this CSGSetOperator.
1102    *
1103    * @param elementName, the name of the element to get number of.
1104    *
1105    * @param index, unsigned int the index of the object to retrieve.
1106    *
1107    * @return pointer to the object.
1108    */
1109   virtual SBase* getObject(const std::string& elementName, unsigned int index);
1110 
1111   /** @endcond */
1112 
1113 
1114 
1115 
1116   #endif /* !SWIG */
1117 
1118 
1119   /**
1120    * Returns the first child element that has the given @p id in the model-wide
1121    * SId namespace, or @c NULL if no such object is found.
1122    *
1123    * @param id a string representing the id attribute of the object to
1124    * retrieve.
1125    *
1126    * @return a pointer to the SBase element with the given @p id. If no such
1127    * object is found, this method returns @c NULL.
1128    */
1129   virtual SBase* getElementBySId(const std::string& id);
1130 
1131 
1132   /**
1133    * Returns the first child element that has the given @p metaid, or @c NULL
1134    * if no such object is found.
1135    *
1136    * @param metaid a string representing the metaid attribute of the object to
1137    * retrieve.
1138    *
1139    * @return a pointer to the SBase element with the given @p metaid. If no
1140    * such object is found this method returns @c NULL.
1141    */
1142   virtual SBase* getElementByMetaId(const std::string& metaid);
1143 
1144 
1145   /**
1146    * Returns a List of all child SBase objects, including those nested to an
1147    * arbitrary depth.
1148    *
1149    * @param filter an ElementFilter that may impose restrictions on the objects
1150    * to be retrieved.
1151    *
1152    * @return a List pointer of pointers to all SBase child objects with any
1153    * restriction imposed.
1154    */
1155   virtual List* getAllElements(ElementFilter * filter = NULL);
1156 
1157 
1158 protected:
1159 
1160 
1161   /** @cond doxygenLibsbmlInternal */
1162 
1163   /**
1164    * Creates a new object from the next XMLToken on the XMLInputStream
1165    */
1166   virtual SBase* createObject(XMLInputStream& stream);
1167 
1168   /** @endcond */
1169 
1170 
1171 
1172   /** @cond doxygenLibsbmlInternal */
1173 
1174   /**
1175    * Adds the expected attributes for this element
1176    */
1177   virtual void addExpectedAttributes(ExpectedAttributes& attributes);
1178 
1179   /** @endcond */
1180 
1181 
1182 
1183   /** @cond doxygenLibsbmlInternal */
1184 
1185   /**
1186    * Reads the expected attributes into the member data variables
1187    */
1188   virtual void readAttributes(const XMLAttributes& attributes,
1189                               const ExpectedAttributes& expectedAttributes);
1190 
1191   /** @endcond */
1192 
1193 
1194 
1195   /** @cond doxygenLibsbmlInternal */
1196 
1197   /**
1198    * Writes the attributes to the stream
1199    */
1200   virtual void writeAttributes(XMLOutputStream& stream) const;
1201 
1202   /** @endcond */
1203 
1204 
1205 };
1206 
1207 
1208 
1209 LIBSBML_CPP_NAMESPACE_END
1210 
1211 
1212 
1213 
1214 #endif /* __cplusplus */
1215 
1216 
1217 
1218 
1219 #ifndef SWIG
1220 
1221 
1222 
1223 
1224 LIBSBML_CPP_NAMESPACE_BEGIN
1225 
1226 
1227 
1228 
1229 BEGIN_C_DECLS
1230 
1231 
1232 /**
1233  * Creates a new CSGSetOperator_t using the given SBML Level, Version and
1234  * &ldquo;spatial&rdquo; package version.
1235  *
1236  * @param level an unsigned int, the SBML Level to assign to this
1237  * CSGSetOperator_t.
1238  *
1239  * @param version an unsigned int, the SBML Version to assign to this
1240  * CSGSetOperator_t.
1241  *
1242  * @param pkgVersion an unsigned int, the SBML Spatial Version to assign to
1243  * this CSGSetOperator_t.
1244  *
1245  * @copydetails doc_note_setting_lv_pkg
1246  *
1247  * @copydetails doc_returned_owned_pointer
1248  *
1249  * @memberof CSGSetOperator_t
1250  */
1251 LIBSBML_EXTERN
1252 CSGSetOperator_t *
1253 CSGSetOperator_create(unsigned int level,
1254                       unsigned int version,
1255                       unsigned int pkgVersion);
1256 
1257 
1258 /**
1259  * Creates and returns a deep copy of this CSGSetOperator_t object.
1260  *
1261  * @param csgso the CSGSetOperator_t structure.
1262  *
1263  * @return a (deep) copy of this CSGSetOperator_t object.
1264  *
1265  * @copydetails doc_returned_owned_pointer
1266  *
1267  * @memberof CSGSetOperator_t
1268  */
1269 LIBSBML_EXTERN
1270 CSGSetOperator_t*
1271 CSGSetOperator_clone(const CSGSetOperator_t* csgso);
1272 
1273 
1274 /**
1275  * Frees this CSGSetOperator_t object.
1276  *
1277  * @param csgso the CSGSetOperator_t structure.
1278  *
1279  * @memberof CSGSetOperator_t
1280  */
1281 LIBSBML_EXTERN
1282 void
1283 CSGSetOperator_free(CSGSetOperator_t* csgso);
1284 
1285 
1286 /**
1287  * Returns the value of the "operationType" attribute of this CSGSetOperator_t.
1288  *
1289  * @param csgso the CSGSetOperator_t structure whose operationType is sought.
1290  *
1291  * @return the value of the "operationType" attribute of this CSGSetOperator_t
1292  * as a SetOperation_t.
1293  *
1294  * @copydetails doc_csgsetoperator_operationType
1295  * @if clike The value is drawn from the enumeration @ref SetOperation_t @endif
1296  * The possible values returned by this method are:
1297  * @li @sbmlconstant{SPATIAL_SETOPERATION_UNION, SetOperation_t}
1298  * @li @sbmlconstant{SPATIAL_SETOPERATION_INTERSECTION, SetOperation_t}
1299  * @li @sbmlconstant{SPATIAL_SETOPERATION_DIFFERENCE, SetOperation_t}
1300  * @li @sbmlconstant{SPATIAL_SETOPERATION_INVALID, SetOperation_t}
1301  *
1302  * @memberof CSGSetOperator_t
1303  */
1304 LIBSBML_EXTERN
1305 SetOperation_t
1306 CSGSetOperator_getOperationType(const CSGSetOperator_t * csgso);
1307 
1308 
1309 /**
1310  * Returns the value of the "operationType" attribute of this CSGSetOperator_t.
1311  *
1312  * @param csgso the CSGSetOperator_t structure whose operationType is sought.
1313  *
1314  * @return the value of the "operationType" attribute of this CSGSetOperator_t
1315  * as a const char *.
1316  *
1317  * @copydetails doc_returned_unowned_char
1318  *
1319  * @copydetails doc_csgsetoperator_operationType
1320  * The possible values returned by this method are:
1321  * @li @c "union"
1322  * @li @c "intersection"
1323  * @li @c "difference"
1324  * @li @c "invalid SetOperation value"
1325  *
1326  * @memberof CSGSetOperator_t
1327  */
1328 LIBSBML_EXTERN
1329 char *
1330 CSGSetOperator_getOperationTypeAsString(const CSGSetOperator_t * csgso);
1331 
1332 
1333 /**
1334  * Returns the value of the "complementA" attribute of this CSGSetOperator_t.
1335  *
1336  * @param csgso the CSGSetOperator_t structure whose complementA is sought.
1337  *
1338  * @return the value of the "complementA" attribute of this CSGSetOperator_t as
1339  * a pointer to a string.
1340  *
1341  * @copydetails doc_returned_owned_char
1342  *
1343  * @memberof CSGSetOperator_t
1344  */
1345 LIBSBML_EXTERN
1346 char *
1347 CSGSetOperator_getComplementA(const CSGSetOperator_t * csgso);
1348 
1349 
1350 /**
1351  * Returns the value of the "complementB" attribute of this CSGSetOperator_t.
1352  *
1353  * @param csgso the CSGSetOperator_t structure whose complementB is sought.
1354  *
1355  * @return the value of the "complementB" attribute of this CSGSetOperator_t as
1356  * a pointer to a string.
1357  *
1358  * @copydetails doc_returned_owned_char
1359  *
1360  * @memberof CSGSetOperator_t
1361  */
1362 LIBSBML_EXTERN
1363 char *
1364 CSGSetOperator_getComplementB(const CSGSetOperator_t * csgso);
1365 
1366 
1367 /**
1368  * Predicate returning @c 1 (true) if this CSGSetOperator_t's "operationType"
1369  * attribute is set.
1370  *
1371  * @param csgso the CSGSetOperator_t structure.
1372  *
1373  * @return @c 1 (true) if this CSGSetOperator_t's "operationType" attribute has
1374  * been set, otherwise @c 0 (false) is returned.
1375  *
1376  * @copydetails doc_csgsetoperator_operationType
1377  *
1378  * @memberof CSGSetOperator_t
1379  */
1380 LIBSBML_EXTERN
1381 int
1382 CSGSetOperator_isSetOperationType(const CSGSetOperator_t * csgso);
1383 
1384 
1385 /**
1386  * Predicate returning @c 1 (true) if this CSGSetOperator_t's "complementA"
1387  * attribute is set.
1388  *
1389  * @param csgso the CSGSetOperator_t structure.
1390  *
1391  * @return @c 1 (true) if this CSGSetOperator_t's "complementA" attribute has
1392  * been set, otherwise @c 0 (false) is returned.
1393  *
1394  * @memberof CSGSetOperator_t
1395  */
1396 LIBSBML_EXTERN
1397 int
1398 CSGSetOperator_isSetComplementA(const CSGSetOperator_t * csgso);
1399 
1400 
1401 /**
1402  * Predicate returning @c 1 (true) if this CSGSetOperator_t's "complementB"
1403  * attribute is set.
1404  *
1405  * @param csgso the CSGSetOperator_t structure.
1406  *
1407  * @return @c 1 (true) if this CSGSetOperator_t's "complementB" attribute has
1408  * been set, otherwise @c 0 (false) is returned.
1409  *
1410  * @memberof CSGSetOperator_t
1411  */
1412 LIBSBML_EXTERN
1413 int
1414 CSGSetOperator_isSetComplementB(const CSGSetOperator_t * csgso);
1415 
1416 
1417 /**
1418  * Sets the value of the "operationType" attribute of this CSGSetOperator_t.
1419  *
1420  * @param csgso the CSGSetOperator_t structure.
1421  *
1422  * @param operationType SetOperation_t value of the "operationType" attribute
1423  * to be set.
1424  *
1425  * @copydetails doc_returns_success_code
1426  * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1427  * @li @sbmlconstant{LIBSBML_INVALID_ATTRIBUTE_VALUE, OperationReturnValues_t}
1428  * @li @sbmlconstant{LIBSBML_INVALID_OBJECT, OperationReturnValues_t}
1429  *
1430  * @copydetails doc_csgsetoperator_operationType
1431  *
1432  * @memberof CSGSetOperator_t
1433  */
1434 LIBSBML_EXTERN
1435 int
1436 CSGSetOperator_setOperationType(CSGSetOperator_t * csgso,
1437                                 SetOperation_t operationType);
1438 
1439 
1440 /**
1441  * Sets the value of the "operationType" attribute of this CSGSetOperator_t.
1442  *
1443  * @param csgso the CSGSetOperator_t structure.
1444  *
1445  * @param operationType const char * of the "operationType" attribute to be
1446  * set.
1447  *
1448  * @copydetails doc_returns_success_code
1449  * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1450  * @li @sbmlconstant{LIBSBML_INVALID_ATTRIBUTE_VALUE, OperationReturnValues_t}
1451  * @li @sbmlconstant{LIBSBML_INVALID_OBJECT, OperationReturnValues_t}
1452  *
1453  * @copydetails doc_csgsetoperator_operationType
1454  *
1455  * @memberof CSGSetOperator_t
1456  */
1457 LIBSBML_EXTERN
1458 int
1459 CSGSetOperator_setOperationTypeAsString(CSGSetOperator_t * csgso,
1460                                         const char * operationType);
1461 
1462 
1463 /**
1464  * Sets the value of the "complementA" attribute of this CSGSetOperator_t.
1465  *
1466  * @param csgso the CSGSetOperator_t structure.
1467  *
1468  * @param complementA const char * value of the "complementA" attribute to be
1469  * set.
1470  *
1471  * @copydetails doc_returns_success_code
1472  * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1473  * @li @sbmlconstant{LIBSBML_INVALID_ATTRIBUTE_VALUE, OperationReturnValues_t}
1474  * @li @sbmlconstant{LIBSBML_INVALID_OBJECT, OperationReturnValues_t}
1475  *
1476  * @memberof CSGSetOperator_t
1477  */
1478 LIBSBML_EXTERN
1479 int
1480 CSGSetOperator_setComplementA(CSGSetOperator_t * csgso,
1481                               const char * complementA);
1482 
1483 
1484 /**
1485  * Sets the value of the "complementB" attribute of this CSGSetOperator_t.
1486  *
1487  * @param csgso the CSGSetOperator_t structure.
1488  *
1489  * @param complementB const char * value of the "complementB" attribute to be
1490  * set.
1491  *
1492  * @copydetails doc_returns_success_code
1493  * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1494  * @li @sbmlconstant{LIBSBML_INVALID_ATTRIBUTE_VALUE, OperationReturnValues_t}
1495  * @li @sbmlconstant{LIBSBML_INVALID_OBJECT, OperationReturnValues_t}
1496  *
1497  * @memberof CSGSetOperator_t
1498  */
1499 LIBSBML_EXTERN
1500 int
1501 CSGSetOperator_setComplementB(CSGSetOperator_t * csgso,
1502                               const char * complementB);
1503 
1504 
1505 /**
1506  * Unsets the value of the "operationType" attribute of this CSGSetOperator_t.
1507  *
1508  * @param csgso the CSGSetOperator_t structure.
1509  *
1510  * @copydetails doc_returns_success_code
1511  * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1512  * @li @sbmlconstant{LIBSBML_INVALID_OBJECT, OperationReturnValues_t}
1513  *
1514  * @copydetails doc_csgsetoperator_operationType
1515  *
1516  * @memberof CSGSetOperator_t
1517  */
1518 LIBSBML_EXTERN
1519 int
1520 CSGSetOperator_unsetOperationType(CSGSetOperator_t * csgso);
1521 
1522 
1523 /**
1524  * Unsets the value of the "complementA" attribute of this CSGSetOperator_t.
1525  *
1526  * @param csgso the CSGSetOperator_t structure.
1527  *
1528  * @copydetails doc_returns_success_code
1529  * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1530  * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
1531  * @li @sbmlconstant{LIBSBML_INVALID_OBJECT, OperationReturnValues_t}
1532  *
1533  * @memberof CSGSetOperator_t
1534  */
1535 LIBSBML_EXTERN
1536 int
1537 CSGSetOperator_unsetComplementA(CSGSetOperator_t * csgso);
1538 
1539 
1540 /**
1541  * Unsets the value of the "complementB" attribute of this CSGSetOperator_t.
1542  *
1543  * @param csgso the CSGSetOperator_t structure.
1544  *
1545  * @copydetails doc_returns_success_code
1546  * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1547  * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
1548  * @li @sbmlconstant{LIBSBML_INVALID_OBJECT, OperationReturnValues_t}
1549  *
1550  * @memberof CSGSetOperator_t
1551  */
1552 LIBSBML_EXTERN
1553 int
1554 CSGSetOperator_unsetComplementB(CSGSetOperator_t * csgso);
1555 
1556 
1557 /**
1558  * Returns a ListOf_t * containing CSGNode_t objects from this
1559  * CSGSetOperator_t.
1560  *
1561  * @param csgso the CSGSetOperator_t structure whose ListOfCSGNodes is sought.
1562  *
1563  * @return the ListOfCSGNodes from this CSGSetOperator_t as a ListOf_t *.
1564  *
1565  * @copydetails doc_returned_unowned_pointer
1566  *
1567  * @see CSGSetOperator_addCSGNode()
1568  * @see CSGSetOperator_createCSGNode()
1569  * @see CSGSetOperator_getCSGNodeById()
1570  * @see CSGSetOperator_getCSGNode()
1571  * @see CSGSetOperator_getNumCSGNodes()
1572  * @see CSGSetOperator_removeCSGNodeById()
1573  * @see CSGSetOperator_removeCSGNode()
1574  *
1575  * @memberof CSGSetOperator_t
1576  */
1577 LIBSBML_EXTERN
1578 ListOf_t*
1579 CSGSetOperator_getListOfCSGNodes(CSGSetOperator_t* csgso);
1580 
1581 
1582 /**
1583  * Get a CSGNode_t from the CSGSetOperator_t.
1584  *
1585  * @param csgso the CSGSetOperator_t structure to search.
1586  *
1587  * @param n an unsigned int representing the index of the CSGNode_t to
1588  * retrieve.
1589  *
1590  * @return the nth CSGNode_t in the ListOfCSGNodes within this CSGSetOperator
1591  * or @c NULL if no such object exists.
1592  *
1593  * @copydetails doc_returned_unowned_pointer
1594  *
1595  * @memberof CSGSetOperator_t
1596  */
1597 LIBSBML_EXTERN
1598 CSGNode_t*
1599 CSGSetOperator_getCSGNode(CSGSetOperator_t* csgso, unsigned int n);
1600 
1601 
1602 /**
1603  * Get a CSGNode_t from the CSGSetOperator_t based on its identifier.
1604  *
1605  * @param csgso the CSGSetOperator_t structure to search.
1606  *
1607  * @param sid a string representing the identifier of the CSGNode_t to
1608  * retrieve.
1609  *
1610  * @return the CSGNode_t in the ListOfCSGNodes within this CSGSetOperator with
1611  * the given @p sid or @c NULL if no such CSGNode_t exists.
1612  *
1613  * @copydetails doc_returned_unowned_pointer
1614  *
1615  * @memberof CSGSetOperator_t
1616  */
1617 LIBSBML_EXTERN
1618 CSGNode_t*
1619 CSGSetOperator_getCSGNodeById(CSGSetOperator_t* csgso, const char *sid);
1620 
1621 
1622 /**
1623  * Adds a copy of the given CSGNode_t to this CSGSetOperator_t.
1624  *
1625  * @param csgso the CSGSetOperator_t structure to which the CSGNode_t should be
1626  * added.
1627  *
1628  * @param csgn the CSGNode_t object to add.
1629  *
1630  * @copydetails doc_returns_success_code
1631  * @li @sbmlconstant{LIBSBML_OPERATION_SUCCESS, OperationReturnValues_t}
1632  * @li @sbmlconstant{LIBSBML_OPERATION_FAILED, OperationReturnValues_t}
1633  * @li @sbmlconstant{LIBSBML_INVALID_OBJECT, OperationReturnValues_t}
1634  * @li @sbmlconstant{LIBSBML_LEVEL_MISMATCH, OperationReturnValues_t}
1635  * @li @sbmlconstant{LIBSBML_VERSION_MISMATCH, OperationReturnValues_t}
1636  * @li @sbmlconstant{LIBSBML_PKG_VERSION_MISMATCH, OperationReturnValues_t}
1637  * @li @sbmlconstant{LIBSBML_DUPLICATE_OBJECT_ID, OperationReturnValues_t}
1638  *
1639  * @memberof CSGSetOperator_t
1640  */
1641 LIBSBML_EXTERN
1642 int
1643 CSGSetOperator_addCSGNode(CSGSetOperator_t* csgso, const CSGNode_t* csgn);
1644 
1645 
1646 /**
1647  * Get the number of CSGNode_t objects in this CSGSetOperator_t.
1648  *
1649  * @param csgso the CSGSetOperator_t structure to query.
1650  *
1651  * @return the number of CSGNode_t objects in this CSGSetOperator_t.
1652  *
1653  * @memberof CSGSetOperator_t
1654  */
1655 LIBSBML_EXTERN
1656 unsigned int
1657 CSGSetOperator_getNumCSGNodes(CSGSetOperator_t* csgso);
1658 
1659 
1660 /**
1661  * Creates a new CSGPrimitive_t object, adds it to this CSGSetOperator_t object
1662  * and returns the CSGPrimitive_t object created.
1663  *
1664  * @param csgso the CSGSetOperator_t structure to which the CSGPrimitive_t
1665  * should be added.
1666  *
1667  * @return a new CSGPrimitive_t object instance.
1668  *
1669  * @copydetails doc_returned_unowned_pointer
1670  *
1671  * @memberof CSGSetOperator_t
1672  */
1673 LIBSBML_EXTERN
1674 CSGPrimitive_t*
1675 CSGSetOperator_createCSGPrimitive(CSGSetOperator_t* csgso);
1676 
1677 
1678 /**
1679  * Creates a new CSGTranslation_t object, adds it to this CSGSetOperator_t
1680  * object and returns the CSGTranslation_t object created.
1681  *
1682  * @param csgso the CSGSetOperator_t structure to which the CSGTranslation_t
1683  * should be added.
1684  *
1685  * @return a new CSGTranslation_t object instance.
1686  *
1687  * @copydetails doc_returned_unowned_pointer
1688  *
1689  * @memberof CSGSetOperator_t
1690  */
1691 LIBSBML_EXTERN
1692 CSGTranslation_t*
1693 CSGSetOperator_createCSGTranslation(CSGSetOperator_t* csgso);
1694 
1695 
1696 /**
1697  * Creates a new CSGRotation_t object, adds it to this CSGSetOperator_t object
1698  * and returns the CSGRotation_t object created.
1699  *
1700  * @param csgso the CSGSetOperator_t structure to which the CSGRotation_t
1701  * should be added.
1702  *
1703  * @return a new CSGRotation_t object instance.
1704  *
1705  * @copydetails doc_returned_unowned_pointer
1706  *
1707  * @memberof CSGSetOperator_t
1708  */
1709 LIBSBML_EXTERN
1710 CSGRotation_t*
1711 CSGSetOperator_createCSGRotation(CSGSetOperator_t* csgso);
1712 
1713 
1714 /**
1715  * Creates a new CSGScale_t object, adds it to this CSGSetOperator_t object and
1716  * returns the CSGScale_t object created.
1717  *
1718  * @param csgso the CSGSetOperator_t structure to which the CSGScale_t should
1719  * be added.
1720  *
1721  * @return a new CSGScale_t object instance.
1722  *
1723  * @copydetails doc_returned_unowned_pointer
1724  *
1725  * @memberof CSGSetOperator_t
1726  */
1727 LIBSBML_EXTERN
1728 CSGScale_t*
1729 CSGSetOperator_createCSGScale(CSGSetOperator_t* csgso);
1730 
1731 
1732 /**
1733  * Creates a new CSGHomogeneousTransformation_t object, adds it to this
1734  * CSGSetOperator_t object and returns the CSGHomogeneousTransformation_t
1735  * object created.
1736  *
1737  * @param csgso the CSGSetOperator_t structure to which the
1738  * CSGHomogeneousTransformation_t should be added.
1739  *
1740  * @return a new CSGHomogeneousTransformation_t object instance.
1741  *
1742  * @copydetails doc_returned_unowned_pointer
1743  *
1744  * @memberof CSGSetOperator_t
1745  */
1746 LIBSBML_EXTERN
1747 CSGHomogeneousTransformation_t*
1748 CSGSetOperator_createCSGHomogeneousTransformation(CSGSetOperator_t* csgso);
1749 
1750 
1751 /**
1752  * Creates a new CSGSetOperator_t object, adds it to this CSGSetOperator_t
1753  * object and returns the CSGSetOperator_t object created.
1754  *
1755  * @param csgso the CSGSetOperator_t structure to which the CSGSetOperator_t
1756  * should be added.
1757  *
1758  * @return a new CSGSetOperator_t object instance.
1759  *
1760  * @copydetails doc_returned_unowned_pointer
1761  *
1762  * @memberof CSGSetOperator_t
1763  */
1764 LIBSBML_EXTERN
1765 CSGSetOperator_t*
1766 CSGSetOperator_createCSGSetOperator(CSGSetOperator_t* csgso);
1767 
1768 
1769 /**
1770  * Removes the nth CSGNode_t from this CSGSetOperator_t and returns a pointer
1771  * to it.
1772  *
1773  * @param csgso the CSGSetOperator_t structure to search.
1774  *
1775  * @param n an unsigned int representing the index of the CSGNode_t to remove.
1776  *
1777  * @return a pointer to the nth CSGNode_t in this CSGSetOperator_t.
1778  *
1779  * @copydetails doc_warning_returns_owned_pointer
1780  *
1781  * @memberof CSGSetOperator_t
1782  */
1783 LIBSBML_EXTERN
1784 CSGNode_t*
1785 CSGSetOperator_removeCSGNode(CSGSetOperator_t* csgso, unsigned int n);
1786 
1787 
1788 /**
1789  * Removes the CSGNode_t from this CSGSetOperator_t based on its identifier and
1790  * returns a pointer to it.
1791  *
1792  * @param csgso the CSGSetOperator_t structure to search.
1793  *
1794  * @param sid a string representing the identifier of the CSGNode_t to remove.
1795  *
1796  * @return the CSGNode_t in this CSGSetOperator_t based on the identifier or
1797  * NULL if no such CSGNode_t exists.
1798  *
1799  * @copydetails doc_warning_returns_owned_pointer
1800  *
1801  * @memberof CSGSetOperator_t
1802  */
1803 LIBSBML_EXTERN
1804 CSGNode_t*
1805 CSGSetOperator_removeCSGNodeById(CSGSetOperator_t* csgso, const char* sid);
1806 
1807 
1808 /**
1809  * Predicate returning @c 1 (true) if all the required attributes for this
1810  * CSGSetOperator_t object have been set.
1811  *
1812  * @param csgso the CSGSetOperator_t structure.
1813  *
1814  * @return @c 1 (true) to indicate that all the required attributes of this
1815  * CSGSetOperator_t have been set, otherwise @c 0 (false) is returned.
1816  *
1817  *
1818  * @note The required attributes for the CSGSetOperator_t object are:
1819  * @li "operationType"
1820  *
1821  * @memberof CSGSetOperator_t
1822  */
1823 LIBSBML_EXTERN
1824 int
1825 CSGSetOperator_hasRequiredAttributes(const CSGSetOperator_t * csgso);
1826 
1827 
1828 /**
1829  * Predicate returning @c 1 (true) if all the required elements for this
1830  * CSGSetOperator_t object have been set.
1831  *
1832  * @param csgso the CSGSetOperator_t structure.
1833  *
1834  * @return @c 1 (true) to indicate that all the required elements of this
1835  * CSGSetOperator_t have been set, otherwise @c 0 (false) is returned.
1836  *
1837  *
1838  * @note The required elements for the CSGSetOperator_t object are:
1839  *
1840  * @memberof CSGSetOperator_t
1841  */
1842 LIBSBML_EXTERN
1843 int
1844 CSGSetOperator_hasRequiredElements(const CSGSetOperator_t * csgso);
1845 
1846 
1847 
1848 
1849 END_C_DECLS
1850 
1851 
1852 
1853 
1854 LIBSBML_CPP_NAMESPACE_END
1855 
1856 
1857 
1858 
1859 #endif /* !SWIG */
1860 
1861 
1862 
1863 
1864 #endif /* !CSGSetOperator_H__ */
1865 
1866 
1867