Teuchos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Teuchos_ParameterEntry.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 
10 #include "Teuchos_ParameterEntry.hpp" // class definition
11 #include "Teuchos_ParameterList.hpp" // for sublists
12 #include "Teuchos_TwoDArray.hpp"
13 
14 
15 namespace Teuchos {
16 
17 
19  isUsed_(false),
20  isDefault_(false)
21 {}
22 
23 
25 {
26  operator=(source);
27 }
28 
29 
31 {
32  if (&source == this)
33  return *this;
34 
35  val_ = source.val_;
36  isUsed_ = source.isUsed_;
37  isDefault_ = source.isDefault_;
38  docString_ = source.docString_;
39  validator_ = source.validator_;
40 
41  return *this;
42 }
43 
45  : val_(std::move(other.val_)),
46  isUsed_(other.isUsed_),
47  isDefault_(other.isDefault_),
48  docString_(std::move(other.docString_)),
49  validator_(std::move(other.validator_))
50 {}
51 
53 {
54  if(this != &other)
55  {
56  this->val_ = std::move(other.val_);
57  this->isUsed_ = other.isUsed_;
58  this->isDefault_ = other.isDefault_;
59  this->docString_ = std::move(other.docString_);
60  this->validator_ = std::move(other.validator_);
61  }
62  return *this;
63 }
64 
66  const any &value_in, bool isDefault_in
67  )
68 {
69  val_ = value_in;
70  isDefault_ = isDefault_in;
71  validator_ = null;
72  isUsed_ = false;
73  docString_ = "";
74 }
75 
76 
78  RCP<const ParameterEntryValidator> const& validator_in
79  )
80 {
81  validator_ = validator_in;
82 }
83 
84 
85 void ParameterEntry::setDocString(const std::string &docString_in)
86 {
87  docString_ = docString_in;
88 }
89 
90 
92  bool isDefault_in, const std::string &docString_in
93  )
94 {
95  val_ = ParameterList();
96  isDefault_ = isDefault_in;
97  isUsed_ = true;
98  docString_ = docString_in;
99  return any_cast<ParameterList>( val_ );
100 }
101 
102 
104 {
105  return ( !val_.has_value() ? false : val_.type() == typeid(ParameterList) );
106 }
107 
108 std::ostream& ParameterEntry::leftshift(std::ostream& os, bool printFlags) const
109 {
110  if( !this->isList() ) os << val_;
111 
112  if(printFlags) {
113  if (isDefault_)
114  os << " [default]";
115  else if (!isUsed_)
116  os << " [unused]";
117  }
118 
119  return os;
120 }
121 
123  std::string formatString = getTwoDArrayTypeNameTraitsFormat();
124  size_t starPos = formatString.find("*");
125  std::string prefix = formatString.substr(0,starPos);
126  std::string postfix = formatString.substr(starPos+1);
127  std::string valueTypeName = val_.typeName();
128  size_t prePos = valueTypeName.find(prefix);
129  size_t postPos = valueTypeName.find(postfix);
130  return (prePos != std::string::npos) && (prePos==0)
131  && (postPos != std::string::npos) && (prePos < postPos);
132 }
133 
135  std::string formatString = getArrayTypeNameTraitsFormat();
136  size_t starPos = formatString.find("*");
137  std::string prefix = formatString.substr(0,starPos);
138  std::string postfix = formatString.substr(starPos+1);
139  std::string valueTypeName = val_.typeName();
140  size_t prePos = valueTypeName.find(prefix);
141  size_t postPos = valueTypeName.find(postfix);
142  return (prePos != std::string::npos) && (prePos==0)
143  && (postPos != std::string::npos) && (prePos < postPos);
144 }
145 
146 
147 // private
148 
149 
151 {
152  //delete val_;
153  isUsed_ = false;
154  isDefault_ = false;
155 }
156 
157 
158 } // namespace Teuchos
159 
160 
A thin wrapper around the Teuchos Array class that allows for 2 dimensional arrays.
Object held as the &quot;value&quot; in the Teuchos::ParameterList std::map.
void setDocString(const std::string &docString)
Set the documentation std::string.
ParameterEntry()
Default Constructor.
void setValidator(RCP< const ParameterEntryValidator > const &validator)
Set the validator.
bool isDefault_
Was this parameter a default value assigned by a &quot;get&quot; function?
std::ostream & leftshift(std::ostream &os, bool printFlags=true) const
Output a non-list parameter to the given output stream.
This object is held as the &quot;value&quot; in the Teuchos::ParameterList std::map.
bool isArray() const
Test if the type of data being contained is a Teuchos::Array.
bool has_value() const
Checks whether the object contains a value.
void setAnyValue(const any &value, bool isDefault=false)
Set the value as an any object.
Modified boost::any class, which is a container for a templated value.
ParameterList & setList(bool isDefault=false, const std::string &docString="")
Create a parameter entry that is an empty list.
Templated Parameter List class.
std::string docString_
Optional documentation field.
any val_
Templated Datatype.
bool isList() const
Return whether or not the value itself is a list.
A list of parameters of arbitrary type.
RCP< const ParameterEntryValidator > validator_
Optional validator object.
ParameterEntry & operator=(const ParameterEntry &source)
Replace the current parameter entry with source.
bool isTwoDArray() const
Test if the type of data being contained is a Teuchos::TwoDArray.
void reset()
Reset the entry.
std::string typeName() const
Return the name of the type.
Smart reference counting pointer class for automatic garbage collection.
const std::type_info & type() const
Return the type of value being stored.
bool isUsed_
Has this parameter been accessed by a &quot;get&quot; function?