1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
#ifndef TARG_PREDICATECTM_H
#define TARG_PREDICATECTM_H
/**
* @file predicatectm.H
*
* @brief Interface for a predicate which fiters a target based on its class,
* type, and model.
*/
//******************************************************************************
// Includes
//******************************************************************************
// STD
// Other Host Boot Components
// Targeting Component
#include <targeting/target.H>
#include <targeting/attributeenums.H>
#include <targeting/predicates/predicatebase.H>
//******************************************************************************
// Macros
//******************************************************************************
#undef TARG_NAMESPACE
#undef TARG_CLASS
#undef TARG_FN
//******************************************************************************
// Interface
//******************************************************************************
namespace TARGETING
{
#define TARG_NAMESPACE "TARGETING::"
#define TARG_CLASS "PredicateCTM::"
class Target;
/**
* @brief Predicate class which filters a target based on its class, type,
* and model
*/
class PredicateCTM : public PredicateBase
{
public:
/**
* @brief Create a target class, type, model predicate
*
* @param[in] i_class Class of matching target, default NA (any)
* @param[in] i_type Type of matching target, default NA (any)
* @param[in] i_model Model of matching target, default NA (any)
*/
PredicateCTM(
CLASS i_class = CLASS_NA,
TYPE i_type = TYPE_NA,
MODEL i_model = MODEL_NA);
/**
* @brief Destroy a class, type, model predicate
*/
virtual ~PredicateCTM()
{
#define TARG_FUNC "~PredicateCTM()"
#undef TARG_FUNC
}
/**
* @brief Returns whether target matches the specified class, type,
* model
*
* @par Detailed Description:
* Returns whether target matches the specified class, type, model.
* Note that all three fields are always compared, so wildcards
* (CLASS_NA, TYPE_NA, MODEL_NA) must be used for any fields that
* do not matter. See PredicateBase class for parameter/return
* description.
*/
virtual bool operator()(
const Target* i_pTarget) const;
private:
CLASS iv_class; ///< Class to compare with that of target
TYPE iv_type; ///< Type to compare with that of target
MODEL iv_model; ///< Model to compare with that of target
TARG_DISABLE_COPY_AND_ASSIGNMENT_OPERATORS(PredicateCTM);
};
//******************************************************************************
// PredicateCTM::PredicateCTM
//******************************************************************************
inline PredicateCTM::PredicateCTM(
const CLASS i_class,
const TYPE i_type,
const MODEL i_model)
: iv_class(i_class),
iv_type(i_type),
iv_model(i_model)
{
#define TARG_FUNC "PredicateCTM(...)"
#undef TARG_FUNC
}
#undef TARG_CLASS
#undef TARG_NAMESPACE
} // End namespace TARGETING
#endif // TARG_PREDICATECTM_H
|