summaryrefslogtreecommitdiffstats
path: root/parameter/IntegerParameterType.cpp
diff options
context:
space:
mode:
authorPatrick Benavoli <patrickx.benavoli@intel.com>2011-10-04 15:32:57 +0200
committerDavid Wagner <david.wagner@intel.com>2014-02-10 17:14:56 +0100
commit11e6498a4fa3b27ca34d2fcb76bd6365da9d5c1b (patch)
tree51a757715ce03dac4cadb51cf742991c650c09a6 /parameter/IntegerParameterType.cpp
parent930075cd752694f173605fccde1bac1f2bc1e8e7 (diff)
downloadexternal_parameter-framework-11e6498a4fa3b27ca34d2fcb76bd6365da9d5c1b.zip
external_parameter-framework-11e6498a4fa3b27ca34d2fcb76bd6365da9d5c1b.tar.gz
external_parameter-framework-11e6498a4fa3b27ca34d2fcb76bd6365da9d5c1b.tar.bz2
parameter-framework: import/export XML
BZ: 10948 - Max value handling on integers corrected - Left-justified Qn.m numbers - Corrections after code review: removed fixed numbers from the code and unified byte to bit conversions Change-Id: Iaf54e413201eae61013735580e046c5ab1874700 Signed-off-by: Patrick Benavoli <patrickx.benavoli@intel.com> Reviewed-on: http://android.intel.com:8080/22316 Reviewed-by: Centelles, Sylvain <sylvain.centelles@intel.com> Tested-by: Barthes, FabienX <fabienx.barthes@intel.com> Reviewed-by: buildbot <buildbot@intel.com> Tested-by: buildbot <buildbot@intel.com> Reviewed-on: http://android.intel.com:8080/26777 Reviewed-by: Barthes, FabienX <fabienx.barthes@intel.com>
Diffstat (limited to 'parameter/IntegerParameterType.cpp')
-rw-r--r--parameter/IntegerParameterType.cpp25
1 files changed, 11 insertions, 14 deletions
diff --git a/parameter/IntegerParameterType.cpp b/parameter/IntegerParameterType.cpp
index f3e447e..a55adff 100644
--- a/parameter/IntegerParameterType.cpp
+++ b/parameter/IntegerParameterType.cpp
@@ -71,24 +71,24 @@ bool CIntegerParameterType::fromXml(const CXmlElement& xmlElement, CXmlSerializi
// Sign
_bSigned = xmlElement.getAttributeBoolean("Signed");
- // Size
- setSize(xmlElement.getAttributeInteger("Size") / 8);
-
// Size in bits
- uint32_t uiUtilSizeInBits = getSize() << 3;
+ uint32_t uiSizeInBits = xmlElement.getAttributeInteger("Size");
+
+ // Size
+ setSize(uiSizeInBits / 8);
// Min / Max
if (_bSigned) {
// Signed means we have one less util bit
- uiUtilSizeInBits--;
+ uiSizeInBits--;
if (xmlElement.hasAttribute("Min")) {
_uiMin = (uint32_t)xmlElement.getAttributeSignedInteger("Min");
} else {
- _uiMin = 1UL << uiUtilSizeInBits;
+ _uiMin = 1UL << uiSizeInBits;
signExtend((int32_t&)_uiMin);
}
@@ -97,7 +97,7 @@ bool CIntegerParameterType::fromXml(const CXmlElement& xmlElement, CXmlSerializi
_uiMax = (uint32_t)xmlElement.getAttributeSignedInteger("Max");
} else {
- _uiMax = (1UL << uiUtilSizeInBits) - 1;
+ _uiMax = (1UL << uiSizeInBits) - 1;
}
} else {
if (xmlElement.hasAttribute("Min")) {
@@ -112,7 +112,7 @@ bool CIntegerParameterType::fromXml(const CXmlElement& xmlElement, CXmlSerializi
_uiMax = xmlElement.getAttributeInteger("Max");
} else {
- _uiMax = (uint32_t)((1UL << uiUtilSizeInBits) - 1);
+ _uiMax = -1L >> (32 - uiSizeInBits);
}
}
@@ -136,13 +136,10 @@ bool CIntegerParameterType::asInteger(const string& strValue, uint32_t& uiValue,
iData = strtol(strValue.c_str(), NULL, 0);
}
- if (bValueProvidedAsHexa) {
+ if (bValueProvidedAsHexa && isEncodable(iData)) {
- if (isEncodable(iData)) {
-
- // Sign extend
- signExtend(iData);
- }
+ // Sign extend
+ signExtend(iData);
}
// Check against Min / Max
if (_bSigned) {