/** * Creates a new CubicBezier and adds it to the end of the list. A * reference to the new CubicBezier object is returned. */ CubicBezier* Curve::createCubicBezier () { CubicBezier* cb = NULL; try { cb = new CubicBezier(getSBMLNamespaces()); } catch (...) { /* here we do not create a default object as the level/version must * match the parent object * * so do nothing */ } /* if the ListOf is empty it doesnt know its parent */ if (mCurveSegments.size() == 0) { mCurveSegments.setSBMLDocument(this->getSBMLDocument()); mCurveSegments.setParentSBMLObject(this); } if(cb != NULL) { this->mCurveSegments.appendAndOwn(cb); } return cb; }
/** * Creates a new LineSegment and adds it to the end of the list. A * reference to the new LineSegment object is returned. */ LineSegment* Curve::createLineSegment () { LineSegment* ls = NULL; try { ls = new LineSegment(getSBMLNamespaces()); } catch (...) { /* here we do not create a default object as the level/version must * match the parent object * * so do nothing */ } /* if the ListOf is empty it doesnt know its parent */ if (mCurveSegments.size() == 0) { mCurveSegments.setSBMLDocument(this->getSBMLDocument()); mCurveSegments.setParentSBMLObject(this); } if(ls != NULL) { this->mCurveSegments.appendAndOwn(ls); } return ls; }
/** * Creates a new CubicBezier and adds it to the end of the list. A * reference to the new CubicBezier object is returned. */ CubicBezier* Curve::createCubicBezier () { LAYOUT_CREATE_NS(layoutns,getSBMLNamespaces()); CubicBezier* cb = new CubicBezier(layoutns); this->mCurveSegments.appendAndOwn(cb); return cb; }
/** @cond doxygenLibsbmlInternal */ SBase* CompSBasePlugin::createObject(XMLInputStream& stream) { SBase* object = 0; const std::string& name = stream.peek().getName(); const XMLNamespaces& xmlns = stream.peek().getNamespaces(); const std::string& prefix = stream.peek().getPrefix(); const std::string& targetPrefix = (xmlns.hasURI(mURI)) ? xmlns.getPrefix(mURI) : mPrefix; if (prefix == targetPrefix) { if ( name == "listOfReplacedElements" ) { if (mListOfReplacedElements != NULL) { getErrorLog()->logPackageError("comp", CompOneListOfReplacedElements, getPackageVersion(), getLevel(), getVersion()); } createListOfReplacedElements(); object = mListOfReplacedElements; if (targetPrefix.empty()) { // // (NOTE) // // A top-level element (listOfReplacedElements) of the comp extension is located // in a default namespace, and thus xmlns=".." attribute must be added to // the element. // This is done by invoking SBMLDocument::enableDefaultNS() function with // the two arguments (the URI of this package and true value). // mListOfReplacedElements->getSBMLDocument()->enableDefaultNS(mURI,true); } } if ( name == "replacedBy" ) { if (mReplacedBy != NULL) { if (mSBML != NULL && getErrorLog() != NULL) { getErrorLog()->logPackageError("comp", CompOneReplacedByElement, getPackageVersion(), getLevel(), getVersion()); } } delete mReplacedBy; COMP_CREATE_NS(compns, getSBMLNamespaces()); mReplacedBy = new ReplacedBy(compns); object = mReplacedBy; object->connectToParent(getParentSBMLObject()); delete compns; } } return object; }
/* * Creates a new SpeciesReferenceGlyph object, adds it to the end of the * list of species reference objects and returns a reference to the newly * created object. */ SpeciesReferenceGlyph* ReactionGlyph::createSpeciesReferenceGlyph () { LAYOUT_CREATE_NS(layoutns,getSBMLNamespaces()); SpeciesReferenceGlyph* srg = new SpeciesReferenceGlyph(layoutns); this->mSpeciesReferenceGlyphs.appendAndOwn(srg); return srg; }
/** * Creates a new LineSegment and adds it to the end of the list. A * reference to the new LineSegment object is returned. */ LineSegment* Curve::createLineSegment () { LAYOUT_CREATE_NS(layoutns,getSBMLNamespaces()); LineSegment* ls = new LineSegment(layoutns); this->mCurveSegments.appendAndOwn(ls); return ls; }
/* * Creates a new ReferenceGlyph object, adds it to the end of the * list of reference objects and returns a reference to the newly * created object. */ ReferenceGlyph* GeneralGlyph::createReferenceGlyph () { LAYOUT_CREATE_NS(layoutns,getSBMLNamespaces()); ReferenceGlyph* srg = new ReferenceGlyph(layoutns); this->mReferenceGlyphs.appendAndOwn(srg); delete layoutns; return srg; }
void CompSBasePlugin::createListOfReplacedElements() { if (mListOfReplacedElements==NULL) { COMP_CREATE_NS(compns, getSBMLNamespaces()); mListOfReplacedElements = new ListOfReplacedElements(compns); mListOfReplacedElements->connectToParent(getParentSBMLObject()); delete compns; } }
/* * Creates a ReplacedElement object, adds it to the end of the replacedElement * objects list and returns a reference to the newly created object. */ ReplacedElement* CompSBasePlugin::createReplacedElement () { createListOfReplacedElements(); COMP_CREATE_NS(compns, getSBMLNamespaces()); ReplacedElement* m = new ReplacedElement(compns); mListOfReplacedElements->appendAndOwn(m); delete compns; return m; }
ReplacedBy* CompSBasePlugin::createReplacedBy() { if (mReplacedBy!=NULL) { delete mReplacedBy; } COMP_CREATE_NS(compns, getSBMLNamespaces()); mReplacedBy = new ReplacedBy(compns); mReplacedBy->connectToParent(getParentSBMLObject()); delete compns; return mReplacedBy; }
void Model::dealWithModelUnits() { UnitRefsFilter filter; List * elements = getAllElements(&filter); unsigned int n = 0; unsigned int num = elements->getSize(); if (isSetVolumeUnits()) { std::string volume = getVolumeUnits(); // if in an L3 model a user used volume as an id of a UnitDefinition // but they declared the volume units of teh model to be something // else then the UD with id volume is nothing to do with the // L2 interpretation of volume // so replace that UD and all references to it if (volume != "volume") { UnitDefinition * existingUD = removeUnitDefinition("volume"); if (existingUD != NULL) { std::string newSubsName = "volumeFromOriginal"; existingUD->setId(newSubsName); SBase* obj; for (n = 0; n < num; n++) { obj = (SBase*)(elements->get(n)); obj->renameUnitSIdRefs("volume", newSubsName); } addUnitDefinition(existingUD); } } UnitDefinition * ud = getUnitDefinition(volume) != NULL ? getUnitDefinition(volume)->clone() : NULL; if (ud != NULL) { ud->setId("volume"); } else { Unit *u = new Unit(getSBMLNamespaces()); u->initDefaults(); u->setKind(UnitKind_forName(volume.c_str())); ud = new UnitDefinition(getSBMLNamespaces()); ud->setId("volume"); ud->addUnit(u); } addUnitDefinition(ud); } if (isSetAreaUnits()) { std::string area = getAreaUnits(); // if in an L3 model a user used area as an id of a UnitDefinition // but they declared the area units of teh model to be something // else then the UD with id area is nothing to do with the // L2 interpretation of area // so replace that UD and all references to it if (area != "area") { UnitDefinition * existingUD = removeUnitDefinition("area"); if (existingUD != NULL) { std::string newSubsName = "areaFromOriginal"; existingUD->setId(newSubsName); SBase* obj; for (n = 0; n < num; n++) { obj = (SBase*)(elements->get(n)); obj->renameUnitSIdRefs("area", newSubsName); } addUnitDefinition(existingUD); } } UnitDefinition * ud = getUnitDefinition(area) != NULL ? getUnitDefinition(area)->clone() : NULL; if (ud != NULL) { ud->setId("area"); } else { Unit *u = new Unit(getSBMLNamespaces()); u->initDefaults(); u->setKind(UnitKind_forName(area.c_str())); ud = new UnitDefinition(getSBMLNamespaces()); ud->setId("area"); ud->addUnit(u); } addUnitDefinition(ud); } if (isSetLengthUnits()) { std::string length = getLengthUnits(); // if in an L3 model a user used length as an id of a UnitDefinition // but they declared the length units of teh model to be something // else then the UD with id length is nothing to do with the // L2 interpretation of length // so replace that UD and all references to it if (length != "length") { UnitDefinition * existingUD = removeUnitDefinition("length"); if (existingUD != NULL) { std::string newSubsName = "lengthFromOriginal"; existingUD->setId(newSubsName); SBase* obj; for (n = 0; n < num; n++) { obj = (SBase*)(elements->get(n)); obj->renameUnitSIdRefs("length", newSubsName); } addUnitDefinition(existingUD); } } UnitDefinition * ud = getUnitDefinition(length) != NULL ? getUnitDefinition(length)->clone() : NULL; if (ud != NULL) { ud->setId("length"); } else { Unit *u = new Unit(getSBMLNamespaces()); u->initDefaults(); u->setKind(UnitKind_forName(length.c_str())); ud = new UnitDefinition(getSBMLNamespaces()); ud->setId("length"); ud->addUnit(u); } addUnitDefinition(ud); } if (isSetSubstanceUnits()) { std::string substance = getSubstanceUnits(); // if in an L3 model a user used substance as an id of a UnitDefinition // but they declared the substance units of teh model to be something // else then the UD with id substance is nothing to do with the // L2 interpretation of substance // so replace that UD and all references to it if (substance != "substance") { UnitDefinition * existingUD = removeUnitDefinition("substance"); if (existingUD != NULL) { std::string newSubsName = "substanceFromOriginal"; existingUD->setId(newSubsName); SBase* obj; for (n = 0; n < num; n++) { obj = (SBase*)(elements->get(n)); obj->renameUnitSIdRefs("substance", newSubsName); } addUnitDefinition(existingUD); } } UnitDefinition * ud = getUnitDefinition(substance) != NULL ? getUnitDefinition(substance)->clone() : NULL; if (ud != NULL) { ud->setId("substance"); } else { Unit *u = new Unit(getSBMLNamespaces()); u->initDefaults(); u->setKind(UnitKind_forName(substance.c_str())); ud = new UnitDefinition(getSBMLNamespaces()); ud->setId("substance"); ud->addUnit(u); } addUnitDefinition(ud); } if (isSetTimeUnits()) { std::string time = getTimeUnits(); // if in an L3 model a user used time as an id of a UnitDefinition // but they declared the time units of teh model to be something // else then the UD with id time is nothing to do with the // L2 interpretation of time // so replace that UD and all references to it if (time != "time") { UnitDefinition * existingUD = removeUnitDefinition("time"); if (existingUD != NULL) { std::string newSubsName = "timeFromOriginal"; existingUD->setId(newSubsName); SBase* obj; for (n = 0; n < num; n++) { obj = (SBase*)(elements->get(n)); obj->renameUnitSIdRefs("time", newSubsName); } addUnitDefinition(existingUD); } } UnitDefinition * ud = getUnitDefinition(time) != NULL ? getUnitDefinition(time)->clone() : NULL; if (ud != NULL) { ud->setId("time"); } else { ud = new UnitDefinition(getSBMLNamespaces()); ud->setId("time"); Unit *u = ud->createUnit(); u->initDefaults(); u->setKind(UnitKind_forName(time.c_str())); } addUnitDefinition(ud); } }
void Model::dealWithModelUnits() { if (isSetVolumeUnits()) { std::string volume = getVolumeUnits(); UnitDefinition * ud = removeUnitDefinition(volume); if (ud != NULL) { ud->setId("volume"); } else { Unit *u = new Unit(getSBMLNamespaces()); u->initDefaults(); u->setKind(UnitKind_forName(volume.c_str())); ud = new UnitDefinition(getSBMLNamespaces()); ud->setId("volume"); ud->addUnit(u); } addUnitDefinition(ud); } if (isSetAreaUnits()) { std::string area = getAreaUnits(); UnitDefinition * ud = removeUnitDefinition(area); if (ud != NULL) { ud->setId("area"); } else { Unit *u = new Unit(getSBMLNamespaces()); u->initDefaults(); u->setKind(UnitKind_forName(area.c_str())); ud = new UnitDefinition(getSBMLNamespaces()); ud->setId("area"); ud->addUnit(u); } addUnitDefinition(ud); } if (isSetLengthUnits()) { std::string length = getLengthUnits(); UnitDefinition * ud = removeUnitDefinition(length); if (ud != NULL) { ud->setId("length"); } else { Unit *u = new Unit(getSBMLNamespaces()); u->initDefaults(); u->setKind(UnitKind_forName(length.c_str())); ud = new UnitDefinition(getSBMLNamespaces()); ud->setId("length"); ud->addUnit(u); } addUnitDefinition(ud); } if (isSetSubstanceUnits()) { std::string substance = getSubstanceUnits(); UnitDefinition * ud = removeUnitDefinition(substance); if (ud != NULL) { ud->setId("substance"); } else { Unit *u = new Unit(getSBMLNamespaces()); u->initDefaults(); u->setKind(UnitKind_forName(substance.c_str())); ud = new UnitDefinition(getSBMLNamespaces()); ud->setId("substance"); ud->addUnit(u); } addUnitDefinition(ud); } if (isSetTimeUnits()) { std::string time = getTimeUnits(); UnitDefinition * ud = removeUnitDefinition(time); if (ud != NULL) { ud->setId("time"); } else { ud = new UnitDefinition(getSBMLNamespaces()); ud->setId("time"); Unit *u = ud->createUnit(); u->initDefaults(); u->setKind(UnitKind_forName(time.c_str())); } addUnitDefinition(ud); } }