diff options
author | Patrick Benavoli <patrickx.benavoli@intel.com> | 2011-10-21 16:48:04 +0200 |
---|---|---|
committer | David Wagner <david.wagner@intel.com> | 2014-02-10 17:14:56 +0100 |
commit | 1352ae53c457466fadb3aa35f01afab899548657 (patch) | |
tree | 45fb44ab31d24a4a143681e0ec0177415cec5478 /parameter/StringParameter.cpp | |
parent | 11e6498a4fa3b27ca34d2fcb76bd6365da9d5c1b (diff) | |
download | external_parameter-framework-1352ae53c457466fadb3aa35f01afab899548657.zip external_parameter-framework-1352ae53c457466fadb3aa35f01afab899548657.tar.gz external_parameter-framework-1352ae53c457466fadb3aa35f01afab899548657.tar.bz2 |
parameter-framework: Added string parameters
BZ: 12819
String parameters are specified in the XML structure with a MaxLength attribute.
MaxLength corresponds to the maximum amount of characters the string parameter
can handle.
String parameters are expressend in the form of tokens, that is they don't
contain any sort of space characters.
For now, string parameter arrays are not supported.
Change-Id: Ifbb006e3d2e3077535c32c0fd579cc04872a82b0
Signed-off-by: Patrick Benavoli <patrickx.benavoli@intel.com>
Reviewed-on: http://android.intel.com:8080/22319
Reviewed-by: Centelles, Sylvain <sylvain.centelles@intel.com>
Tested-by: Barthes, FabienX <fabienx.barthes@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Reviewed-on: http://android.intel.com:8080/26778
Reviewed-by: Barthes, FabienX <fabienx.barthes@intel.com>
Diffstat (limited to 'parameter/StringParameter.cpp')
-rw-r--r-- | parameter/StringParameter.cpp | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/parameter/StringParameter.cpp b/parameter/StringParameter.cpp new file mode 100644 index 0000000..5040379 --- /dev/null +++ b/parameter/StringParameter.cpp @@ -0,0 +1,97 @@ +/* <auto_header> + * <FILENAME> + * + * INTEL CONFIDENTIAL + * Copyright © 2011 Intel + * Corporation All Rights Reserved. + * + * The source code contained or described herein and all documents related to + * the source code ("Material") are owned by Intel Corporation or its suppliers + * or licensors. Title to the Material remains with Intel Corporation or its + * suppliers and licensors. The Material contains trade secrets and proprietary + * and confidential information of Intel or its suppliers and licensors. The + * Material is protected by worldwide copyright and trade secret laws and + * treaty provisions. No part of the Material may be used, copied, reproduced, + * modified, published, uploaded, posted, transmitted, distributed, or + * disclosed in any way without Intel’s prior express written permission. + * + * No license under any patent, copyright, trade secret or other intellectual + * property right is granted to or conferred upon you by disclosure or delivery + * of the Materials, either expressly, by implication, inducement, estoppel or + * otherwise. Any license under such intellectual property rights must be + * express and approved by Intel in writing. + * + * AUTHOR: Patrick Benavoli (patrickx.benavoli@intel.com) + * CREATED: 2011-06-01 + * UPDATED: 2011-07-27 + * + * + * </auto_header> + */ +#include "StringParameter.h" +#include "StringParameterType.h" +#include "ParameterAccessContext.h" +#include "ConfigurationAccessContext.h" +#include "ParameterBlackboard.h" +#include <alloca.h> + +#define base CBaseParameter + +CStringParameter::CStringParameter(const string& strName, const CTypeElement* pTypeElement) : base(strName, pTypeElement) +{ +} + +CInstanceConfigurableElement::Type CStringParameter::getType() const +{ + return EStringParameter; +} + +uint32_t CStringParameter::getFootPrint() const +{ + return getSize(); +} + +uint32_t CStringParameter::getSize() const +{ + return static_cast<const CStringParameterType*>(getTypeElement())->getMaxLength() + 1; +} + +// Used for simulation only +void CStringParameter::setDefaultValues(CParameterAccessContext& parameterAccessContext) const +{ + // Write blackboard + CParameterBlackboard* pBlackboard = parameterAccessContext.getParameterBlackboard(); + + pBlackboard->writeString("", getOffset()); +} + +// Actual parameter access +bool CStringParameter::doSetValue(const string& strValue, uint32_t uiOffset, CParameterAccessContext& parameterAccessContext) const +{ + if (strValue.length() >= getSize()) { + + parameterAccessContext.setError("Maximum length exceeded"); + + return false; + } + + // Write blackboard + CParameterBlackboard* pBlackboard = parameterAccessContext.getParameterBlackboard(); + + pBlackboard->writeString(strValue.c_str(), uiOffset); + + return true; +} + +void CStringParameter::doGetValue(string& strValue, uint32_t uiOffset, CParameterAccessContext& parameterAccessContext) const +{ + char* pcValue = (char*)alloca(getSize()); + + // Read blackboard + const CParameterBlackboard* pBlackboard = parameterAccessContext.getParameterBlackboard(); + + pBlackboard->readString(pcValue, uiOffset); + + strValue = pcValue; +} + |