IntegerParameterType.h revision a6b01d2049a137932f303cdee554d8d2703d7af7
193250d172612c405135d56ffd306deae5ebc6df1Kevin Rocard/* 268a912857707864bbaaff9808717813105072a6ePatrick Benavoli * INTEL CONFIDENTIAL 368a912857707864bbaaff9808717813105072a6ePatrick Benavoli * Copyright © 2011 Intel 468a912857707864bbaaff9808717813105072a6ePatrick Benavoli * Corporation All Rights Reserved. 568a912857707864bbaaff9808717813105072a6ePatrick Benavoli * 668a912857707864bbaaff9808717813105072a6ePatrick Benavoli * The source code contained or described herein and all documents related to 768a912857707864bbaaff9808717813105072a6ePatrick Benavoli * the source code ("Material") are owned by Intel Corporation or its suppliers 868a912857707864bbaaff9808717813105072a6ePatrick Benavoli * or licensors. Title to the Material remains with Intel Corporation or its 968a912857707864bbaaff9808717813105072a6ePatrick Benavoli * suppliers and licensors. The Material contains trade secrets and proprietary 1068a912857707864bbaaff9808717813105072a6ePatrick Benavoli * and confidential information of Intel or its suppliers and licensors. The 1168a912857707864bbaaff9808717813105072a6ePatrick Benavoli * Material is protected by worldwide copyright and trade secret laws and 1268a912857707864bbaaff9808717813105072a6ePatrick Benavoli * treaty provisions. No part of the Material may be used, copied, reproduced, 1368a912857707864bbaaff9808717813105072a6ePatrick Benavoli * modified, published, uploaded, posted, transmitted, distributed, or 1468a912857707864bbaaff9808717813105072a6ePatrick Benavoli * disclosed in any way without Intel’s prior express written permission. 1568a912857707864bbaaff9808717813105072a6ePatrick Benavoli * 1668a912857707864bbaaff9808717813105072a6ePatrick Benavoli * No license under any patent, copyright, trade secret or other intellectual 1768a912857707864bbaaff9808717813105072a6ePatrick Benavoli * property right is granted to or conferred upon you by disclosure or delivery 1868a912857707864bbaaff9808717813105072a6ePatrick Benavoli * of the Materials, either expressly, by implication, inducement, estoppel or 1968a912857707864bbaaff9808717813105072a6ePatrick Benavoli * otherwise. Any license under such intellectual property rights must be 2068a912857707864bbaaff9808717813105072a6ePatrick Benavoli * express and approved by Intel in writing. 2168a912857707864bbaaff9808717813105072a6ePatrick Benavoli * 2268a912857707864bbaaff9808717813105072a6ePatrick Benavoli * CREATED: 2011-06-01 2368a912857707864bbaaff9808717813105072a6ePatrick Benavoli * UPDATED: 2011-07-27 2468a912857707864bbaaff9808717813105072a6ePatrick Benavoli */ 2568a912857707864bbaaff9808717813105072a6ePatrick Benavoli#pragma once 2668a912857707864bbaaff9808717813105072a6ePatrick Benavoli 2768a912857707864bbaaff9808717813105072a6ePatrick Benavoli#include "ParameterType.h" 2868a912857707864bbaaff9808717813105072a6ePatrick Benavoli 29ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoliclass CParameterAdaptation; 30ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoli 3168a912857707864bbaaff9808717813105072a6ePatrick Benavoliclass CIntegerParameterType : public CParameterType 3268a912857707864bbaaff9808717813105072a6ePatrick Benavoli{ 3368a912857707864bbaaff9808717813105072a6ePatrick Benavolipublic: 3468a912857707864bbaaff9808717813105072a6ePatrick Benavoli CIntegerParameterType(const string& strName); 3568a912857707864bbaaff9808717813105072a6ePatrick Benavoli 3668a912857707864bbaaff9808717813105072a6ePatrick Benavoli // From IXmlSink 3768a912857707864bbaaff9808717813105072a6ePatrick Benavoli virtual bool fromXml(const CXmlElement& xmlElement, CXmlSerializingContext& serializingContext); 3868a912857707864bbaaff9808717813105072a6ePatrick Benavoli 39326a31df0dd401283de6170ed09bcf605f61ef7dGeorges-Henri Baron // From IXmlSource 40326a31df0dd401283de6170ed09bcf605f61ef7dGeorges-Henri Baron virtual void toXml(CXmlElement& xmlElement, CXmlSerializingContext& serializingContext) const; 41326a31df0dd401283de6170ed09bcf605f61ef7dGeorges-Henri Baron 42065264a93ce9c63b6a5c95e985188ee33ba587d3Patrick Benavoli /// Conversion 43065264a93ce9c63b6a5c95e985188ee33ba587d3Patrick Benavoli // String 44065264a93ce9c63b6a5c95e985188ee33ba587d3Patrick Benavoli virtual bool toBlackboard(const string& strValue, uint32_t& uiValue, CParameterAccessContext& parameterAccessContext) const; 45065264a93ce9c63b6a5c95e985188ee33ba587d3Patrick Benavoli virtual bool fromBlackboard(string& strValue, const uint32_t& uiValue, CParameterAccessContext& parameterAccessContext) const; 46065264a93ce9c63b6a5c95e985188ee33ba587d3Patrick Benavoli // Integer 47065264a93ce9c63b6a5c95e985188ee33ba587d3Patrick Benavoli virtual bool toBlackboard(uint32_t uiUserValue, uint32_t& uiValue, CParameterAccessContext& parameterAccessContext) const; 48065264a93ce9c63b6a5c95e985188ee33ba587d3Patrick Benavoli virtual bool fromBlackboard(uint32_t& uiUserValue, uint32_t uiValue, CParameterAccessContext& parameterAccessContext) const; 49065264a93ce9c63b6a5c95e985188ee33ba587d3Patrick Benavoli // Signed Integer 50065264a93ce9c63b6a5c95e985188ee33ba587d3Patrick Benavoli virtual bool toBlackboard(int32_t iUserValue, uint32_t& uiValue, CParameterAccessContext& parameterAccessContext) const; 51065264a93ce9c63b6a5c95e985188ee33ba587d3Patrick Benavoli virtual bool fromBlackboard(int32_t& iUserValue, uint32_t uiValue, CParameterAccessContext& parameterAccessContext) const; 52ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoli // Double 53ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoli virtual bool toBlackboard(double dUserValue, uint32_t& uiValue, CParameterAccessContext& parameterAccessContext) const; 54ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoli virtual bool fromBlackboard(double& dUserValue, uint32_t uiValue, CParameterAccessContext& parameterAccessContext) const; 5568a912857707864bbaaff9808717813105072a6ePatrick Benavoli 5668a912857707864bbaaff9808717813105072a6ePatrick Benavoli // Default value handling (simulation only) 5768a912857707864bbaaff9808717813105072a6ePatrick Benavoli virtual uint32_t getDefaultValue() const; 5868a912857707864bbaaff9808717813105072a6ePatrick Benavoli 592ecf900ad8c30ce9f8e81f57977a1a80a6f6d8afPatrick Benavoli // Element properties 602ecf900ad8c30ce9f8e81f57977a1a80a6f6d8afPatrick Benavoli virtual void showProperties(string& strResult) const; 612ecf900ad8c30ce9f8e81f57977a1a80a6f6d8afPatrick Benavoli 62a6b01d2049a137932f303cdee554d8d2703d7af7Guillaume Denneulin // Integer conversion 63a6b01d2049a137932f303cdee554d8d2703d7af7Guillaume Denneulin virtual int toPlainInteger(int iSizeOptimizedData) const; 64a6b01d2049a137932f303cdee554d8d2703d7af7Guillaume Denneulin 6568a912857707864bbaaff9808717813105072a6ePatrick Benavoli // CElement 6668a912857707864bbaaff9808717813105072a6ePatrick Benavoli virtual string getKind() const; 67a6b01d2049a137932f303cdee554d8d2703d7af7Guillaume Denneulin 6868a912857707864bbaaff9808717813105072a6ePatrick Benavoliprivate: 69ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoli // Returns true if children dynamic creation is to be dealt with 70ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoli virtual bool childrenAreDynamic() const; 71ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoli 72dc32d63f2ed740af1bfc0b3f8fd2337cba46d895Frédéric Boisnard // Conversion from string 73dc32d63f2ed740af1bfc0b3f8fd2337cba46d895Frédéric Boisnard bool convertValueFromString(const string& strValue, int64_t& iData, CParameterAccessContext& parameterAccessContext) const; 74dc32d63f2ed740af1bfc0b3f8fd2337cba46d895Frédéric Boisnard 7568a912857707864bbaaff9808717813105072a6ePatrick Benavoli // Range checking 76dc32d63f2ed740af1bfc0b3f8fd2337cba46d895Frédéric Boisnard template <typename type> bool checkValueAgainstRange(const string& strValue, type value, type minValue, type maxValue, CParameterAccessContext& parameterAccessContext, bool bHexaValue) const; 7768a912857707864bbaaff9808717813105072a6ePatrick Benavoli 78ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoli // Adaptation element retrieval 79ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoli const CParameterAdaptation* getParameterAdaptation() const; 80ee65e6d992e5fd7c81f62ced1cbed532989c09f7Patrick Benavoli 8168a912857707864bbaaff9808717813105072a6ePatrick Benavoli // Signing 8268a912857707864bbaaff9808717813105072a6ePatrick Benavoli bool _bSigned; 8368a912857707864bbaaff9808717813105072a6ePatrick Benavoli // Range 8468a912857707864bbaaff9808717813105072a6ePatrick Benavoli uint32_t _uiMin; 8568a912857707864bbaaff9808717813105072a6ePatrick Benavoli uint32_t _uiMax; 8668a912857707864bbaaff9808717813105072a6ePatrick Benavoli}; 87