blob: 9640b3bc2a3ac2aadfd72896bdaf1a07365be9d9 [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#include "SelectionCriterion.h"
32
33#define base CElement
34
35CSelectionCriterion::CSelectionCriterion(const string& strName, const CSelectionCriterionType* pType) : base(strName), _iState(0), _pType(pType), _pObserver(NULL)
36{
37}
38
39string CSelectionCriterion::getKind() const
40{
41 return "SelectionCriterion";
42}
43
44/// From ISelectionCriterionInterface
45// State
46void CSelectionCriterion::setCriterionState(int iState, bool bUpdate)
47{
48 // Check for a change
49 if (_iState != iState) {
50
51 _iState = iState;
52
53 // Update if required
54 if (bUpdate && _pObserver) {
55
56 _pObserver->selectionCriterionChanged(this);
57 }
58 }
59}
60
61int CSelectionCriterion::getCriterionState() const
62{
63 return _iState;
64}
65
66// Name
67string CSelectionCriterion::getCriterionName() const
68{
69 return getName();
70}
71
72// Type
73const ISelectionCriterionTypeInterface* CSelectionCriterion::getCriterionType() const
74{
75 return _pType;
76}
77
78/// Observer
79void CSelectionCriterion::setObserver(ISelectionCriterionObserver* pSelectionCriterionObserver)
80{
81 _pObserver = pSelectionCriterionObserver;
82}
83
84/// Match methods
Patrick Benavoli6ba361d2011-08-31 11:23:24 +020085bool CSelectionCriterion::is(int iState) const
Patrick Benavoli68a91282011-08-31 11:23:23 +020086{
87 return _iState == iState;
88}
89
Patrick Benavoli6ba361d2011-08-31 11:23:24 +020090bool CSelectionCriterion::isNot(int iState) const
91{
92 return _iState != iState;
93}
94
95bool CSelectionCriterion::includes(int iState) const
Patrick Benavoli68a91282011-08-31 11:23:23 +020096{
97 return (_iState & iState) != 0;
98}
Patrick Benavoli6ba361d2011-08-31 11:23:24 +020099
100bool CSelectionCriterion::excludes(int iState) const
101{
102 return (_iState & iState) == 0;
103}
104
105/// User request
106string CSelectionCriterion::getFormattedDescription(bool bWithTypeInfo) const
107{
108 string strFormattedDescription;
109
110 if (bWithTypeInfo) {
111
112 // Display type info
113 appendTitle(strFormattedDescription, getName() + ":");
114
115 // States
116 strFormattedDescription += "Possible states ";
117
118 // Type Kind
119 strFormattedDescription += "(";
120 strFormattedDescription += _pType->isTypeInclusive() ? "Inclusive" : "Exclusive";
121 strFormattedDescription += "): ";
122
123 // States
124 strFormattedDescription += _pType->listPossibleValues() + "\n";
125
126 // Current State
127 strFormattedDescription += "Current state";
128 } else {
129 // Name only
130 strFormattedDescription = getName();
131 }
132
133 // Current State
134 strFormattedDescription += " = " + _pType->getFormattedState(_iState);
135
136 return strFormattedDescription;
137}