TER Change::applyAmendment () { uint256 amendment (mTxn.getFieldH256 (sfAmendment)); SLE::pointer amendmentObject (mEngine->entryCache ( ltAMENDMENTS, Ledger::getLedgerAmendmentIndex ())); if (!amendmentObject) { amendmentObject = mEngine->entryCreate( ltAMENDMENTS, Ledger::getLedgerAmendmentIndex()); } STVector256 amendments (amendmentObject->getFieldV256 (sfAmendments)); if (amendments.hasValue (amendment)) return tefALREADY; amendments.addValue (amendment); amendmentObject->setFieldV256 (sfAmendments, amendments); mEngine->entryModify (amendmentObject); getApp().getAmendmentTable ().enable (amendment); if (!getApp().getAmendmentTable ().isSupported (amendment)) getApp().getOPs ().setAmendmentBlocked (); return tesSUCCESS; }
TER ChangeTransactor::applyFeature () { uint256 feature = mTxn.getFieldH256 (sfFeature); SLE::pointer featureObject = mEngine->entryCache (ltFEATURES, Ledger::getLedgerFeatureIndex ()); if (!featureObject) featureObject = mEngine->entryCreate (ltFEATURES, Ledger::getLedgerFeatureIndex ()); STVector256 features = featureObject->getFieldV256 (sfFeatures); if (features.hasValue (feature)) return tefALREADY; features.addValue (feature); featureObject->setFieldV256 (sfFeatures, features); mEngine->entryModify (featureObject); getApp().getFeatureTable ().enableFeature (feature); if (!getApp().getFeatureTable ().isFeatureSupported (feature)) getApp().getOPs ().setFeatureBlocked (); return tesSUCCESS; }