sc_PrefixKeyVal

Langue: en

Autres versions - même langue

Version: 338968 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

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.