int StoichiometryMath::removeFromParentAndDelete() { SBase* parent = getParentSBMLObject(); if (parent==NULL) return LIBSBML_OPERATION_FAILED; SpeciesReference* parentSR = static_cast<SpeciesReference*>(parent); if (parentSR == NULL) return LIBSBML_OPERATION_FAILED; return parentSR->unsetStoichiometryMath(); }
void dealWithAssigningL1Stoichiometry(Model & m, bool l2) { //char newid[15]; std::string id; for (unsigned int i = 0; i < m.getNumReactions(); i++) { Reaction *r = m.getReaction(i); unsigned int j; for (j = 0; j < r->getNumReactants(); j++) { SpeciesReference *sr = r->getReactant(j); // we do not get here unless the stoichiometryMath is an integer // or a rational if (l2 == true && sr->isSetStoichiometryMath() == true) { const ASTNode* ast = sr->getStoichiometryMath()->getMath(); if (ast->isInteger()) { int num = ast->getInteger(); sr->setStoichiometry(num); sr->setDenominator(1); } else { int num = ast->getNumerator(); int denom = ast->getDenominator(); sr->setStoichiometry(num); sr->setDenominator(denom); } sr->unsetStoichiometryMath(); } else { sr->setStoichiometry(sr->getStoichiometry()); sr->setDenominator(1); } } for (j = 0; j < r->getNumProducts(); j++) { SpeciesReference *sr = r->getProduct(j); // we do not get here unless the stoichiometryMath is an integer // or a rational if (l2 == true && sr->isSetStoichiometryMath() == true) { const ASTNode* ast = sr->getStoichiometryMath()->getMath(); if (ast->isInteger()) { int num = ast->getInteger(); sr->setStoichiometry(num); sr->setDenominator(1); } else { int num = ast->getNumerator(); int denom = ast->getDenominator(); sr->setStoichiometry(num); sr->setDenominator(denom); } sr->unsetStoichiometryMath(); } else { sr->setStoichiometry(sr->getStoichiometry()); sr->setDenominator(1); } } } }