Base class for extending SBML components
This class of objects is defined by libSBML only and has no direct
equivalent in terms of SBML components. This class is not prescribed by
the SBML specifications, although it is used to implement features
defined in SBML.
- This class is used as part of the mechanism that connects plugin objects (implemented using SBasePlugin or SBMLDocumentPlugin) to a given package extension. For instance, an implementation of an extended version of Model (e.g., LayoutModelPlugin in the Layout package) would involve the creation of an extension point using SBaseExtensionPoint and a mediator object created using SBasePluginCreator, to "plug" the extended Model object (LayoutModelPlugin) into the overall LayoutExtension object.
The use of SBaseExtensionPoint is relatively straightforward. The class needs to be used for each extended SBML object implemented using SBMLDocumentPlugin or SBasePlugin. Doing so requires knowing just two things:
- The short-form name of the parent package being extended. The parent package is often simply core SBML, identified in libSBML by the nickname
"core", but a SBML Level 3 package could conceivably extend another Level 3 package.
- The libSBML type code assigned to the object being extended. For example, if an extension of Model is implemented, the relevant type code is SBMLTypeCode_t#SBML_MODEL, found in SBMLTypeCode_t.
The typical use of SBaseExtensionPoint is illustrated by the following code fragment:
@ SBML_MODEL
Definition SBMLTypeCodes.h:75
@ SBML_DOCUMENT
Definition SBMLTypeCodes.h:68
SBaseExtensionPoint(const std::string &pkgName, int typeCode)
Constructor for SBaseExtensionPoint.
Definition SBaseExtensionPoint.cpp:54
Definition SBasePluginCreator.h:64
The code above shows two core SBML components being extended: the document object, and the Model object. These extended objects are created elsewhere (not shown) as the GroupsSBMLDocumentPlugin and GroupsModelPlugin objects. The corresponding SBaseExtensionPoint objects are handed as arguments to the constructor for SBasePluginCreator to create the connection between the extended core components and the overall package extension (here, for the Groups package, with the GroupsExtension object).
The code above is typically placed in the implementation of the init() method of the package class derived from SBMLExtension. (For the example above, it would be in the GroupsExtension.cpp file.)