diff options
author | Patrick Benavoli <patrickx.benavoli@intel.com> | 2011-10-04 15:32:57 +0200 |
---|---|---|
committer | David Wagner <david.wagner@intel.com> | 2014-02-10 17:14:56 +0100 |
commit | 11e6498a4fa3b27ca34d2fcb76bd6365da9d5c1b (patch) | |
tree | 51a757715ce03dac4cadb51cf742991c650c09a6 /parameter/IntegerParameterType.cpp | |
parent | 930075cd752694f173605fccde1bac1f2bc1e8e7 (diff) | |
download | external_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.cpp | 25 |
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) { |