sc::PrefixKeyVal(3)

NAME
sc::PrefixKeyVal -

PrefixKeyVal is a KeyVal that searches a different KeyVal using modified keys'.

SYNOPSIS

#include <keyval.h>

Inherits sc::KeyVal'.

  Public Member Functions
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'.

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)

Detailed Description

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
      )
    )

Author

Generated automatically by Doxygen for MPQC from the source code'.