libSBML Perl API  libSBML 5.10.0 Perl API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
CompModelPlugin Class Reference
Inheritance diagram for CompModelPlugin:
[legend]

Detailed Description

{comp} Implementation of the “comp” package extention to the Model construct.

The CompModelPlugin class inherits from the SBMLSBasePlugin class, and codifies the extentions to the Model class defined in the SBML Level 3 Hierarchical Model Composition package (“comp”). This extention allows a Model to define Submodels (other Models that are instantiated as new parts of the parent Model), and Ports, a defined interface for including the given Model as a Submodel of a different Model.

Submodels are stored in an optional child ListOfSubmodels object, which, if present, must contain one or more Submodel objects. All of the Submodels present in the ListOfSubmodels are defined to be instantiated in the 'complete' Model.

Ports are stored in an optional child ListOfPorts object, which, if present, must contain one or more Port objects. All of the Ports present in the ListOfPorts collectively define the 'port interface' of the Model.

Public Member Functions

int addPort (const Port *port)
 Adds a copy of the given Port object to the list of ports. More...
 
int addReplacedElement (const ReplacedElement *replacedElement)
 Adds a copy of the given ReplacedElement object to the list of ReplacedElements. More...
 
int addSubmodel (const Submodel *submodel)
 Adds a copy of the given Submodel object to the list of submodels. More...
 
virtual void clearReplacedElements ()
 Remove all ReplacedElements, if any exist. More...
 
virtual CompModelPluginclone () const
 Creates and returns a deep copy of this CompModelPlugin object. More...
 
 CompModelPlugin (const std::string &uri, const std::string &prefix, CompPkgNamespaces *compns)
 Constructor. More...
 
 CompModelPlugin (const CompModelPlugin &orig)
 Copy constructor. More...
 
PortcreatePort ()
 Creates a Port object, adds it to the end of the port objects list and returns a pointer to the newly created object. More...
 
ReplacedBycreateReplacedBy ()
 Creates a new, empty ReplacedBy, adds it to this CompSBasePlugin and returns the created ReplacedBy. More...
 
ReplacedElementcreateReplacedElement ()
 Creates a ReplacedElement object, adds it to the end of the ReplacedElement objects list and returns a pointer to the newly created object. More...
 
SubmodelcreateSubmodel ()
 Creates a Submodel object, adds it to the end of the submodel objects list and returns a pointer to the newly created object. More...
 
virtual ListgetAllElements (ElementFilter *filter=NULL)
 Returns a List of all child SBase objects, including those nested to an arbitrary depth. More...
 
std::string getDivider ()
 Get the string used as the divider between names when renaming and flattening models. More...
 
virtual SBasegetElementByMetaId (const std::string &metaid)
 Returns the first child element it can find with the given meta identifier, or itself if it has the given metaid, or NULL if no such object is found. More...
 
virtual SBasegetElementBySId (const std::string &id)
 Returns the first child element found that has the given id in the model-wide SId namespace, or NULL if no such object is found. More...
 
const std::string & getElementNamespace () const
 Returns the XML namespace (URI) of the package extension of this plugin object. More...
 
unsigned int getLevel () const
 Returns the SBML level of the package extension of this plugin object. More...
 
const ListOfPortsgetListOfPorts () const
 Returns the ListOf object that holds all ports. More...
 
const ListOfReplacedElementsgetListOfReplacedElements () const
 Returns the ListOf object that holds all replacedElements. More...
 
const ListOfSubmodelsgetListOfSubmodels () const
 Returns the ListOf object that holds all submodels. More...
 
unsigned int getNumPorts () const
 Returns the number of ports for this CompModelPlugin. More...
 
unsigned int getNumReplacedElements () const
 Returns the number of ReplacedElements for this CompSBasePlugin. More...
 
unsigned int getNumSubmodels () const
 Returns the number of submodels for this CompModelPlugin. More...
 
const std::string & getPackageName () const
 Returns the package name of this plugin object. More...
 
unsigned int getPackageVersion () const
 Returns the package version of the package extension of this plugin object. More...
 
SBasegetParentSBMLObject ()
 Returns the parent SBase object to which this plugin object connected. More...
 
const SBasegetParentSBMLObject () const
 Returns the parent SBase object to which this plugin object connected. More...
 
PortgetPort (unsigned int n)
 Returns the port with the given index. More...
 
const PortgetPort (unsigned int n) const
 Returns the port with the given index. More...
 
PortgetPort (std::string id)
 Returns the port with the given identifier. More...
 
const PortgetPort (std::string id) const
 Returns the port with the given identifier. More...
 
const std::string & getPrefix () const
 Returns the prefix of the package extension of this plugin object. More...
 
const ReplacedBygetReplacedBy () const
 Get the child ReplacedBy of this SBase. More...
 
ReplacedBygetReplacedBy ()
 Get the child ReplacedBy of this SBase. More...
 
ReplacedElementgetReplacedElement (unsigned int n)
 Returns the ReplacedElement with the given index. More...
 
const ReplacedElementgetReplacedElement (unsigned int n) const
 Returns the ReplacedElement with the given index. More...
 
SBMLDocumentgetSBMLDocument ()
 Returns the parent SBMLDocument of this plugin object. More...
 
const SBMLDocumentgetSBMLDocument () const
 Returns the parent SBMLDocument of this plugin object. More...
 
SubmodelgetSubmodel (unsigned int n)
 Returns the submodel with the given index. More...
 
const SubmodelgetSubmodel (unsigned int n) const
 Returns the submodel with the given index. More...
 
SubmodelgetSubmodel (std::string id)
 Returns the submodel with the given identifier. More...
 
const SubmodelgetSubmodel (std::string id) const
 Returns the submodel with the given identifier. More...
 
PrefixTransformer * getTransformer () const
 
std::string getURI () const
 Gets the URI to which this element belongs to. More...
 
unsigned int getVersion () const
 Returns the SBML version of the package extension of this plugin object. More...
 
bool isSetReplacedBy () const
 Predicate for testing whether the ReplacedBy for this SBase is set. More...
 
bool isSetTransformer () const
 
virtual void logInvalidId (const std::string &attribute, const std::string &wrongattribute)
 Helper to log a common type of error. More...
 
CompModelPluginoperator= (const CompModelPlugin &orig)
 Assignment operator for CompModelPlugin. More...
 
PortremovePort (unsigned int index)
 Removes the port with the given index. More...
 
ReplacedElementremoveReplacedElement (unsigned int index)
 Removes the ReplacedElement with the given index. More...
 
SubmodelremoveSubmodel (unsigned int index)
 Removes the submodel with the given index. More...
 
int setDivider (const std::string &divider)
 Set the string used as the divider between names when renaming and flattening models. More...
 
int setElementNamespace (const std::string &uri)
 Sets the XML namespace to which this element belongs to. More...
 
int setReplacedBy (const ReplacedBy *replacedBy)
 Sets the ReplacedBy definition of this SBase to a copy of the given ReplacedBy object instance. More...
 
void setTransformer (PrefixTransformer *transformer)
 Sets the custom transformer that is to be used, instead of the standard prefixing with the given divider. More...
 
virtual int unsetReplacedBy ()
 Unsets the child ReplacedBy of this SBase. More...
 
void unsetTransformer ()
 Unsets any custom prefix transformers. More...
 
virtual ~CompModelPlugin ()
 Destroy this object. More...
 

Protected Member Functions

virtual ModelflattenModel () const
 Flatten and return a copy of this hierarchical model. More...
 
virtual int instantiateSubmodels ()
 Loop through all Submodels in this Model, instantiate all of them, perform all deletions, and synchronize all replacements, including using any conversion factors that may exist. More...
 
virtual int removeCollectedElements (std::set< SBase * > *removed, std::set< SBase * > *toremove)
 Deletes any elements in 'toremove' that do not already exist in 'removed', while taking care to not double-delete any element. More...
 

Friends

class CompFlatteningConverter
 
class ReplacedElement
 

Constructor & Destructor Documentation

CompModelPlugin::CompModelPlugin ( const std::string &  uri,
const std::string &  prefix,
CompPkgNamespaces compns 
)

Constructor.

CompModelPlugin::CompModelPlugin ( const CompModelPlugin orig)

Copy constructor.

Creates a copy of this CompModelPlugin object.

CompModelPlugin::~CompModelPlugin ( )
virtual

Destroy this object.

Member Function Documentation

int CompModelPlugin::addPort ( const Port port)

Adds a copy of the given Port object to the list of ports.

Parameters
portthe Port object to be added to the list of ports. Fails if the added port is NULL, does not match the level/version/package of the parent object, or cannot be added to the list of ports.
Returns
integer value indicating success/failure of the operation. The possible return values:
int CompSBasePlugin::addReplacedElement ( const ReplacedElement replacedElement)
inherited

Adds a copy of the given ReplacedElement object to the list of ReplacedElements.

Parameters
replacedElementthe ReplacedElement object to be added to the list of ReplacedElements. Fails if the added ReplacedElement is NULL, does not match the level/version/package of the parent object, or cannot be added to the list of replaced elements.
Returns
integer value indicating success/failure of the operation. The possible return values are:
int CompModelPlugin::addSubmodel ( const Submodel submodel)

Adds a copy of the given Submodel object to the list of submodels.

Fails if the added submodel is NULL, does not match the level/version/package of the parent object, or cannot be added to the list of submodels.

Parameters
submodelthe Submodel object to be added to the list of submodels.
Returns
integer value indicating success/failure of the operation. The possible return values are:
void CompSBasePlugin::clearReplacedElements ( )
virtualinherited

Remove all ReplacedElements, if any exist.

CompModelPlugin * CompModelPlugin::clone ( ) const
virtual

Creates and returns a deep copy of this CompModelPlugin object.

Returns
a (deep) copy of this CompModelPlugin object

Reimplemented from CompSBasePlugin.

Port * CompModelPlugin::createPort ( )

Creates a Port object, adds it to the end of the port objects list and returns a pointer to the newly created object.

Returns
a newly created Port object
ReplacedBy * CompSBasePlugin::createReplacedBy ( )
inherited

Creates a new, empty ReplacedBy, adds it to this CompSBasePlugin and returns the created ReplacedBy.

Returns
the newly created ReplacedBy object instance
ReplacedElement * CompSBasePlugin::createReplacedElement ( )
inherited

Creates a ReplacedElement object, adds it to the end of the ReplacedElement objects list and returns a pointer to the newly created object.

Returns
a newly created ReplacedElement object
Submodel * CompModelPlugin::createSubmodel ( )

Creates a Submodel object, adds it to the end of the submodel objects list and returns a pointer to the newly created object.

Returns
a newly created Submodel object
Model * CompModelPlugin::flattenModel ( ) const
protectedvirtual

Flatten and return a copy of this hierarchical model.

Follows all the rules of the hierarchical model composition package and returns a version with all submodels copied into the main model, with all deletions removed and all replaced elements replaced, following any and all rules of conversion factors. Only the ports created for this model will remain.

Returns
a Model object with no submodels. On failure, return NULL.
List * CompModelPlugin::getAllElements ( ElementFilter *  filter = NULL)
virtual

Returns a List of all child SBase objects, including those nested to an arbitrary depth.

Returns
a List of pointers to all children objects.

Reimplemented from CompSBasePlugin.

string CompModelPlugin::getDivider ( )

Get the string used as the divider between names when renaming and flattening models.

The divider string consists of two underscore characters ("__") by default, and can be overridden with the setDivider() function.

See also
setDivider(const std::string& divider)
SBase * CompModelPlugin::getElementByMetaId ( const std::string &  metaid)
virtual

Returns the first child element it can find with the given meta identifier, or itself if it has the given metaid, or NULL if no such object is found.

Parameters
metaida string representing the metaid of objects to find.
Returns
a pointer to the SBase element with the given metaid.

Reimplemented from CompSBasePlugin.

SBase * CompModelPlugin::getElementBySId ( const std::string &  id)
virtual

Returns the first child element found that has the given id in the model-wide SId namespace, or NULL if no such object is found.

Parameters
ida string representing the id of objects to find.
Returns
a pointer to the SBase element with the given id.

Reimplemented from CompSBasePlugin.

const std::string & SBasePlugin::getElementNamespace ( ) const
inherited

Returns the XML namespace (URI) of the package extension of this plugin object.

Returns
the URI of the package extension of this plugin object.
unsigned int SBasePlugin::getLevel ( ) const
inherited

Returns the SBML level of the package extension of this plugin object.

Returns
the SBML level of the package extension of this plugin object.
const ListOfPorts * CompModelPlugin::getListOfPorts ( ) const

Returns the ListOf object that holds all ports.

Returns
the ListOf object that holds all ports.
const ListOfReplacedElements * CompSBasePlugin::getListOfReplacedElements ( ) const
inherited

Returns the ListOf object that holds all replacedElements.

Returns
the ListOf object that holds all replacedElements.
const ListOfSubmodels * CompModelPlugin::getListOfSubmodels ( ) const

Returns the ListOf object that holds all submodels.

Returns
the ListOf object that holds all submodels.
unsigned int CompModelPlugin::getNumPorts ( ) const

Returns the number of ports for this CompModelPlugin.

Returns
the number of ports for this CompModelPlugin.
unsigned int CompSBasePlugin::getNumReplacedElements ( ) const
inherited

Returns the number of ReplacedElements for this CompSBasePlugin.

Returns
the number of ReplacedElements for this CompSBasePlugin.
unsigned int CompModelPlugin::getNumSubmodels ( ) const

Returns the number of submodels for this CompModelPlugin.

Returns
the number of submodels for this CompModelPlugin.
const std::string & SBasePlugin::getPackageName ( ) const
inherited

Returns the package name of this plugin object.

Returns
the package name of this plugin object.
unsigned int SBasePlugin::getPackageVersion ( ) const
inherited

Returns the package version of the package extension of this plugin object.

Returns
the package version of the package extension of this plugin object.
SBase * SBasePlugin::getParentSBMLObject ( )
inherited

Returns the parent SBase object to which this plugin object connected.

Returns
the parent SBase object to which this plugin object connected.
const SBase * SBasePlugin::getParentSBMLObject ( ) const
inherited

Returns the parent SBase object to which this plugin object connected.

Returns
the parent SBase object to which this plugin object connected.
Port * CompModelPlugin::getPort ( unsigned int  n)

Returns the port with the given index.

Parameters
nthe index number of the Port to get.
Returns
the nth Port in the ListOfPorts. If the index n is invalid, NULL is returned.
const Port * CompModelPlugin::getPort ( unsigned int  n) const

Returns the port with the given index.

Parameters
nthe index number of the Port to get.
Returns
the nth Port in the ListOfPorts. If the index n is invalid, NULL is returned.
Port * CompModelPlugin::getPort ( std::string  id)

Returns the port with the given identifier.

Parameters
idthe id of the Port to get.
Returns
the Port in the ListOfPorts with the given identifier. If the identifier is invalid, NULL is returned.
const Port * CompModelPlugin::getPort ( std::string  id) const

Returns the port with the given identifier.

Parameters
idthe id of the Port to get.
Returns
the Port in the ListOfPorts with the given identifier. If the identifier is invalid, NULL is returned.
const std::string & SBasePlugin::getPrefix ( ) const
inherited

Returns the prefix of the package extension of this plugin object.

Returns
the prefix of the package extension of this plugin object.
const ReplacedBy * CompSBasePlugin::getReplacedBy ( ) const
inherited

Get the child ReplacedBy of this SBase.

Returns
the const ReplacedBy child of this SBase
ReplacedBy * CompSBasePlugin::getReplacedBy ( )
inherited

Get the child ReplacedBy of this SBase.

Returns
the ReplacedBy child of this SBase.
ReplacedElement * CompSBasePlugin::getReplacedElement ( unsigned int  n)
inherited

Returns the ReplacedElement with the given index.

Parameters
nthe index number of the ReplacedElement to get.
Returns
the nth ReplacedElement in the ListOfReplacedElements. If the index is invalid, NULL is returned.
const ReplacedElement * CompSBasePlugin::getReplacedElement ( unsigned int  n) const
inherited

Returns the ReplacedElement with the given index.

Parameters
nthe index number of the ReplacedElement to get.
Returns
the nth ReplacedElement in the ListOfReplacedElements. If the index is invalid, NULL is returned.
SBMLDocument * SBasePlugin::getSBMLDocument ( )
inherited

Returns the parent SBMLDocument of this plugin object.

Returns
the parent SBMLDocument object of this plugin object.
const SBMLDocument * SBasePlugin::getSBMLDocument ( ) const
inherited

Returns the parent SBMLDocument of this plugin object.

Returns
the parent SBMLDocument object of this plugin object.
Submodel * CompModelPlugin::getSubmodel ( unsigned int  n)

Returns the submodel with the given index.

If the index is invalid, NULL is returned.

Parameters
nthe index number of the Submodel to get.
Returns
the nth Submodel in the ListOfSubmodels.
const Submodel * CompModelPlugin::getSubmodel ( unsigned int  n) const

Returns the submodel with the given index.

Parameters
nthe index number of the Submodel to get.
Returns
the nth Submodel in the ListOfSubmodels. If the index n is invalid, NULL is returned.
Submodel * CompModelPlugin::getSubmodel ( std::string  id)

Returns the submodel with the given identifier.

Parameters
idthe identifier of the Submodel to get.
Returns
the Submodel in the ListOfSubmodels with the given identifier. If no such submodel with identifier id exists, NULL is returned.
const Submodel * CompModelPlugin::getSubmodel ( std::string  id) const

Returns the submodel with the given identifier.

Parameters
idthe identifier of the Submodel to get.
Returns
the Submodel in the ListOfSubmodels with the given identifier. If no submodel with identifier id exists, NULL is returned.
PrefixTransformer * CompModelPlugin::getTransformer ( ) const
Returns
any custom transformer set for prefix operations, will be NULL by default.
std::string SBasePlugin::getURI ( ) const
inherited

Gets the URI to which this element belongs to.

For example, all elements that belong to SBML Level 3 Version 1 Core must would have the URI "http://www.sbml.org/sbml/level3/version1/core"; all elements that belong to Layout Extension Version 1 for SBML Level 3 Version 1 Core must would have the URI "http://www.sbml.org/sbml/level3/version1/layout/version1/"

Unlike getElementNamespace, this function first returns the URI for this element by looking into the SBMLNamespaces object of the document with the its package name. if not found it will return the result of getElementNamespace

Returns
the URI this elements
See also
getPackageName()
getElementNamespace()
SBMLDocument::getSBMLNamespaces()
getSBMLDocument()
unsigned int SBasePlugin::getVersion ( ) const
inherited

Returns the SBML version of the package extension of this plugin object.

Returns
the SBML version of the package extension of this plugin object.
int CompModelPlugin::instantiateSubmodels ( )
protectedvirtual

Loop through all Submodels in this Model, instantiate all of them, perform all deletions, and synchronize all replacements, including using any conversion factors that may exist.

The resulting models are stored in the Submodel objects, and available from 'Submodel::getInstantiation()'

Returns
an integer value indicating success/failure of the operation. Possible return values from this function are:
bool CompSBasePlugin::isSetReplacedBy ( ) const
inherited

Predicate for testing whether the ReplacedBy for this SBase is set.

Returns
true if the ReplacedBy of this SBase is set, false otherwise.
bool CompModelPlugin::isSetTransformer ( ) const
Returns
an indicator, whether a custom transformer has been set.
void CompSBasePlugin::logInvalidId ( const std::string &  attribute,
const std::string &  wrongattribute 
)
virtualinherited

Helper to log a common type of error.

CompModelPlugin & CompModelPlugin::operator= ( const CompModelPlugin orig)

Assignment operator for CompModelPlugin.

int CompModelPlugin::removeCollectedElements ( std::set< SBase * > *  removed,
std::set< SBase * > *  toremove 
)
protectedvirtual

Deletes any elements in 'toremove' that do not already exist in 'removed', while taking care to not double-delete any element.

Intended for use with collectDeletionsAndDeleteCompConstructs and collectRenameAndConvertReplacements.

Port * CompModelPlugin::removePort ( unsigned int  index)

Removes the port with the given index.

Parameters
indexthe index of the Port object to remove
Returns
the Port object removed. As mentioned above, the caller owns the returned object. NULL is returned if the given index is out of range.
ReplacedElement * CompSBasePlugin::removeReplacedElement ( unsigned int  index)
inherited

Removes the ReplacedElement with the given index.

A pointer to the ReplacedElement that was removed is returned. If no ReplacedElement has been removed, NULL is returned.

Parameters
indexthe index of the ReplacedElement object to remove
Returns
the ReplacedElement object removed. As mentioned above, the caller owns the returned object. NULL is returned if the given index is out of range.
Submodel * CompModelPlugin::removeSubmodel ( unsigned int  index)

Removes the submodel with the given index.

A pointer to the submodel that was removed is returned.

Parameters
indexthe index of the Submodel object to remove
Returns
the Submodel object removed. As mentioned above, the caller owns the returned object. NULL is returned if the given index is out of range and no submodel has been removed, NULL is returned.
int CompModelPlugin::setDivider ( const std::string &  divider)

Set the string used as the divider between names when renaming and flattening models.

The divider string consists of two underscore characters ("__") by default. This method will fail if called with an empty divider, or a divider that cannot be used internally as part of a valid SBML SId.

Returns
integer value indicating success/failure of the operation. The possible return values are:
int SBasePlugin::setElementNamespace ( const std::string &  uri)
inherited

Sets the XML namespace to which this element belongs to.

For example, all elements that belong to SBML Level 3 Version 1 Core must set the namespace to "http://www.sbml.org/sbml/level3/version1/core"; all elements that belong to Layout Extension Version 1 for SBML Level 3 Version 1 Core must set the namespace to "http://www.sbml.org/sbml/level3/version1/layout/version1/"

Returns
integer value indicating success/failure of the function. The possible values returned by this function are:
int CompSBasePlugin::setReplacedBy ( const ReplacedBy replacedBy)
inherited

Sets the ReplacedBy definition of this SBase to a copy of the given ReplacedBy object instance.

This method fails if the added ReplacedBy does not match the level/version/package of the parent object or if the added ReplacedBy cannot be copied.

Parameters
replacedBythe ReplacedBy object instance to use.
Returns
integer value indicating success/failure of the operation. The possible return values are:
void CompModelPlugin::setTransformer ( PrefixTransformer *  transformer)

Sets the custom transformer that is to be used, instead of the standard prefixing with the given divider.

This makes it possible to finely control how elements are altered.

If not set, only ids and meta ids will be prefixed.

NOTE: the model plugin only holds the pointer to the element it does not take ownership of it. Thus the calling program is responsible of freeing the transformer when no longer needed (i.e after the SBML document has been deleted)

int CompSBasePlugin::unsetReplacedBy ( )
virtualinherited

Unsets the child ReplacedBy of this SBase.

Returns
integer value indicating success/failure of the operation. The possible return values are:
void CompModelPlugin::unsetTransformer ( )

Unsets any custom prefix transformers.

Friends And Related Function Documentation

friend class CompFlatteningConverter
friend
friend class ReplacedElement
friend