Teuchos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Teuchos_StandardConditions.cpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Teuchos: Common Tools Package
4 //
5 // Copyright 2004 NTESS and the Teuchos contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
11 
12 namespace Teuchos{
13 
15  parameterEntry_(parameter)
16 {
19  "Parameter conditions can't be given a null parameter" <<
20  std::endl << std::endl);
21 }
22 
25 {
27  toReturn.insert(getParameter());
28  return toReturn;
29 }
30 
31 BoolLogicCondition::BoolLogicCondition(ConstConditionList& conditions):
32  conditions_(conditions)
33 {
36  "You must provide at least one condition "
37  "when you're constructing a BoolLogicCondition. "
38  << std::endl << std::endl <<
39  "Error: Empty condition list given to a BoolLogicCondition "
40  "constructor.");
41 }
42 
43 
45  conditions_.append(toAdd);
46 }
47 
50  bool toReturn = (*it)->isConditionTrue();
51  ++it;
52  for(;it != conditions_.end(); ++it){
53  toReturn = applyOperator(toReturn,(*it)->isConditionTrue());
54  }
55  return toReturn;
56 }
57 
59  for(
61  it!=conditions_.end();
62  ++it)
63  {
64  if((*it)->containsAtLeasteOneParameter()){
65  return true;
66  }
67  }
68  return false;
69 }
70 
75  for(
77  it != conditions_.end();
78  ++it)
79  {
80  currentList = (*it)->getAllParameters();
81  toReturn.insert(currentList.begin(), currentList.end());
82  }
83  return toReturn;
84 }
85 
87  BoolLogicCondition(conditions){}
88 
89 bool OrCondition::applyOperator(bool op1, bool op2) const{
90  return op1 || op2;
91 }
92 
96  return rcp(new OrCondition(dummyList));
97 }
98 
100  BoolLogicCondition(conditions){}
101 
102 bool AndCondition::applyOperator(bool op1, bool op2) const{
103  return op1 && op2;
104 }
105 
109  return rcp(new AndCondition(dummyList));
110 }
111 
113  BoolLogicCondition(conditions){}
114 
115 bool EqualsCondition::applyOperator(bool op1, bool op2) const{
116  return op1 == op2;
117 }
118 
122  return rcp(new EqualsCondition(dummyList));
123 }
124 
126  childCondition_(childCondition)
127 {
130  "OOOOOOOOPppppps! Looks like you tried "
131  "to give me "
132  "a null pointer when you were making a not conditon. "
133  "That's a no no. Go back and "
134  "checkout your not conditions and make sure you didn't "
135  "give any of them a null pointer "
136  "as an argument to the constructor." << std::endl << std::endl <<
137  "Error: Null pointer given to NotCondition constructor.");
138 }
139 
141  return (!childCondition_->isConditionTrue());
142 }
143 
145  return childCondition_->containsAtLeasteOneParameter();
146 }
147 
149  return childCondition_->getAllParameters();
150 }
151 
153  return rcp(new NotCondition(
155 }
156 
158  RCP<const ParameterEntry> parameter,
159  std::string value):
160  ParameterCondition(parameter),
161  values_(ValueList(1,value))
162 {
164 }
165 
167  RCP<const ParameterEntry> parameter,
168  ValueList values):
169  ParameterCondition(parameter),
170  values_(values)
171 {
173 }
174 
176  TEUCHOS_TEST_FOR_EXCEPTION(!getParameter()->isType<std::string>(),
178  "The parameter of a String Condition "
179  "must be of type string." << std::endl <<
180  "Expected type: " << TypeNameTraits<std::string>::name() << std::endl <<
181  "Actual type: " << getParameter()->getAny().typeName() <<
182  std::endl << std::endl);
183 }
184 
185 
187  return find(
188  values_.begin(), values_.end(),
189  getValue<std::string>(*getParameter())) != values_.end();
190 }
191 
193  std::string empty = "";
194  return rcp(new StringCondition(rcp(new ParameterEntry(empty)), empty));
195 }
196 
198  ParameterCondition(parameter)
199 {
200  TEUCHOS_TEST_FOR_EXCEPTION(!getParameter()->isType<bool>(),
202  "The parameter of a Bool Condition "
203  "must be of type " << TypeNameTraits<bool>::name() << std::endl <<
204  "Expected type: Bool" << std::endl <<
205  "Actual type: " << getParameter()->getAny().typeName() <<
206  std::endl << std::endl);
207 }
208 
210  return getValue<bool>(*getParameter());
211 }
212 
214  return rcp(new BoolCondition(rcp(new ParameterEntry(true))));
215 }
216 
217 
218 } //namespace Teuchos
219 
A Bool Logic Condition that returns the result or perfroming a logical OR on the conditions.
EqualsCondition(ConstConditionList &conditions)
Constructs an Equals Condition.
Array< T > & append(const T &x)
Add a new entry at the end of the array.
std::string typeName(const T &t)
Template function for returning the concrete type name of a passed-in object.
static RCP< T > getDummyObject()
Retrieves a dummy object of type T.
std::set< RCP< const ParameterEntry >, RCPConstComp > ConstParameterEntryList
A list of dependents.
BoolLogicCondition(ConstConditionList &conditions)
Constructs a BoolLogicCondition.
Dependency::ConstParameterEntryList getAllParameters() const
This object is held as the &quot;value&quot; in the Teuchos::ParameterList std::map.
bool is_null(const std::shared_ptr< T > &p)
Returns true if p.get()==NULL.
A Bool Logic Condition that returns the result or perfroming a logical AND on the conditions...
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
A Not condition returns the result of performing a logical NOT on a given condition.
void checkParameterType()
Ensures the parameter is the proper type. In this case a string.
ParameterCondition(RCP< const ParameterEntry > parameter)
Constructs a Parameter Condition.
RCP< const Condition > childCondition_
NotCondition(RCP< const Condition > condition)
Constructs a Not Condition.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
A String Condition is a Parameter Condition that evaluates whether or not a string parameter has take...
bool applyOperator(bool op1, bool op2) const
AndCondition(ConstConditionList &conditions)
Constructs an And Condition.
A Bool Logic Condition that returns the result or perfroming a logical EQUALS on the conditions...
Dependency::ConstParameterEntryList getAllParameters() const
std::vector< T >::const_iterator const_iterator
The type of a const forward iterator.
A Bool Condition is a Parameter Condition that evaluates whether or not a Boolean parameter is ture...
Default traits class that just returns typeid(T).name().
virtual bool applyOperator(bool op1, bool op2) const =0
Applies a Bool Logic operator to two operands and returns the result.
Class for retrieving a dummy object of type T.
size_type size() const
An abstract parent class for all Bool Logic Conditions.
OrCondition(ConstConditionList &conditions)
Constructs an Or Condition.
RCP< const ParameterEntry > getParameter() const
Gets a const pointer to the Parameter being evaluated by this ParameterCondition. ...
bool applyOperator(bool op1, bool op2) const
Smart reference counting pointer class for automatic garbage collection.
StringCondition(RCP< const ParameterEntry > parameter, std::string value)
Constructs a String Condition.
An Abstract Base class for all ParameterConditions.
iterator begin()
Dependency::ConstParameterEntryList getAllParameters() const
Gets all of the parameters that are evaluated in this condition.
bool applyOperator(bool op1, bool op2) const
BoolCondition(RCP< const ParameterEntry > parameter)
Constructs a Bool Condition.
void addCondition(RCP< const Condition > toAdd)
Adds a Condition to the list of conditions that will be evaluated by this Bool Logic Condition...
Standard Conditions to be used.
Replacement for std::vector that is compatible with the Teuchos Memory Management classes...