本文整理汇总了C++中SBMLErrorLog::contains方法的典型用法代码示例。如果您正苦于以下问题:C++ SBMLErrorLog::contains方法的具体用法?C++ SBMLErrorLog::contains怎么用?C++ SBMLErrorLog::contains使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SBMLErrorLog
的用法示例。
在下文中一共展示了SBMLErrorLog::contains方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: checkBooleans
void checkBooleans(SBMLDocument* doc, set<string>& components, set<string>& tests)
{
if (doc->getLevel() < 3) {
return;
}
if (doc->getVersion() < 2) {
return;
}
SBMLDocument* translatedDoc = doc->clone();
if (translatedDoc->setLevelAndVersion(3, 1, true)) {
//Successful translation means that there is no use of booleans in numeric contexts, or visa versa.
return;
}
SBMLErrorLog* errlog = translatedDoc->getErrorLog();
if (errlog->contains(10209)
|| errlog->contains(10210)
|| errlog->contains(10211)
|| errlog->contains(10212)
|| errlog->contains(10213)
|| errlog->contains(10217)
|| errlog->contains(98006)
|| errlog->contains(21202)
|| errlog->contains(21001)) {
tests.insert("BoolNumericSwap");
}
}
示例2: TestFlattenedUnknownAbortNone
END_TEST
START_TEST (test_comp_flatten_unknown_20)
{
SBMLDocument* doc = TestFlattenedUnknownAbortNone("unknown20.xml", "unknown20_flat.xml");
SBMLErrorLog* errors = doc->getErrorLog();
fail_unless(errors->getNumErrors() == 4);
fail_unless(errors->contains(RequiredPackagePresent) == true);
fail_unless(errors->contains(CompFlatteningNotRecognisedReqd) == true);
fail_unless(errors->contains(CompIdRefMayReferenceUnknownPackage) == true);
delete doc;
}
示例3: TestFlattenedUnknownNoValidate
END_TEST
START_TEST (test_comp_flatten_unknown_17)
{
SBMLDocument* doc = TestFlattenedUnknownNoValidate("unknown17.xml", "unknown17_flat.xml");
SBMLErrorLog* errors = doc->getErrorLog();
fail_unless(errors->getNumErrors() == 3);
fail_unless(errors->contains(UnrequiredPackagePresent) == true);
fail_unless(errors->contains(CompFlatteningNotRecognisedNotReqd) == true);
fail_unless(errors->contains(CompIdRefMayReferenceUnknownPackage) == true);
delete doc;
}
示例4:
END_TEST
START_TEST (test_comp_flatten_unknown_withValidation_20)
{
SBMLDocument* doc = TestFlattenedUnknownValidateFailsFlattening("unknown20.xml");
SBMLErrorLog* errors = doc->getErrorLog();
//fail_unless(errors->getNumErrors() == 7);
fail_unless(errors->contains(RequiredPackagePresent) == true);
fail_unless(errors->contains(CompFlatteningNotRecognisedReqd) == true);
//fail_unless(errors->contains(CompLineNumbersUnreliable) == true);
//fail_unless(errors->contains(CompIdRefMayReferenceUnknownPackage) == true);
delete doc;
}
示例5: filename
END_TEST
START_TEST (test_comp_flatten_unknown_21)
{
string filename(TestDataDirectory);
//string filename("C:\\Development\\libsbml\\src\\sbml\\packages\\comp\\util\\test\\test-data\\");
ConversionProperties props;
props.addOption("flatten comp");
props.addOption("basePath", filename);
props.addOption("performValidation", false);
SBMLConverter* converter = SBMLConverterRegistry::getInstance().getConverterFor(props);
// load document
string cfile = filename + "flatten_fail_unknown.xml";
SBMLDocument* doc = readSBMLFromFile(cfile.c_str());
// fail if there is no model (readSBMLFromFile always returns a valid document)
fail_unless(doc->getModel() != NULL);
// write the doc before we attempt conversion
string newModel = writeSBMLToStdString(doc);
converter->setDocument(doc);
int result = converter->convert();
// we should fail because we are testing the restoreNamespaces function
fail_unless(result == LIBSBML_OPERATION_FAILED);
string flatModel = writeSBMLToStdString(doc);
fail_unless(flatModel == newModel);
delete converter;
SBMLErrorLog* errors = doc->getErrorLog();
fail_unless(errors->getNumErrors() == 2);
fail_unless(errors->contains(RequiredPackagePresent) == true);
fail_unless(errors->contains(CompFlatteningNotRecognisedReqd) == true);
//fail_unless(errors->contains(CompModelFlatteningFailed) == true);
//fail_unless(errors->contains(CompSubmodelMustReferenceModel) == true);
delete doc;
}
示例6:
END_TEST
START_TEST(test_SBMLErrorLog_removeAll)
{
SBMLErrorLog log;
// add errors
log.add(SBMLError(1234, 2, 4));
log.add(SBMLError(1234, 2, 4));
log.add(SBMLError(1234, 2, 4));
log.add(SBMLError(1234, 2, 4));
fail_unless(log.contains(1234) == true);
log.remove(1234);
fail_unless(log.contains(1234) == true);
log.removeAll(1234);
fail_unless(log.contains(1234) == false);
}
示例7: TestFlattenedUnknownValidate
END_TEST
START_TEST (test_comp_flatten_unknown_withValidation_19)
{
SBMLDocument* doc = TestFlattenedUnknownValidate("unknown19.xml", "unknown19_flat.xml");
SBMLErrorLog* errors = doc->getErrorLog();
fail_unless(errors->getNumErrors() == 4);
//fail_unless(errors->contains(UnrequiredPackagePresent) == true);
fail_unless(errors->contains(CompFlatteningNotRecognisedNotReqd) == true);
delete doc;
}
示例8: saveAllReferencedElements
int CompModelPlugin::saveAllReferencedElements(set<SBase*> uniqueRefs, set<SBase*> replacedBys)
{
SBMLDocument* doc = getSBMLDocument();
Model* model = static_cast<Model*>(getParentSBMLObject());
if (model==NULL) {
if (doc) {
string error = "Unable to discover any referenced elements in CompModelPlugin::saveAllReferencedElements: no Model parent of the 'comp' model plugin.";
doc->getErrorLog()->logPackageError("comp", CompModelFlatteningFailed, getPackageVersion(), getLevel(), getVersion(), error);
}
return LIBSBML_OPERATION_FAILED;
}
int ret = LIBSBML_OPERATION_SUCCESS;
//Get a list of everything, pull out anything that's a deletion, replacement, or port, and save what they're pointing to.
//At the same time, make sure that no two things point to the same thing.
set<SBase*> RE_deletions = set<SBase*>(); //Deletions only point to things in the same model.
List* allElements = model->getAllElements();
string modname = "the main model in the document";
if (model->isSetId()) {
modname = "the model '" + model->getId() + "'";
}
set<SBase*> todelete;
for (unsigned int el=0; el<allElements->getSize(); el++) {
SBase* element = static_cast<SBase*>(allElements->get(el));
int type = element->getTypeCode();
if (type==SBML_COMP_DELETION ||
type==SBML_COMP_REPLACEDBY ||
type==SBML_COMP_REPLACEDELEMENT ||
type==SBML_COMP_PORT) {
//Don't worry about SBML_COMP_SBASEREF because they're all children of one of the above types.
SBaseRef* reference = static_cast<SBaseRef*>(element);
ReplacedElement* re = static_cast<ReplacedElement*>(element);
ret = reference->saveReferencedElement();
if (ret != LIBSBML_OPERATION_SUCCESS)
{
if (type != SBML_COMP_REPLACEDBY && doc)
{
SBMLErrorLog* errlog = doc->getErrorLog();
SBMLError* lasterr = const_cast<SBMLError*>
(doc->getErrorLog()->getError(doc->getNumErrors()-1));
if ( (errlog->contains(UnrequiredPackagePresent) ||
errlog->contains(RequiredPackagePresent)))
{
if ( lasterr->getErrorId() == CompIdRefMustReferenceObject)
{
//Change the error into a warning
string fullmsg = lasterr->getMessage()
+ " However, this may be because of the unrecognized "
+ "package present in this document: ignoring this "
+ "element and flattening anyway.";
errlog->remove(lasterr->getErrorId());
errlog->logPackageError("comp",
CompIdRefMayReferenceUnknownPackage, getPackageVersion(),
getLevel(), getVersion(), fullmsg, element->getLine(),
element->getColumn(), LIBSBML_SEV_WARNING);
}
else if ( lasterr->getErrorId() == CompMetaIdRefMustReferenceObject)
{
//Change the error into a warning
string fullmsg = lasterr->getMessage()
+ " However, this may be because of the unrecognized "
+ "package present in this document: ignoring this "
+ "element and flattening anyway.";
errlog->remove(lasterr->getErrorId());
errlog->logPackageError("comp",
CompMetaIdRefMayReferenceUnknownPkg, getPackageVersion(),
getLevel(), getVersion(), fullmsg, element->getLine(),
element->getColumn(), LIBSBML_SEV_WARNING);
}
}
//Whether or not we could figure out the error, we can always still continue flattening.
todelete.insert(element);
continue;
}
else {
delete allElements;
return ret;
}
}
SBase* direct = reference->getDirectReference();
bool adddirect = true;
if (type == SBML_COMP_REPLACEDBY) {
SBase* rbParent = reference->getParentSBMLObject();
if (uniqueRefs.insert(rbParent).second == false) {
if (doc) {
string error = "Error discovered in CompModelPlugin::saveAllReferencedElements when checking " + modname + ": a <" + rbParent->getElementName() + "> ";
if (direct->isSetId()) {
error += "with the id '" + rbParent->getId() + "'";
if (rbParent->isSetMetaId()) {
error += ", and the metaid '" + rbParent->getMetaId() + "'";
}
}
else if (rbParent->isSetMetaId()) {
error += "with the metaId '" + rbParent->getMetaId() + "'";
}
error += " has a <replacedBy> child and is also pointed to by a <port>, <deletion>, <replacedElement>, or one or more <replacedBy> objects.";
doc->getErrorLog()->logPackageError("comp", CompNoMultipleReferences, getPackageVersion(), getLevel(), getVersion(), error);
}
delete allElements;
return LIBSBML_OPERATION_FAILED;
//.........这里部分代码省略.........
示例9: if
/*
* Performs a set of semantic consistency checks on the document. Query
* the results by calling getNumErrors() and getError().
*
* @return the number of failed checks (errors) encountered.
*/
unsigned int
SBMLInternalValidator::checkConsistency (bool writeDocument)
{
unsigned int nerrors = 0;
unsigned int total_errors = 0;
//if (getLevel() == 3)
//{
// logError(L3NotSupported);
// return 1;
//}
/* determine which validators to run */
bool id = ((mApplicableValidators & 0x01) == 0x01);
bool sbml = ((mApplicableValidators & 0x02) == 0x02);
bool sbo = ((mApplicableValidators & 0x04) == 0x04);
bool math = ((mApplicableValidators & 0x08) == 0x08);
bool units = ((mApplicableValidators & 0x10) == 0x10);
bool over = ((mApplicableValidators & 0x20) == 0x20);
bool practice = ((mApplicableValidators & 0x40) == 0x40);
/* taken the state machine concept out for now
if (LibSBMLStateMachine::isActive())
{
units = LibSBMLStateMachine::getUnitState();
}
*/
IdentifierConsistencyValidator id_validator;
ConsistencyValidator validator;
SBOConsistencyValidator sbo_validator;
MathMLConsistencyValidator math_validator;
UnitConsistencyValidator unit_validator;
OverdeterminedValidator over_validator;
ModelingPracticeValidator practice_validator;
SBMLDocument *doc;
SBMLErrorLog *log = getErrorLog();
if (writeDocument)
{
char* sbmlString = writeSBMLToString(getDocument());
log->clearLog();
doc = readSBMLFromString(sbmlString);
free (sbmlString);
}
else
{
doc = getDocument();
}
/* calls each specified validator in turn
* - stopping when errors are encountered */
if (id)
{
id_validator.init();
nerrors = id_validator.validate(*doc);
if (nerrors > 0)
{
unsigned int origNum = log->getNumErrors();
log->add( id_validator.getFailures() );
if (origNum > 0 && log->contains(InvalidUnitIdSyntax) == true)
{
/* do not log dangling ref */
while (log->contains(DanglingUnitSIdRef) == true)
{
log->remove(DanglingUnitSIdRef);
nerrors--;
}
total_errors += nerrors;
if (nerrors > 0)
{
if (writeDocument)
SBMLDocument_free(doc);
return total_errors;
}
}
else if (log->contains(DanglingUnitSIdRef) == false)
{
total_errors += nerrors;
if (writeDocument)
SBMLDocument_free(doc);
return total_errors;
}
else
{
bool onlyDangRef = true;
for (unsigned int a = 0; a < log->getNumErrors(); a++)
{
if (log->getError(a)->getErrorId() != DanglingUnitSIdRef)
{
onlyDangRef = false;
//.........这里部分代码省略.........
示例10: if
//.........这里部分代码省略.........
"not conform to the syntax.");
}
}
else
{
std::string message = "Spatial attribute 'id' is missing from the "
"<AnalyticVolume> element.";
log->logPackageError("spatial", SpatialAnalyticVolumeAllowedAttributes,
pkgVersion, level, version, message);
}
//
// functionType enum (use = "required" )
//
std::string functiontype;
assigned = attributes.readInto("functionType", functiontype);
if (assigned == true)
{
if (functiontype.empty() == true)
{
logEmptyString(functiontype, level, version, "<AnalyticVolume>");
}
else
{
mFunctionType = FunctionKind_fromString(functiontype.c_str());
if (FunctionKind_isValid(mFunctionType) == 0)
{
std::string msg = "The functionType on the <AnalyticVolume> ";
if (isSetId())
{
msg += "with id '" + getId() + "'";
}
msg += "is '" + functiontype + "', which is not a valid option.";
log->logPackageError("spatial",
SpatialAnalyticVolumeFunctionTypeMustBeFunctionKindEnum, pkgVersion,
level, version, msg);
}
}
}
else
{
std::string message = "Spatial attribute 'functionType' is missing.";
log->logPackageError("spatial", SpatialAnalyticVolumeAllowedAttributes,
pkgVersion, level, version, message);
}
//
// ordinal int (use = "optional" )
//
numErrs = log->getNumErrors();
mIsSetOrdinal = attributes.readInto("ordinal", mOrdinal);
if ( mIsSetOrdinal == false)
{
if (log->getNumErrors() == numErrs + 1 &&
log->contains(XMLAttributeTypeMismatch))
{
log->remove(XMLAttributeTypeMismatch);
std::string message = "Spatial attribute 'ordinal' from the "
"<AnalyticVolume> element must be an integer.";
log->logPackageError("spatial",
SpatialAnalyticVolumeOrdinalMustBeInteger, pkgVersion, level, version,
message);
}
}
//
// domainType SIdRef (use = "required" )
//
assigned = attributes.readInto("domainType", mDomainType);
if (assigned == true)
{
if (mDomainType.empty() == true)
{
logEmptyString(mDomainType, level, version, "<AnalyticVolume>");
}
else if (SyntaxChecker::isValidSBMLSId(mDomainType) == false)
{
logError(SpatialAnalyticVolumeDomainTypeMustBeDomainType, level, version,
"The attribute domainType='" + mDomainType + "' does not conform to the "
"syntax.");
}
}
else
{
std::string message = "Spatial attribute 'domainType' is missing from the "
"<AnalyticVolume> element.";
log->logPackageError("spatial", SpatialAnalyticVolumeAllowedAttributes,
pkgVersion, level, version, message);
}
}
示例11: if
/*
* Reads the expected attributes into the member data variables
*/
void
ListOfGlobalRenderInformation::readAttributes(const XMLAttributes& attributes,
const ExpectedAttributes&
expectedAttributes)
{
unsigned int level = getLevel();
unsigned int version = getVersion();
unsigned int pkgVersion = getPackageVersion();
unsigned int numErrs;
SBMLErrorLog* log = getErrorLog();
ListOf::readAttributes(attributes, expectedAttributes);
if (log)
{
numErrs = log->getNumErrors();
for (int n = numErrs-1; n >= 0; n--)
{
if (log->getError(n)->getErrorId() == UnknownPackageAttribute)
{
const std::string details = log->getError(n)->getMessage();
log->remove(UnknownPackageAttribute);
log->logPackageError("render",
RenderListOfLayoutsLOGlobalRenderInformationAllowedAttributes,
pkgVersion, level, version, details, getLine(), getColumn());
}
else if (log->getError(n)->getErrorId() == UnknownCoreAttribute)
{
const std::string details = log->getError(n)->getMessage();
log->remove(UnknownCoreAttribute);
log->logPackageError("render",
RenderListOfLayoutsLOGlobalRenderInformationAllowedCoreAttributes,
pkgVersion, level, version, details, getLine(), getColumn());
}
}
}
//
// majorVersion uint (use = "optional" )
//
if (log)
{
numErrs = log->getNumErrors();
}
mIsSetMajorVersion = attributes.readInto("versionMajor", mMajorVersion);
if ( mIsSetMajorVersion == false && log)
{
if (log->getNumErrors() == numErrs + 1 &&
log->contains(XMLAttributeTypeMismatch))
{
log->remove(XMLAttributeTypeMismatch);
std::string message = "Render attribute 'versionMajor' from the "
"<ListOfGlobalRenderInformation> element must be an integer.";
log->logPackageError("render",
RenderListOfLayoutsVersionMajorMustBeNonNegativeInteger, pkgVersion,
level, version, message, getLine(), getColumn());
}
}
//
// minorVersion uint (use = "optional" )
//
if (log)
{
numErrs = log->getNumErrors();
}
mIsSetMinorVersion = attributes.readInto("versionMinor", mMinorVersion);
if ( mIsSetMinorVersion == false && log)
{
if (log->getNumErrors() == numErrs + 1 &&
log->contains(XMLAttributeTypeMismatch))
{
log->remove(XMLAttributeTypeMismatch);
std::string message = "Render attribute 'versionMinor' from the "
"<ListOfGlobalRenderInformation> element must be an integer.";
log->logPackageError("render",
RenderListOfLayoutsVersionMinorMustBeNonNegativeInteger, pkgVersion,
level, version, message, getLine(), getColumn());
}
}
}
示例12: if
/** @cond doxygenLibsbmlInternal */
int
CompFlatteningConverter::validateFlatDocument(Model * flatmodel,
unsigned int pkgVersion, unsigned int level, unsigned int version)
{
int result;
// create a dummyDocument that will mirror what the user options are
// we need the dummyDoc to know things about unknown packages
// but dont want the original model/error log
SBMLDocument dummy = SBMLDocument(*(mDocument));
dummy.setModel(NULL);
dummy.getErrorLog()->clearLog();
// Otherwise, transfer only errors 1090107->1090110
SBMLErrorLog* log = mDocument->getErrorLog();
for (unsigned int en=0; en<log->getNumErrors(); en++)
{
unsigned int errid = mDocument->getError(en)->getErrorId();
if (errid == CompFlatteningNotRecognisedNotReqd ||
errid == CompFlatteningNotRecognisedReqd ||
errid == CompFlatteningNotImplementedNotReqd ||
errid == CompFlatteningNotImplementedReqd)
{
dummy.getErrorLog()->add(*(mDocument->getError(en)));
}
}
log->clearLog();
result = reconstructDocument(flatmodel, dummy, true );
if (result != LIBSBML_OPERATION_SUCCESS)
{
//delete flatmodel;
restoreNamespaces();
return result;
}
//Now check to see if the flat model is valid
// run regular validation on the flattened document if requested.
// override comp flattening if necessary
CompSBMLDocumentPlugin * dummyPlugin = static_cast<CompSBMLDocumentPlugin*>
(dummy.getPlugin("comp"));
if (dummyPlugin != NULL)
{
dummyPlugin->setOverrideCompFlattening(true);
}
std::string sbml = writeSBMLToStdString(&dummy);
SBMLDocument *tempdoc = readSBMLFromString(sbml.c_str());
unsigned int errors =
tempdoc->getErrorLog()->getNumFailsWithSeverity(LIBSBML_SEV_ERROR);
// take out the error about a requiredpackage
// if the user has specified to not abort for any packages
// NOTE: we cannot actually remove it since the flattening code
// uses it to check whether references might come from
// other packages
if (getAbortForNone() == true)
{
if (tempdoc->getErrorLog()->contains(RequiredPackagePresent))
{
errors--;
}
}
if (errors > 0)
{
// we have serious errors so we are going to bail on the
// flattening - log ONLY the errors
//Transfer the errors to mDocument and don't reset the model.
if (log->contains(CompLineNumbersUnreliable) == false)
{
log->logPackageError("comp", CompLineNumbersUnreliable,
pkgVersion, level, version);
}
std::string message = "Errors that follow relate to the flattened ";
message += "document produced using the CompFlatteningConverter.";
log->logPackageError("comp", CompFlatModelNotValid,
pkgVersion, level, version);
unsigned int nerrors = tempdoc->getErrorLog()->getNumErrors();
for (unsigned int n = 0; n < nerrors; n++)
{
const SBMLError* error = tempdoc->getError(n);
if (error->getSeverity() >= LIBSBML_SEV_ERROR)
{
log->add( *(error) );
}
if (error->getErrorId() >= CompFlatteningNotRecognisedNotReqd &&
error->getErrorId() <= CompFlatteningNotImplementedReqd)
{
log->add( *(error) );
}
else if (error->getErrorId() == UnrequiredPackagePresent ||
error->getErrorId() == RequiredPackagePresent)
{
log->add( *(error) );
}
//.........这里部分代码省略.........
示例13: if
//.........这里部分代码省略.........
assigned = attributes.readInto("qualitativeSpecies", mQualitativeSpecies);
if (assigned == true)
{
if (mQualitativeSpecies.empty() == true)
{
logEmptyString(mQualitativeSpecies, level, version, "<Output>");
}
else if (SyntaxChecker::isValidSBMLSId(mQualitativeSpecies) == false)
{
logError(QualOutputQualitativeSpeciesMustBeQualitativeSpecies, level,
version, "The attribute qualitativeSpecies='" + mQualitativeSpecies + "' "
"does not conform to the syntax.");
}
}
else
{
std::string message = "Qual attribute 'qualitativeSpecies' is missing from "
"the <Output> element.";
log->logPackageError("qual", QualOutputAllowedAttributes, pkgVersion,
level, version, message);
}
//
// transitionEffect enum (use = "required" )
//
std::string transitioneffect;
assigned = attributes.readInto("transitionEffect", transitioneffect);
if (assigned == true)
{
if (transitioneffect.empty() == true)
{
logEmptyString(transitioneffect, level, version, "<Output>");
}
else
{
mTransitionEffect =
TransitionOutputEffect_fromString(transitioneffect.c_str());
if (TransitionOutputEffect_isValid(mTransitionEffect) == 0)
{
std::string msg = "The transitionEffect on the <Output> ";
if (isSetId())
{
msg += "with id '" + getId() + "'";
}
msg += "is '" + transitioneffect + "', which is not a valid option.";
log->logPackageError("qual",
QualOutputTransitionEffectMustBeTransitionOutputEffectEnum, pkgVersion,
level, version, msg);
}
}
}
else
{
std::string message = "Qual attribute 'transitionEffect' is missing.";
log->logPackageError("qual", QualOutputAllowedAttributes, pkgVersion,
level, version, message);
}
//
// name string (use = "optional" )
//
assigned = attributes.readInto("name", mName);
if (assigned == true)
{
if (mName.empty() == true)
{
logEmptyString(mName, level, version, "<Output>");
}
}
//
// outputLevel int (use = "optional" )
//
numErrs = log->getNumErrors();
mIsSetOutputLevel = attributes.readInto("outputLevel", mOutputLevel);
if ( mIsSetOutputLevel == false)
{
if (log->getNumErrors() == numErrs + 1 &&
log->contains(XMLAttributeTypeMismatch))
{
log->remove(XMLAttributeTypeMismatch);
std::string message = "Qual attribute 'outputLevel' from the <Output> "
"element must be an integer.";
log->logPackageError("qual", QualOutputOutputLevelMustBeInteger,
pkgVersion, level, version, message);
}
}
}