libSBML C# API  libSBML 5.8.0 C# API
 All Classes Namespaces Files Functions Variables Properties Pages
libsbmlcs.SBasePlugin Class Reference
Inheritance diagram for libsbmlcs.SBasePlugin:
[legend]

Detailed Description

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 instead of the SBase::readAnnotation(XMLInputStream& stream) and/or SBase::readNotes(XMLInputStream& stream) functions.

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

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

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

    1. virtual void writeAttributes (XMLOutputStream& stream)

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

    2. virtual void writeXMLNS (XMLOutputStream& stream)

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

  • checking elements (should be overridden) :

    1. virtual bool hasRequiredElements()

  • checking attributes (should be overridden) :

    1. virtual bool hasRequiredAttributes()

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:

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)

    • 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

SBasePlugin clone ()
 Creates and returns a deep copy of this SBasePlugin object. More...
 
void connectToParent (SBase sbase)
 Sets the parent SBML object of this plugin object to this object and child elements (if any). More...
 
virtual void Dispose ()
 
void divideAssignmentsToSIdByFunction (string id, ASTNode function)
 If the function of this object is to assign a value has a child 'math' object (or anything with ASTNodes in general), replace the 'math' object with the function (existing/function). More...
 
void enablePackageInternal (string pkgURI, string pkgPrefix, bool flag)
 Enables/Disables the given package with child elements in this plugin object (if any). More...
 
long getColumn ()
 Returns the column number on which this object first appears in the XML representation of the SBML document. More...
 
SBase getElementByMetaId (string metaid)
 Returns the first child element it can find with the given metaid, or null if no such object is found. More...
 
SBase getElementBySId (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...
 
string getElementNamespace ()
 Returns the XML namespace (URI) of the package extension of this plugin object. More...
 
long getLevel ()
 Returns the SBML level of the package extension of this plugin object. More...
 
long getLine ()
 Returns the line number on which this object first appears in the XML representation of the SBML document. More...
 
SBaseList getListOfAllElements ()
 
string getPackageName ()
 Returns the package name of this plugin object. More...
 
long getPackageVersion ()
 Returns the package version of the package extension of this plugin object. More...
 
SBase getParentSBMLObject ()
 Returns the parent SBase object to which this plugin object connected. More...
 
string getPrefix ()
 Returns the prefix of the package extension of this plugin object. More...
 
SBMLDocument getSBMLDocument ()
 Returns the parent SBMLDocument of this plugin object. More...
 
SBMLNamespaces getSBMLNamespaces ()
 Returns the column number on which this object first appears in the XML representation of the SBML document. More...
 
string getURI ()
 Gets the URI to which this element belongs to. More...
 
long getVersion ()
 Returns the SBML version of the package extension of this plugin object. More...
 
bool hasIdentifierBeginningWith (string prefix)
 Check to see if the given prefix is used by any of the IDs defined by extension elements. More...
 
void logUnknownElement (string element, long sbmlLevel, long sbmlVersion, long pkgVersion)
 Helper to log a common type of error for elements. More...
 
void multiplyAssignmentsToSIdByFunction (string id, ASTNode function)
 If this assignment assigns a value to the 'id' element, replace the 'math' object with the function (existing*function). More...
 
int prependStringToAllIdentifiers (string prefix)
 Add the given string to all identifiers in the object. More...
 
void replaceSIDWithFunction (string id, ASTNode function)
 If this object has a child 'math' object (or anything with ASTNodes in general), replace all nodes with the name 'id' with the provided function. More...
 
int setElementNamespace (string uri)
 Sets the XML namespace to which this element belongs to. More...
 
bool stripPackage (string pkgPrefix, bool flag)
 Enables/Disables the given package with child elements in this plugin object (if any). More...
 

Protected Attributes

bool swigCMemOwn
 

Member Function Documentation

SBasePlugin libsbmlcs.SBasePlugin.clone ( )

Creates and returns a deep copy of this SBasePlugin object.

Returns
a (deep) copy of this SBase object
void libsbmlcs.SBasePlugin.connectToParent ( SBase  sbase)

Sets the parent SBML object of this plugin object to this object and child elements (if any).

(Creates a child-parent relationship by this plugin object)

This function is called when this object is created by the parent element. Subclasses must override this this function if they have one or more child elements. Also, SBasePlugin::connectToParent() must be called in the overridden function.

Parameters
sbasethe SBase object to use
See Also
setSBMLDocument
enablePackageInternal
void libsbmlcs.SBasePlugin.divideAssignmentsToSIdByFunction ( string  id,
ASTNode  function 
)

If the function of this object is to assign a value has a child 'math' object (or anything with ASTNodes in general), replace the 'math' object with the function (existing/function).

Note
This function does nothing itself–subclasses with ASTNode subelements must override this function.
void libsbmlcs.SBasePlugin.enablePackageInternal ( string  pkgURI,
string  pkgPrefix,
bool  flag 
)

Enables/Disables the given package with child elements in this plugin object (if any).

(This is an internal implementation invoked from SBase::enablePackageInternal() function)

Subclasses which contain one or more SBase derived elements should override this function if elements defined in them can be extended by some other package extension.

See Also
setSBMLDocument
connectToParent
long libsbmlcs.SBasePlugin.getColumn ( )

Returns the column number on which this object first appears in the XML representation of the SBML document.

Returns
the column number of the underlying SBML object.
Note
The column number for each construct in an SBML model is set upon reading the model. The accuracy of the column number depends on the correctness of the XML representation of the model, and on the particular XML parser library being used. The former limitation relates to the following problem: if the model is actually invalid XML, then the parser may not be able to interpret the data correctly and consequently may not be able to establish the real column number. The latter limitation is simply that different parsers seem to have their own accuracy limitations, and out of all the parsers supported by libSBML, none have been 100% accurate in all situations. (At this time, libSBML supports the use of libxml2, Expat and Xerces.)
See Also
getLine()
SBase libsbmlcs.SBasePlugin.getElementByMetaId ( string  metaid)

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.
SBase libsbmlcs.SBasePlugin.getElementBySId ( 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.

Parameters
idstring representing the id of objects to find
Returns
pointer to the first element found with the given id.
string libsbmlcs.SBasePlugin.getElementNamespace ( )

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

Returns
the URI of the package extension of this plugin object.
long libsbmlcs.SBasePlugin.getLevel ( )

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

Returns
the SBML level of the package extension of this plugin object.
long libsbmlcs.SBasePlugin.getLine ( )

Returns the line number on which this object first appears in the XML representation of the SBML document.

Returns
the line number of the underlying SBML object.
Note
The line number for each construct in an SBML model is set upon reading the model. The accuracy of the line number depends on the correctness of the XML representation of the model, and on the particular XML parser library being used. The former limitation relates to the following problem: if the model is actually invalid XML, then the parser may not be able to interpret the data correctly and consequently may not be able to establish the real line number. The latter limitation is simply that different parsers seem to have their own accuracy limitations, and out of all the parsers supported by libSBML, none have been 100% accurate in all situations. (At this time, libSBML supports the use of libxml2, Expat and Xerces.)
See Also
getColumn()
SBaseList libsbmlcs.SBasePlugin.getListOfAllElements ( )
string libsbmlcs.SBasePlugin.getPackageName ( )

Returns the package name of this plugin object.

Returns
the package name of this plugin object.
long libsbmlcs.SBasePlugin.getPackageVersion ( )

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 libsbmlcs.SBasePlugin.getParentSBMLObject ( )

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

Returns
the parent SBase object to which this plugin object connected.
string libsbmlcs.SBasePlugin.getPrefix ( )

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

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

Returns the parent SBMLDocument of this plugin object.

Returns
the parent SBMLDocument object of this plugin object.
SBMLNamespaces libsbmlcs.SBasePlugin.getSBMLNamespaces ( )

Returns the column number on which this object first appears in the XML representation of the SBML document.

Returns
the column number of the underlying SBML object.
Note
The column number for each construct in an SBML model is set upon reading the model. The accuracy of the column number depends on the correctness of the XML representation of the model, and on the particular XML parser library being used. The former limitation relates to the following problem: if the model is actually invalid XML, then the parser may not be able to interpret the data correctly and consequently may not be able to establish the real column number. The latter limitation is simply that different parsers seem to have their own accuracy limitations, and out of all the parsers supported by libSBML, none have been 100% accurate in all situations. (At this time, libSBML supports the use of libxml2, Expat and Xerces.)
See Also
getLine()
string libsbmlcs.SBasePlugin.getURI ( )

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
long libsbmlcs.SBasePlugin.getVersion ( )

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

Returns
the SBML version of the package extension of this plugin object.
bool libsbmlcs.SBasePlugin.hasIdentifierBeginningWith ( string  prefix)

Check to see if the given prefix is used by any of the IDs defined by extension elements.

A package that defines its own 'id' attribute for a core element would check that attribute here.

void libsbmlcs.SBasePlugin.logUnknownElement ( string  element,
long  sbmlLevel,
long  sbmlVersion,
long  pkgVersion 
)

Helper to log a common type of error for elements.

void libsbmlcs.SBasePlugin.multiplyAssignmentsToSIdByFunction ( string  id,
ASTNode  function 
)

If this assignment assigns a value to the 'id' element, replace the 'math' object with the function (existing*function).

int libsbmlcs.SBasePlugin.prependStringToAllIdentifiers ( string  prefix)

Add the given string to all identifiers in the object.

If the string is added to anything other than an id or a metaid, this code is responsible for tracking down and renaming all *idRefs in the package extention that identifier comes from.

void libsbmlcs.SBasePlugin.replaceSIDWithFunction ( string  id,
ASTNode  function 
)

If this object has a child 'math' object (or anything with ASTNodes in general), replace all nodes with the name 'id' with the provided function.

Note
This function does nothing itself–subclasses with ASTNode subelements must override this function.
int libsbmlcs.SBasePlugin.setElementNamespace ( 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:
bool libsbmlcs.SBasePlugin.stripPackage ( string  pkgPrefix,
bool  flag 
)

Enables/Disables the given package with child elements in this plugin object (if any).

(This is an internal implementation invoked from SBase::enablePackageInternal() function)

Subclasses which contain one or more SBase derived elements should override this function if elements defined in them can be extended by some other package extension.

See Also
setSBMLDocument
connectToParent

Member Data Documentation

bool libsbmlcs.SBasePlugin.swigCMemOwn
protected