blob: 7f2809a5db5884be666d28c77306360bf46446c8 [file] [log] [blame]
Kevin Rocard93250d12012-07-19 17:48:30 +02001/*
Patrick Benavoli68a91282011-08-31 11:23:23 +02002 * INTEL CONFIDENTIAL
3 * Copyright © 2011 Intel
4 * Corporation All Rights Reserved.
5 *
6 * The source code contained or described herein and all documents related to
7 * the source code ("Material") are owned by Intel Corporation or its suppliers
8 * or licensors. Title to the Material remains with Intel Corporation or its
9 * suppliers and licensors. The Material contains trade secrets and proprietary
10 * and confidential information of Intel or its suppliers and licensors. The
11 * Material is protected by worldwide copyright and trade secret laws and
12 * treaty provisions. No part of the Material may be used, copied, reproduced,
13 * modified, published, uploaded, posted, transmitted, distributed, or
14 * disclosed in any way without Intel’s prior express written permission.
15 *
16 * No license under any patent, copyright, trade secret or other intellectual
17 * property right is granted to or conferred upon you by disclosure or delivery
18 * of the Materials, either expressly, by implication, inducement, estoppel or
19 * otherwise. Any license under such intellectual property rights must be
20 * express and approved by Intel in writing.
21 *
Patrick Benavoli68a91282011-08-31 11:23:23 +020022 * CREATED: 2011-06-01
23 * UPDATED: 2011-07-27
Patrick Benavoli68a91282011-08-31 11:23:23 +020024 */
25#include "SelectionCriterion.h"
Patrick Benavolib71ccf72011-09-13 14:15:52 +020026#include "AutoLog.h"
Patrick Benavoli68a91282011-08-31 11:23:23 +020027
28#define base CElement
29
Patrick Benavolib71ccf72011-09-13 14:15:52 +020030CSelectionCriterion::CSelectionCriterion(const string& strName, const CSelectionCriterionType* pType) : base(strName), _iState(0), _pType(pType)
Patrick Benavoli68a91282011-08-31 11:23:23 +020031{
32}
33
34string CSelectionCriterion::getKind() const
35{
36 return "SelectionCriterion";
37}
38
39/// From ISelectionCriterionInterface
40// State
Patrick Benavolib71ccf72011-09-13 14:15:52 +020041void CSelectionCriterion::setCriterionState(int iState)
Patrick Benavoli68a91282011-08-31 11:23:23 +020042{
43 // Check for a change
44 if (_iState != iState) {
45
46 _iState = iState;
Patrick Benavoli63499d42011-10-24 18:50:03 +020047
48 log("Selection criterion changed event: %s", getFormattedDescription(false).c_str());
Patrick Benavoli68a91282011-08-31 11:23:23 +020049 }
50}
51
52int CSelectionCriterion::getCriterionState() const
53{
54 return _iState;
55}
56
57// Name
58string CSelectionCriterion::getCriterionName() const
59{
60 return getName();
61}
62
63// Type
64const ISelectionCriterionTypeInterface* CSelectionCriterion::getCriterionType() const
65{
66 return _pType;
67}
68
Patrick Benavoli68a91282011-08-31 11:23:23 +020069/// Match methods
Patrick Benavoli6ba361d2011-08-31 11:23:24 +020070bool CSelectionCriterion::is(int iState) const
Patrick Benavoli68a91282011-08-31 11:23:23 +020071{
72 return _iState == iState;
73}
74
Patrick Benavoli6ba361d2011-08-31 11:23:24 +020075bool CSelectionCriterion::isNot(int iState) const
76{
77 return _iState != iState;
78}
79
80bool CSelectionCriterion::includes(int iState) const
Patrick Benavoli68a91282011-08-31 11:23:23 +020081{
82 return (_iState & iState) != 0;
83}
Patrick Benavoli6ba361d2011-08-31 11:23:24 +020084
85bool CSelectionCriterion::excludes(int iState) const
86{
87 return (_iState & iState) == 0;
88}
89
90/// User request
91string CSelectionCriterion::getFormattedDescription(bool bWithTypeInfo) const
92{
93 string strFormattedDescription;
94
95 if (bWithTypeInfo) {
96
97 // Display type info
98 appendTitle(strFormattedDescription, getName() + ":");
99
100 // States
101 strFormattedDescription += "Possible states ";
102
103 // Type Kind
104 strFormattedDescription += "(";
105 strFormattedDescription += _pType->isTypeInclusive() ? "Inclusive" : "Exclusive";
106 strFormattedDescription += "): ";
107
108 // States
109 strFormattedDescription += _pType->listPossibleValues() + "\n";
110
111 // Current State
112 strFormattedDescription += "Current state";
113 } else {
114 // Name only
115 strFormattedDescription = getName();
116 }
117
118 // Current State
119 strFormattedDescription += " = " + _pType->getFormattedState(_iState);
120
121 return strFormattedDescription;
122}