copasi API  0.1
copasi/utilities/copasimathml.h
Go to the documentation of this file.
00001 /* Begin CVS Header
00002    $Source: /fs/turing/cvs/copasi_dev/copasi/utilities/copasimathml.h,v $
00003    $Revision: 1.4 $
00004    $Name: Build-33 $
00005    $Author: shoops $
00006    $Date: 2006/10/06 16:03:50 $
00007    End CVS Header */
00008 
00009 // Copyright © 2005 by Pedro Mendes, Virginia Tech Intellectual
00010 // Properties, Inc. and EML Research, gGmbH.
00011 // All rights reserved.
00012 
00013 #ifndef COPASI_MATHML
00014 #define COPASI_MATHML
00015 
00016 #include "model/CModelValue.h"
00017 //#include "model/CMetab.h"
00018 #include "model/CCompartment.h"
00019 #include "report/CCopasiObjectReference.h"
00020 
00021 #define SPC(level) std::string(level, ' ')
00022 
00023 class CMathMl
00024   {
00025   public:
00026 
00027     static std::string fixName(const std::string & name)
00028     {
00029       if (name.find_first_of(" ()*+-") == std::string::npos)
00030         return name;
00031       else
00032         return "\"" + name + "\"";
00033     }
00034 
00035     static std::string getMMLName(const CCopasiObject* obj)
00036     {
00037       if (!obj) return "no object";
00038 
00039       //model value
00040       const CModelValue* mv = dynamic_cast<const CModelValue*>(obj);
00041       if (mv) return "<mi>" + fixName(mv->getObjectName()) + "</mi>";
00042 
00043       //metabolite
00044       //const CMetab* met = dynamic_cast<const CMetab*>(obj);
00045       //if (met) return "<mi>[" + met->getObjectName() + "]</mi>";
00046 
00047       //compartment
00048       const CCompartment* comp = dynamic_cast<const CCompartment*>(obj);
00049       if (comp) return "<msub><mi>V</mi><mi>" + comp->getObjectName()
00050         + "</mi></msub>";
00051 
00052       //reference
00053       if (obj->getObjectType() == "Reference")
00054         {
00055           //model value
00056           if (obj->getObjectName() == "Value")
00057             {
00058               mv = dynamic_cast<const CModelValue*>(obj->getObjectParent());
00059               if (mv) return "<mi>" + fixName(mv->getObjectName()) + "</mi>";
00060             }
00061 
00062           //compartment
00063           if (obj->getObjectName() == "Volume")
00064             {
00065               comp = dynamic_cast<const CCompartment*>(obj->getObjectParent());
00066               if (comp) return "<msub><mi>V</mi><mi>" + comp->getObjectName()
00067                 + "</mi></msub>";
00068             }
00069         }
00070 
00071       return "<mi>" + fixName(obj->getObjectDisplayName()) + "</mi>";
00072     }
00073   };
00074 
00075 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines