FixedPointParameterType.h revision 68a912857707864bbaaff9808717813105072a6e
168a912857707864bbaaff9808717813105072a6ePatrick Benavoli/* <auto_header>
268a912857707864bbaaff9808717813105072a6ePatrick Benavoli * <FILENAME>
368a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
468a912857707864bbaaff9808717813105072a6ePatrick Benavoli * INTEL CONFIDENTIAL
568a912857707864bbaaff9808717813105072a6ePatrick Benavoli * Copyright © 2011 Intel
668a912857707864bbaaff9808717813105072a6ePatrick Benavoli * Corporation All Rights Reserved.
768a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
868a912857707864bbaaff9808717813105072a6ePatrick Benavoli * The source code contained or described herein and all documents related to
968a912857707864bbaaff9808717813105072a6ePatrick Benavoli * the source code ("Material") are owned by Intel Corporation or its suppliers
1068a912857707864bbaaff9808717813105072a6ePatrick Benavoli * or licensors. Title to the Material remains with Intel Corporation or its
1168a912857707864bbaaff9808717813105072a6ePatrick Benavoli * suppliers and licensors. The Material contains trade secrets and proprietary
1268a912857707864bbaaff9808717813105072a6ePatrick Benavoli * and confidential information of Intel or its suppliers and licensors. The
1368a912857707864bbaaff9808717813105072a6ePatrick Benavoli * Material is protected by worldwide copyright and trade secret laws and
1468a912857707864bbaaff9808717813105072a6ePatrick Benavoli * treaty provisions. No part of the Material may be used, copied, reproduced,
1568a912857707864bbaaff9808717813105072a6ePatrick Benavoli * modified, published, uploaded, posted, transmitted, distributed, or
1668a912857707864bbaaff9808717813105072a6ePatrick Benavoli * disclosed in any way without Intel’s prior express written permission.
1768a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
1868a912857707864bbaaff9808717813105072a6ePatrick Benavoli * No license under any patent, copyright, trade secret or other intellectual
1968a912857707864bbaaff9808717813105072a6ePatrick Benavoli * property right is granted to or conferred upon you by disclosure or delivery
2068a912857707864bbaaff9808717813105072a6ePatrick Benavoli * of the Materials, either expressly, by implication, inducement, estoppel or
2168a912857707864bbaaff9808717813105072a6ePatrick Benavoli * otherwise. Any license under such intellectual property rights must be
2268a912857707864bbaaff9808717813105072a6ePatrick Benavoli * express and approved by Intel in writing.
2368a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
2468a912857707864bbaaff9808717813105072a6ePatrick Benavoli *  AUTHOR: Patrick Benavoli (patrickx.benavoli@intel.com)
2568a912857707864bbaaff9808717813105072a6ePatrick Benavoli * CREATED: 2011-06-01
2668a912857707864bbaaff9808717813105072a6ePatrick Benavoli * UPDATED: 2011-07-27
2768a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
2868a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
2968a912857707864bbaaff9808717813105072a6ePatrick Benavoli * </auto_header>
3068a912857707864bbaaff9808717813105072a6ePatrick Benavoli */
3168a912857707864bbaaff9808717813105072a6ePatrick Benavoli#pragma once
3268a912857707864bbaaff9808717813105072a6ePatrick Benavoli
3368a912857707864bbaaff9808717813105072a6ePatrick Benavoli#include "ParameterType.h"
3468a912857707864bbaaff9808717813105072a6ePatrick Benavoli
3568a912857707864bbaaff9808717813105072a6ePatrick Benavoliclass CFixedPointParameterType : public CParameterType
3668a912857707864bbaaff9808717813105072a6ePatrick Benavoli{
3768a912857707864bbaaff9808717813105072a6ePatrick Benavolipublic:
3868a912857707864bbaaff9808717813105072a6ePatrick Benavoli    CFixedPointParameterType(const string& strName);
3968a912857707864bbaaff9808717813105072a6ePatrick Benavoli
4068a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // From IXmlSink
4168a912857707864bbaaff9808717813105072a6ePatrick Benavoli    virtual bool fromXml(const CXmlElement& xmlElement, CXmlSerializingContext& serializingContext);
4268a912857707864bbaaff9808717813105072a6ePatrick Benavoli
4368a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // XML Serialization value space handling
4468a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // Value space handling for configuration import
4568a912857707864bbaaff9808717813105072a6ePatrick Benavoli    virtual void handleValueSpaceAttribute(CXmlElement& xmlConfigurableElementSettingsElement, CConfigurationAccessContext& configurationAccessContext) const;
4668a912857707864bbaaff9808717813105072a6ePatrick Benavoli
4768a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // Conversion
4868a912857707864bbaaff9808717813105072a6ePatrick Benavoli    virtual bool asInteger(const string& strValue, uint32_t& uiValue, CParameterAccessContext& parameterAccessContext) const;
4968a912857707864bbaaff9808717813105072a6ePatrick Benavoli    virtual void asString(const uint32_t& uiValue, string& strValue, CParameterAccessContext& parameterAccessContext) const;
5068a912857707864bbaaff9808717813105072a6ePatrick Benavoli
5168a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // CElement
5268a912857707864bbaaff9808717813105072a6ePatrick Benavoli    virtual string getKind() const;
5368a912857707864bbaaff9808717813105072a6ePatrick Benavoliprivate:
5468a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // Util size
5568a912857707864bbaaff9808717813105072a6ePatrick Benavoli    uint32_t getUtilSizeInBits() const;
5668a912857707864bbaaff9808717813105072a6ePatrick Benavoli
5768a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // Integral part in Q notation
5868a912857707864bbaaff9808717813105072a6ePatrick Benavoli    uint32_t _uiIntegral;
5968a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // Fractional part in Q notation
6068a912857707864bbaaff9808717813105072a6ePatrick Benavoli    uint32_t _uiFractional;
6168a912857707864bbaaff9808717813105072a6ePatrick Benavoli};
62