1
- // Copyright (C) 2019 - 2020 by Pedro Mendes, Rector and Visitors of the
1
+ // Copyright (C) 2019 - 2024 by Pedro Mendes, Rector and Visitors of the
2
2
// University of Virginia, University of Heidelberg, and University
3
3
// of Connecticut School of Medicine.
4
4
// All rights reserved.
18
18
#include " ParameterHandler.h"
19
19
20
20
#include " CXMLParser.h"
21
+ #include " copasi/CopasiDataModel/CDataModel.h"
22
+ #include " copasi/core/CRegisteredCommonName.h"
21
23
#include " copasi/utilities/CCopasiParameter.h"
22
24
23
25
/* *
@@ -47,7 +49,6 @@ CXMLHandler * ParameterHandler::processStart(const XML_Char * pszName,
47
49
std::string sValue (" " );
48
50
bool UnmappedKey = false ;
49
51
50
- void * pValue = NULL ;
51
52
CCopasiParameter::Type type;
52
53
53
54
C_FLOAT64 d;
@@ -69,26 +70,28 @@ CXMLHandler * ParameterHandler::processStart(const XML_Char * pszName,
69
70
sValue = cValue;
70
71
}
71
72
73
+ mpData->pCurrentParameter = new CCopasiParameter (name, type);
74
+
72
75
switch (type)
73
76
{
74
77
case CCopasiParameter::Type::DOUBLE:
75
78
d = CCopasiXMLInterface::DBL (sValue .c_str ());
76
- pValue = &d ;
79
+ mpData-> pCurrentParameter -> setValue (d) ;
77
80
break ;
78
81
79
82
case CCopasiParameter::Type::UDOUBLE:
80
83
d = CCopasiXMLInterface::DBL (sValue .c_str ());
81
- pValue = &d ;
84
+ mpData-> pCurrentParameter -> setValue (d) ;
82
85
break ;
83
86
84
87
case CCopasiParameter::Type::INT:
85
88
i = strToInt (sValue .c_str ());
86
- pValue = &i ;
89
+ mpData-> pCurrentParameter -> setValue (i) ;
87
90
break ;
88
91
89
92
case CCopasiParameter::Type::UINT:
90
93
ui = strToUnsignedInt (sValue .c_str ());
91
- pValue = &ui ;
94
+ mpData-> pCurrentParameter -> setValue (ui) ;
92
95
break ;
93
96
94
97
case CCopasiParameter::Type::BOOL:
@@ -102,19 +105,17 @@ CXMLHandler * ParameterHandler::processStart(const XML_Char * pszName,
102
105
b = true ;
103
106
}
104
107
105
- pValue = &b ;
108
+ mpData-> pCurrentParameter -> setValue (b) ;
106
109
break ;
107
110
108
111
case CCopasiParameter::Type::STRING:
109
112
case CCopasiParameter::Type::FILE:
110
- case CCopasiParameter::Type::CN:
111
- pValue = &sValue ;
113
+ mpData->pCurrentParameter ->setValue (sValue );
112
114
break ;
113
115
114
116
case CCopasiParameter::Type::KEY:
115
117
{
116
- if (sValue != " " &&
117
- CKeyFactory::isValidKey (sValue ))
118
+ if (sValue != " " && CKeyFactory::isValidKey (sValue ))
118
119
{
119
120
CDataObject * pObject = mpData->mKeyMap .get (sValue );
120
121
@@ -128,20 +129,21 @@ CXMLHandler * ParameterHandler::processStart(const XML_Char * pszName,
128
129
}
129
130
}
130
131
131
- pValue = & sValue ;
132
+ mpData-> pCurrentParameter -> setValue ( sValue ) ;
132
133
}
133
134
break ;
134
135
136
+ case CCopasiParameter::Type::CN:
137
+ mpData->pCurrentParameter ->setValue (CRegisteredCommonName (sValue , mpData->pDataModel ));
138
+ break ;
139
+
135
140
default :
136
141
if (cType != NULL ) // otherwise missing attribute will have been logged
137
142
CCopasiMessage (CCopasiMessage::ERROR, MCXML + 16 , name.c_str (), cType, mpParser->getCurrentLineNumber ());
138
143
139
- pValue = NULL ;
140
144
break ;
141
145
}
142
146
143
- mpData->pCurrentParameter = new CCopasiParameter (name, type, pValue);
144
-
145
147
if (UnmappedKey)
146
148
{
147
149
mpData->UnmappedKeyParameters .push_back (mpData->pCurrentParameter ->getKey ());
0 commit comments