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