@@ -67,35 +67,6 @@ void CArrayParameter::showProperties(string& strResult) const
67
67
strResult += " \n " ;
68
68
}
69
69
70
- // XML configuration settings parsing
71
- bool CArrayParameter::serializeXmlSettings (CXmlElement& xmlConfigurationSettingsElementContent, CConfigurationAccessContext& configurationAccessContext) const
72
- {
73
- // Check for value space
74
- handleValueSpaceAttribute (xmlConfigurationSettingsElementContent, configurationAccessContext);
75
-
76
- // Handle access
77
- if (!configurationAccessContext.serializeOut ()) {
78
-
79
- // Actually set values to blackboard
80
- if (!setValues (0 , configurationAccessContext.getBaseOffset (), xmlConfigurationSettingsElementContent.getTextContent (), configurationAccessContext)) {
81
-
82
- return false ;
83
- }
84
- } else {
85
-
86
- // Get string value
87
- string strValue = getValues (
88
- configurationAccessContext.getBaseOffset (), // Whole array requested
89
- configurationAccessContext);
90
-
91
- // Populate value into xml text node
92
- xmlConfigurationSettingsElementContent.setTextContent (strValue);
93
- }
94
-
95
- // Done
96
- return true ;
97
- }
98
-
99
70
// User set/get
100
71
bool CArrayParameter::accessValue (CPathNavigator& pathNavigator, string& strValue, bool bSet, CParameterAccessContext& parameterAccessContext) const
101
72
{
@@ -115,8 +86,8 @@ bool CArrayParameter::accessValue(CPathNavigator& pathNavigator, string& strValu
115
86
}
116
87
117
88
// Actually set values
118
- if (!setValues (index, parameterAccessContext. getBaseOffset (), strValue, parameterAccessContext)) {
119
-
89
+ if (!setValues (index, getOffset () - parameterAccessContext. getBaseOffset (),
90
+ strValue, parameterAccessContext)) {
120
91
return false ;
121
92
}
122
93
@@ -131,17 +102,32 @@ bool CArrayParameter::accessValue(CPathNavigator& pathNavigator, string& strValu
131
102
if (index == (size_t )-1 ) {
132
103
133
104
// Whole array requested
134
- strValue = getValues (parameterAccessContext.getBaseOffset (), parameterAccessContext);
105
+ strValue = getValues (getOffset () - parameterAccessContext.getBaseOffset (), parameterAccessContext);
135
106
136
107
} else {
137
108
// Scalar requested
138
- doGetValue (strValue, getOffset () + index * getSize (), parameterAccessContext);
109
+ CParameter:: doGetValue (strValue, getOffset () + index * getSize (), parameterAccessContext);
139
110
}
140
111
}
141
112
142
113
return true ;
143
114
}
144
115
116
+ // / Actual parameter access
117
+ // String access
118
+ bool CArrayParameter::doSetValue (const string& value, size_t offset,
119
+ CParameterAccessContext& parameterAccessContext) const
120
+ {
121
+ return setValues (0 , offset, value, parameterAccessContext);
122
+ }
123
+
124
+ void CArrayParameter::doGetValue (string& value, size_t offset,
125
+ CParameterAccessContext& parameterAccessContext) const
126
+ {
127
+ // Whole array requested
128
+ value = getValues (offset, parameterAccessContext);
129
+ }
130
+
145
131
// Boolean
146
132
bool CArrayParameter::access (std::vector<bool >& abValues, bool bSet, CParameterAccessContext& parameterAccessContext) const
147
133
{
@@ -250,7 +236,7 @@ bool CArrayParameter::getIndex(CPathNavigator& pathNavigator, size_t& index, CPa
250
236
}
251
237
252
238
// Common set value processing
253
- bool CArrayParameter::setValues (size_t uiStartIndex, size_t baseOffset , const string& strValue, CParameterAccessContext& parameterAccessContext) const
239
+ bool CArrayParameter::setValues (size_t uiStartIndex, size_t offset , const string& strValue, CParameterAccessContext& parameterAccessContext) const
254
240
{
255
241
// Deal with value(s)
256
242
Tokenizer tok (strValue, Tokenizer::defaultDelimiters + " ," );
@@ -270,11 +256,11 @@ bool CArrayParameter::setValues(size_t uiStartIndex, size_t baseOffset, const st
270
256
// Process
271
257
size_t valueIndex;
272
258
size_t size = getSize ();
273
- size_t offset = getOffset () + uiStartIndex * size - baseOffset ;
259
+ size_t startOffset = offset + uiStartIndex * size;
274
260
275
261
for (valueIndex = 0 ; valueIndex < nbValues; valueIndex++) {
276
262
277
- if (!doSetValue (astrValues[valueIndex], offset , parameterAccessContext)) {
263
+ if (!doSet (astrValues[valueIndex], startOffset , parameterAccessContext)) {
278
264
279
265
// Append parameter path to error
280
266
parameterAccessContext.appendToError (" " + getPath () + " /" +
@@ -289,10 +275,9 @@ bool CArrayParameter::setValues(size_t uiStartIndex, size_t baseOffset, const st
289
275
}
290
276
291
277
// Common get value processing
292
- string CArrayParameter::getValues (size_t baseOffset , CParameterAccessContext& parameterAccessContext) const
278
+ string CArrayParameter::getValues (size_t offset , CParameterAccessContext& parameterAccessContext) const
293
279
{
294
280
size_t size = getSize ();
295
- size_t offset = getOffset () - baseOffset;
296
281
size_t arrayLength = getArrayLength ();
297
282
298
283
string output;
@@ -302,7 +287,7 @@ string CArrayParameter::getValues(size_t baseOffset, CParameterAccessContext& pa
302
287
for (size_t valueIndex = 0 ; valueIndex < arrayLength; valueIndex++) {
303
288
string strReadValue;
304
289
305
- doGetValue (strReadValue, offset, parameterAccessContext);
290
+ doGet (strReadValue, offset, parameterAccessContext);
306
291
307
292
if (!bFirst) {
308
293
0 commit comments