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

Detailed Description

{core} Representation of a plug-in object of SBML's package extension.

Additional attributes and/or elements of a package extension which are directly contained by some pre-defined element are contained/accessed by SBasePlugin class which is extended by package developers for each extension point. The extension point, which represents an element to be extended, is identified by a combination of a Package name and a typecode of the element, and is represented by SBaseExtensionPoint class.

For example, the layout extension defines <listOfLayouts> element which is directly contained in <model> element of the core package. In the layout package (provided as one of example packages in libSBML-5), the additional element for the model element is implemented as ListOfLayouts class (an SBase derived class) and the object is contained/accessed by a LayoutModelPlugin class (an SBasePlugin derived class).

SBasePlugin class defines basic virtual functions for reading/writing/checking additional attributes and/or top-level elements which should or must be overridden by subclasses like SBase class and its derived classes.

Package developers must implement an SBasePlugin exntended class for each element to be extended (e.g. SBMLDocument, Model, ...) in which additional attributes and/or top-level elements of the package extension are directly contained.

To implement reading/writing functions for attributes and/or top-level elements of the SBsaePlugin extended class, package developers should or must override the corresponding virtual functions below provided in the SBasePlugin class:

  • reading elements :

    1. virtual SBase* createObject (XMLInputStream& stream)

      This function must be overridden if one or more additional elements are defined.

    2. virtual bool readOtherXML (SBase* parentObject, XMLInputStream& stream)

      This function should be overridden if elements of annotation, notes, MathML, etc. need to be directly parsed from the given XMLInputStream object.

  • reading attributes (must be overridden if additional attributes are defined) :

    1. virtual void addExpectedAttributes(ExpectedAttributes& attributes)
    2. virtual void readAttributes (const XMLAttributes& attributes, const ExpectedAttributes& expectedAttributes)
  • writing elements (must be overridden if additional elements are defined) :

    1. virtual void writeElements (XMLOutputStream& stream) const
  • writing attributes :

    1. virtual void writeAttributes (XMLOutputStream& stream) const

      This function must be overridden if one or more additional attributes are defined.

    2. virtual void writeXMLNS (XMLOutputStream& stream) const

      This function must be overridden if one or more additional xmlns attributes are defined.

  • checking elements (should be overridden) :

    1. virtual bool hasRequiredElements() const

  • checking attributes (should be overridden) :

    1. virtual bool hasRequiredAttributes() const

To implement package-specific creating/getting/manipulating functions of the SBasePlugin derived class (e.g., getListOfLayouts(), createLyout(), getLayout(), and etc are implemented in LayoutModelPlugin class of the layout package), package developers must newly implement such functions (as they like) in the derived class.

SBasePlugin class defines other virtual functions of internal implementations such as:

  • virtual void setSBMLDocument(SBMLDocument* d)
  • virtual void connectToParent(SBase *sbase)
  • virtual void enablePackageInternal(const std::string& pkgURI, const std::string& pkgPrefix, bool flag)

These functions must be overridden by subclasses in which one or more top-level elements are defined.

For example, the following three SBasePlugin extended classes are implemented in the layout extension:

  1. SBMLDocumentPlugin class for SBMLDocument element

    (SBMLDocumentPlugin class is a common SBasePlugin extended class for SBMLDocument class. Package developers can use this class as-is if no additional elements/attributes (except for required attribute) is needed for the SBMLDocument class in their packages, otherwise package developers must implement a new SBMLDocumentPlugin derived class.)

  2. LayoutModelPlugin class for Model element

    • <listOfLayouts> element is added to Model object.

    • The following virtual functions for reading/writing/checking are overridden: (type of arguments and return values are omitted)

      • createObject() : (read elements)
      • readOtherXML() : (read elements in annotation of SBML L2)
      • writeElements() : (write elements)

    • The following virtual functions of internal implementations are overridden: (type of arguments and return values are omitted)

      • setSBMLDocument()
      • connectToParent()
      • enablePackageInternal()

    • The following creating/getting/manipulating functions are newly implemented: (type of arguments and return values are omitted)

      • getListOfLayouts()
      • getLayout ()
      • addLayout()
      • createLayout()
      • removeLayout()
      • getNumLayouts()

  3. LayoutSpeciesReferencePlugin class for SpeciesReference element (used only for SBML L2V1)

    • id attribute is internally added to SpeciesReference object only for SBML L2V1

    • The following virtual functions for reading/writing/checking are overridden: (type of arguments and return values are omitted)

      • readOtherXML()
      • writeAttributes()

Public Member Functions

virtual SBasePluginclone () const =0
 Creates and returns a deep copy of this SBasePlugin object. More...
 
virtual ListgetAllElements (ElementFilter *filter=NULL)
 Returns a List of all child SBase objects, including those nested to an arbitrary depth. More...
 
virtual SBasegetElementByMetaId (const std::string &metaid)
 Returns the first child element it can find with 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 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...
 
const std::string & getPrefix () const
 Returns the prefix of the package extension of this plugin object. More...
 
SBMLDocumentgetSBMLDocument ()
 Returns the parent SBMLDocument of this plugin object. More...
 
const SBMLDocumentgetSBMLDocument () const
 Returns the parent SBMLDocument of this plugin object. More...
 
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...
 
SBasePluginoperator= (const SBasePlugin &orig)
 Assignment operator for SBasePlugin. More...
 
int setElementNamespace (const std::string &uri)
 Sets the XML namespace to which this element belongs to. More...
 
virtual ~SBasePlugin ()
 Destroy this object. More...
 

Constructor & Destructor Documentation

SBasePlugin::~SBasePlugin ( )
virtual

Destroy this object.

Member Function Documentation

virtual SBasePlugin* SBasePlugin::clone ( ) const
pure virtual
List * SBasePlugin::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 in LayoutModelPlugin, FbcModelPlugin, CompModelPlugin, CompSBasePlugin, CompSBMLDocumentPlugin, and QualModelPlugin.

SBase * SBasePlugin::getElementByMetaId ( const std::string &  metaid)
virtual

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

Parameters
metaidstring representing the metaid of objects to find
Returns
pointer to the first element found with the given metaid.

Reimplemented in FbcModelPlugin, CompModelPlugin, CompSBasePlugin, and CompSBMLDocumentPlugin.

SBase * SBasePlugin::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
idstring representing the id of objects to find
Returns
pointer to the first element found with the given id.

Reimplemented in FbcModelPlugin, CompModelPlugin, CompSBasePlugin, and CompSBMLDocumentPlugin.

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

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

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 std::string & SBasePlugin::getPackageName ( ) const

Returns the package name of this plugin object.

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

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 ( )

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

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

Returns
the parent SBase object to which this plugin object connected.
const std::string & SBasePlugin::getPrefix ( ) const

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

Returns
the prefix of the package extension of this plugin object.
SBMLDocument * SBasePlugin::getSBMLDocument ( )

Returns the parent SBMLDocument of this plugin object.

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

Returns the parent SBMLDocument of this plugin object.

Returns
the parent SBMLDocument object of this plugin object.
std::string SBasePlugin::getURI ( ) const

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

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

Returns
the SBML version of the package extension of this plugin object.
SBasePlugin & SBasePlugin::operator= ( const SBasePlugin orig)

Assignment operator for SBasePlugin.

int SBasePlugin::setElementNamespace ( const std::string &  uri)

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: