blob: 27779ec326f806377f97738552489726c46ae166 [file] [log] [blame]
Patrick Benavoli68a91282011-08-31 11:23:23 +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#pragma once
32
33#include "BinarySerializableElement.h"
34#include <list>
35
36class CConfigurableElement;
37class CAreaConfiguration;
38class CParameterBlackboard;
39class CConfigurationAccessContext;
40class CCompoundRule;
41
42class CDomainConfiguration : public CBinarySerializableElement
43{
44 enum ChildElementType {
45 ECompoundRule
46 };
47 typedef list<CAreaConfiguration*>::const_iterator AreaConfigurationListIterator;
48public:
49 CDomainConfiguration(const string& strName);
50 virtual ~CDomainConfiguration();
51
52 // Configurable Elements association
53 void addConfigurableElement(const CConfigurableElement* pConfigurableElement);
54 void removeConfigurableElement(const CConfigurableElement* pConfigurableElement);
55
56 // Save data from current
57 void save(const CParameterBlackboard* pMainBlackboard);
58 // Apply data to current
59 void restore(CParameterBlackboard* pMainBlackboard) const;
60 // Ensure validity for configurable element area configuration
61 void validate(const CConfigurableElement* pConfigurableElement, const CParameterBlackboard* pMainBlackboard);
62 // Ensure validity of all area configurations
63 void validate(const CParameterBlackboard* pMainBlackboard);
64 // Return configuration validity for given configurable element
65 bool isValid(const CConfigurableElement* pConfigurableElement) const;
66 // Ensure validity of configurable element's area configuration by copying in from a valid one
67 void validateAgainst(const CDomainConfiguration* pValidDomainConfiguration, const CConfigurableElement* pConfigurableElement);
68 // Ensure validity of all configurable element's area configuration by copying in from a valid ones
69 void validateAgainst(const CDomainConfiguration* pValidDomainConfiguration);
70 // Applicability checking
71 bool isApplicable() const;
72 // Merge existing configurations to given configurable element ones
73 void merge(CConfigurableElement* pToConfigurableElement, CConfigurableElement* pFromConfigurableElement);
74 // Domain splitting
75 void split(CConfigurableElement* pFromConfigurableElement);
76
77 // XML configuration settings parsing/composing
78 bool serializeXmlSettings(const CConfigurableElement* pConfigurableElement, CXmlElement& xmlConfigurationSettingsElement, CConfigurationAccessContext& configurationAccessContext);
79
80 // Presence of application condition
81 bool hasRule() const;
82
83 // Serialization
84 virtual void binarySerialize(CBinaryStream& binaryStream);
85
86 // Data size
87 virtual uint32_t getDataSize() const;
88
89 // Class kind
90 virtual string getKind() const;
91private:
92 // Returns true if children dynamic creation is to be dealt with (here, will allow child deletion upon clean)
93 virtual bool childrenAreDynamic() const;
94 // AreaConfiguration retrieval from configurable element
95 CAreaConfiguration* getAreaConfiguration(const CConfigurableElement* pConfigurableElement) const;
96
97 // Rule
98 const CCompoundRule* getRule() const;
99
100 // AreaConfigurations
101 list<CAreaConfiguration*> _areaConfigurationList;
102};