Пример #1
0
void CCopasiXMLParser::ModelParameterSetElement::end(const XML_Char *pszName)
{
    switch (mCurrentElement)
    {
    case ModelParameterSet:

        if (strcmp(pszName, "ModelParameterSet"))
            CCopasiMessage(CCopasiMessage::EXCEPTION, MCXML + 11,
                           pszName, "ModelParameterSet", mParser.getCurrentLineNumber());

        mCommon.ModelParameterGroupStack.pop();

        mParser.popElementHandler();
        mLastKnownElement = START_ELEMENT;

        /* Tell the parent element we are done. */
        mParser.onEndElement(pszName);
        break;

    case MiriamAnnotation:

        if (strcmp(pszName, "MiriamAnnotation"))
            CCopasiMessage(CCopasiMessage::EXCEPTION, MCXML + 11,
                           pszName, "MiriamAnnotation", mParser.getCurrentLineNumber());

        {
            CModelParameterSet * pModelParameterSet = static_cast< CModelParameterSet * >(mCommon.ModelParameterGroupStack.top());
            pModelParameterSet->setMiriamAnnotation(mCommon.CharacterData, pModelParameterSet->getKey(), mKey);
        }

        mCommon.CharacterData = "";
        break;

    case Comment:

        if (strcmp(pszName, "Comment"))
            CCopasiMessage(CCopasiMessage::EXCEPTION, MCXML + 11,
                           pszName, "Comment", mParser.getCurrentLineNumber());

        static_cast< CModelParameterSet * >(mCommon.ModelParameterGroupStack.top())->setNotes(mCommon.CharacterData);
        mCommon.CharacterData = "";
        break;

    case ListOfUnsupportedAnnotations:

        if (strcmp(pszName, "ListOfUnsupportedAnnotations"))
            CCopasiMessage(CCopasiMessage::EXCEPTION, MCXML + 11,
                           pszName, "ListOfUnsupportedAnnotations", mParser.getCurrentLineNumber());

        static_cast< CModelParameterSet * >(mCommon.ModelParameterGroupStack.top())->getUnsupportedAnnotations() =
            mParser.mListOfUnsupportedAnnotationsElement.getUnsupportedAnnotations();

        break;

    case Content:

        if (strcmp(pszName, "ModelParameterGroup") &&
                strcmp(pszName, "ModelParameter"))
        {
            CCopasiMessage(CCopasiMessage::EXCEPTION, MCXML + 11,
                           pszName, "ModelParameterGroup or ModelParameter", mParser.getCurrentLineNumber());
        }

        if (mCommon.pCurrentModelParameter != NULL)
        {
            mCommon.ModelParameterGroupStack.top()->add(mCommon.pCurrentModelParameter);
            mCommon.pCurrentModelParameter = NULL;
        }

        // Content may be repeated therefore we set to the previous element which is ListOfUnkownAnnotations.
        mCurrentElement = mLastKnownElement = ModelParameterSet;
        break;

    case UNKNOWN_ELEMENT:
        mCurrentElement = mLastKnownElement;
        break;

    default:
        CCopasiMessage(CCopasiMessage::EXCEPTION, MCXML + 11,
                       pszName, "???", mParser.getCurrentLineNumber());
        break;
    }

    return;
}