sc::PrefixKeyVal(3) | MPQC | sc::PrefixKeyVal(3) |
sc::PrefixKeyVal - PrefixKeyVal is a KeyVal that searches a different KeyVal using modified keys.
#include <keyval.h>
Inherits sc::KeyVal.
Constructors.
Construct a PrefixKeyVal, using the given prefix and indices.
PrefixKeyVal (const Ref< KeyVal > &, int i)
PrefixKeyVal (const Ref< KeyVal > &, int i, int
j)
PrefixKeyVal (const Ref< KeyVal > &, int i, int
j, int k)
PrefixKeyVal (const Ref< KeyVal > &, int i, int
j, int k, int l)
PrefixKeyVal (const Ref< KeyVal > &, const char
*prefix)
PrefixKeyVal (const Ref< KeyVal > &, const char
*prefix, int i)
PrefixKeyVal (const Ref< KeyVal > &, const char
*prefix, int i, int j)
PrefixKeyVal (const Ref< KeyVal > &, const char
*prefix, int i, int j, int k)
PrefixKeyVal (const Ref< KeyVal > &, const char
*prefix, int i, int j, int k, int l)
~PrefixKeyVal ()
void errortrace (std::ostream &fp=ExEnv::err0())
Write a message to fp describing the error. void dump (std::ostream
&fp=ExEnv::err0())
Write a message to fp describing the error.
PrefixKeyVal is a KeyVal that searches a different KeyVal using modified keys.
This is convenient for reading keys grouped together with a common prefix. Consider the following code:
sc::Ref<sc::KeyVal> keyval = new sc::PrefixKeyVal('A',original_keyval); int r = keyval->intvalue('x');
This code will assign to r the value associated with 'x' in keyval. keyval
will search for 'x' by searching for 'A::x' in original_keyval.
This class is important for implementing constructors that take KeyVal arguments. When an object is being constructed from a KeyVal, it may contain another object that must be constructed from a KeyVal. In order to let the sub-object read the correct keywords from the KeyVal, without knowledge of the containing objects keyword prefix, a PrefixKeyVal can be constructed. For example, the code
class A: public DescribedClass {
double f0_;
public:
A(const Ref<KeyVal> &keyval): f0_(keyval->doublevalue("f0")) {} } class B: public DescribedClass {
double f1_;
Ref<A> a_;
public:
B(const Ref<KeyVal> &keyval):
f1_(keyval->doublevalue("f1")),
a_(new PrefixKeyVal(keyval,"a"))
{} };
can be used to read ParsedKeyVal input that looks like
b<B>: (
f1 = 1.0
a<A>: (
f0 = 2.0
) )
Generated automatically by Doxygen for MPQC from the source code.
Sun Oct 4 2020 | Version 2.3.1 |