blob: 67349d400deb7d81290f453efe8e0e6325459352 [file] [log] [blame]
Patrick Benavoli2ecf9002011-08-31 11:23:24 +02001/* <auto_header>
2 * <FILENAME>
3 *
4 * INTEL CONFIDENTIAL
5 * Copyright © 2011 Intel
6 * Corporation All Rights Reserved.
7 *
8 * The source code contained or described herein and all documents related to
9 * the source code ("Material") are owned by Intel Corporation or its suppliers
10 * or licensors. Title to the Material remains with Intel Corporation or its
11 * suppliers and licensors. The Material contains trade secrets and proprietary
12 * and confidential information of Intel or its suppliers and licensors. The
13 * Material is protected by worldwide copyright and trade secret laws and
14 * treaty provisions. No part of the Material may be used, copied, reproduced,
15 * modified, published, uploaded, posted, transmitted, distributed, or
16 * disclosed in any way without Intel’s prior express written permission.
17 *
18 * No license under any patent, copyright, trade secret or other intellectual
19 * property right is granted to or conferred upon you by disclosure or delivery
20 * of the Materials, either expressly, by implication, inducement, estoppel or
21 * otherwise. Any license under such intellectual property rights must be
22 * express and approved by Intel in writing.
23 *
24 * AUTHOR: Patrick Benavoli (patrickx.benavoli@intel.com)
25 * CREATED: 2011-06-01
26 * UPDATED: 2011-07-27
27 *
28 *
29 * </auto_header>
30 */
31#include "BaseParameter.h"
32#include "ParameterType.h"
33#include "ParameterAccessContext.h"
34#include "ConfigurationAccessContext.h"
35#include "ParameterBlackboard.h"
36
37#define base CInstanceConfigurableElement
38
39CBaseParameter::CBaseParameter(const string& strName, const CTypeElement* pTypeElement) : base(strName, pTypeElement)
40{
41}
42
43// XML configuration settings parsing/composing
44bool CBaseParameter::serializeXmlSettings(CXmlElement& xmlConfigurationSettingsElementContent, CConfigurationAccessContext& configurationAccessContext) const
45{
46 // Handle access
47 if (!configurationAccessContext.serializeOut()) {
48
49 // Write to blackboard
50 if (!doSetValue(xmlConfigurationSettingsElementContent.getTextContent(), getOffset() - configurationAccessContext.getBaseOffset(), configurationAccessContext)) {
51
52 // Append parameter path to error
53 configurationAccessContext.appendToError(" " + getPath());
54
55 return false;
56 }
57 } else {
58
59 // Get string value
60 string strValue;
61
62 doGetValue(strValue, getOffset() - configurationAccessContext.getBaseOffset(), configurationAccessContext);
63
64 // Populate value into xml text node
65 xmlConfigurationSettingsElementContent.setTextContent(strValue);
66 }
67
68 // Done
69 return true;
70}
71
72// Dump
73void CBaseParameter::logValue(string& strValue, CErrorContext& errorContext) const
74{
75 // Parameter context
76 CParameterAccessContext& parameterContext = static_cast<CParameterAccessContext&>(errorContext);
77
78 // Dump value
79 doGetValue(strValue, getOffset(), parameterContext);
80}
81
82// Parameter Access
83bool CBaseParameter::setValue(CPathNavigator& pathNavigator, const string& strValue, CParameterAccessContext& parameterContext) const
84{
85 // Check path validity
86 if (!checkPathExhausted(pathNavigator, parameterContext)) {
87
88 return false;
89 }
90
91 // Set Value
92 if (!doSetValue(strValue, getOffset(), parameterContext)) {
93
94 // Append parameter path to error
95 parameterContext.appendToError(" " + getPath());
96
97 return false;
98 }
99 // Synchronize
100 if (parameterContext.getAutoSync() && !sync(parameterContext)) {
101
102 // Append parameter path to error
103 parameterContext.appendToError(" " + getPath());
104
105 return false;
106 }
107 return true;
108}
109
110bool CBaseParameter::getValue(CPathNavigator& pathNavigator, string& strValue, CParameterAccessContext& parameterContext) const
111{
112 // Check path validity
113 if (!checkPathExhausted(pathNavigator, parameterContext)) {
114
115 return false;
116 }
117
118 // Get Value
119 doGetValue(strValue, getOffset(), parameterContext);
120
121 return true;
122}