diff options
author | Guillaume Denneulin <guillaume.denneulin@intel.com> | 2014-01-10 14:58:42 +0100 |
---|---|---|
committer | David Wagner <david.wagner@intel.com> | 2014-02-12 17:04:19 +0100 |
commit | a6b01d2049a137932f303cdee554d8d2703d7af7 (patch) | |
tree | 1babc313169e1299f8e98d741df88046a12567dd /parameter/ParameterType.h | |
parent | 28119d8ec7d49b5fab310f08e6fc40c910e3bc8a (diff) | |
download | external_parameter-framework-a6b01d2049a137932f303cdee554d8d2703d7af7.zip external_parameter-framework-a6b01d2049a137932f303cdee554d8d2703d7af7.tar.gz external_parameter-framework-a6b01d2049a137932f303cdee554d8d2703d7af7.tar.bz2 |
Add integer conversion that can take care of sign extension
BZ: 163707
When using signed integers of size 8 or 16, the bit of sign needs to
be propagated if the API called by the plugin wait for "int" type
Add the virtual toInteger function in CTypeElement for each parameter
type to take care of conversion to "int". Specialize this function in
the class CIntegerParameterType to take care of sign extension.
Change-Id: I41183dccbcc21212299d1dde86b3ad4ba8432ce4
Signed-off-by: Guillaume Denneulin <guillaume.denneulin@intel.com>
Diffstat (limited to 'parameter/ParameterType.h')
-rwxr-xr-x[-rw-r--r--] | parameter/ParameterType.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/parameter/ParameterType.h b/parameter/ParameterType.h index ed30ac3..2fcd9e5 100644..100755 --- a/parameter/ParameterType.h +++ b/parameter/ParameterType.h @@ -73,14 +73,27 @@ public: // Default value handling (simulation only) virtual uint32_t getDefaultValue() const; + + /** + * Sign extension (32 bits) + * + * @param[in:out] iData the data which will be sign extended + */ + void signExtend(int32_t& iData) const; + + /** + * Sign extension (64 bits) + * + * @param[in:out] iData the data which will be sign extended + */ + void signExtend(int64_t& iData) const; + protected: // Object creation virtual void populate(CElement* pElement) const; // Size void setSize(uint32_t uiSize); - // Sign extension - void signExtend(int32_t& iData) const; - void signExtend(int64_t& iData) const; + // Check data has no bit set outside available range (based on byte size) and // check data is consistent with available range, with respect to its sign bool isEncodable(uint32_t uiData, bool bIsSigned) const; |