copasi API
0.1
|
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