Skip to content
This repository was archived by the owner on Aug 5, 2022. It is now read-only.

Commit 4473282

Browse files
committed
wip
Signed-off-by: Kevin Rocard <[email protected]>
1 parent 32b90cd commit 4473282

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

test/functional-tests/Handle.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ struct AllParamsPF : public ParameterFramework
6969
<FixedPointParameter Size="32" Integral="3" Fractional="4" Name="fix_point"/>
7070
<FixedPointParameter Size="32" Integral="3" Fractional="4" ArrayLength="3" Name="fix_point_array"/>
7171
72+
<FloatingPointParameter Size="32" Min="-12.2E-10" Max="1e10" Name="float"/>
73+
7274
<EnumParameter Size="8" Name="enum">
7375
<ValuePair Literal="min" Numerical="-128"/>
7476
<ValuePair Literal="five" Numerical="5"/>
@@ -347,6 +349,7 @@ static const char *defaultBasicSettingsXML = R"(
347349
<IntegerParameter Name="integer_array">-10 -10 -10 -10</IntegerParameter>
348350
<FixedPointParameter Name="fix_point">0.0000</FixedPointParameter>
349351
<FixedPointParameter Name="fix_point_array">0.0000 0.0000 0.0000</FixedPointParameter>
352+
<FloatingPointParameter Name="float">0</FloatingPointParameter>
350353
<EnumParameter Name="enum">min</EnumParameter>
351354
<EnumParameter Name="enum_array">eight eight eight eight</EnumParameter>
352355
<StringParameter Name="string"></StringParameter>
@@ -366,6 +369,7 @@ static const char *testBasicSettingsXML = R"(
366369
<IntegerParameter Name="integer_array">-10 0 8 10</IntegerParameter>
367370
<FixedPointParameter Name="fix_point">2.2500</FixedPointParameter>
368371
<FixedPointParameter Name="fix_point_array">7.1250 0.6875 -1.0000</FixedPointParameter>
372+
<FloatingPointParameter Name="float">1e+1</FloatingPointParameter>
369373
<EnumParameter Name="enum">five</EnumParameter>
370374
<EnumParameter Name="enum_array">eight min eight min</EnumParameter>
371375
<StringParameter Name="string">A string of 32 character.@@@@@@@</StringParameter>
@@ -384,6 +388,7 @@ static const char *testRawHexBasicSettingsXML = R"(
384388
<IntegerParameter Name="integer_array">0xFFFFFFF6 0x00000000 0x00000008 0x0000000A</IntegerParameter>
385389
<FixedPointParameter ValueSpace="Raw" Name="fix_point">0x24000000</FixedPointParameter>
386390
<FixedPointParameter ValueSpace="Raw" Name="fix_point_array">0x72000000 0x0B000000 0xF0000000</FixedPointParameter>
391+
<FloatingPointParameter Name="float">0x1</FloatingPointParameter>
387392
<EnumParameter Name="enum">five</EnumParameter>
388393
<EnumParameter Name="enum_array">eight min eight min</EnumParameter>
389394
<StringParameter Name="string">A string of 32 character.@@@@@@@</StringParameter>

xmlserializer/XmlElement.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
#include "XmlElement.h"
3131
#include <libxml/tree.h>
3232
#include "convert.hpp"
33+
34+
#include <sstream>
35+
#include <iomanip>
3336
#include <stdlib.h>
3437

3538
using std::string;
@@ -204,6 +207,24 @@ void CXmlElement::setAttribute<std::string>(const string &name, const string &va
204207
setAttribute(name, value.c_str());
205208
}
206209

210+
template <>
211+
void CXmlElement::setAttribute<float>(const string &name, const float &value)
212+
{
213+
std::ostringstream ss;
214+
ss << std::setprecision(6) << value; // max nb digit=`ceil(log10(2^23))=6`, 23=float fraction part
215+
216+
setAttribute(name, ss.str());
217+
}
218+
219+
template <>
220+
void CXmlElement::setAttribute<double>(const string &name, const double &value)
221+
{
222+
std::ostringstream ss;
223+
ss << std::setprecision(16) << value; // max nb digit=`ceil(log10(2^52))=16`, 52=double fraction part
224+
225+
setAttribute(name, ss.str());
226+
}
227+
207228
// This method exists for 2 reasons:
208229
// - at link time, all calls to setAttribute(const string&, const char [N])
209230
// for any value of N will all resolve to this method; this prevents the

0 commit comments

Comments
 (0)