keyval.h File Reference
#include <array>
#include <cassert>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <stdexcept>
#include <string>
#include <vector>
#include <boost/core/demangle.hpp>
#include "mpqc/mpqc_config.h"
#include <boost/property_tree/info_parser.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/serialization/export.hpp>
#include "mpqc/util/core/exenv.h"
#include "mpqc/util/keyval/fwd.h"
#include "mpqc/util/meta/predicates.h"
#include "mpqc/util/meta/stream.h"
Include dependency graph for keyval.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  boost::property_tree::customize_stream< Ch, Traits, E *, void >
 
class  mpqc::DescribedClass
 
struct  mpqc::DescribedClass::registrar< T, typename >
 
class  mpqc::KeyVal
 KeyVal specifies C++ primitive data (booleans, integers, reals, string) and user-defined objects obtained from JSON/XML/INFO input or by programmatic construction. More...
 
struct  mpqc::KeyVal::dummy_validator_t
 
struct  mpqc::KeyVal::is_nonnegative_t
 
struct  mpqc::KeyVal::is_positive_t
 
struct  mpqc::KeyVal::bad_input
 KeyVal exception. More...
 
class  mpqc::detail::SubTreeKeyVal
 
struct  mpqc::detail::make_list_error
 

Namespaces

 boost
 
 boost::property_tree
 
 mpqc
 The top-level namespace for all Massively Parallel Quantum Chemistry package.
 
 mpqc::detail
 

Macros

#define MPQC_CLASS_REGISTER_GUID(K, ...)
 
#define MPQC_BOOST_CLASS_EXPORT_KEY2(K, ...)
 
#define MPQC_CLASS_EXPORT_KEY2(K, ...)
 Associates a key (character string) with a class using and register the class's KeyVal constructor with DescribedClass's registry. This does not register class with Boost.Serialization, use MPQC_BOOST_CLASS_EXPORT_KEY2 for that. More...
 
#define MPQC_CLASS_EXPORT_KEY(...)    MPQC_CLASS_EXPORT_KEY2(BOOST_PP_STRINGIZE(__VA_ARGS__), __VA_ARGS__)
 Associates a key (character string) with a class and register the class's KeyVal constructor with DescribedClass's registry. This does not register class with Boost.Serialization, use MPQC_BOOST_CLASS_EXPORT_KEY2 for that. More...
 
#define MPQC_BOOST_CLASS_EXPORT_IMPLEMENT(...)
 Forces the class instantiation so that it can be deserialized with Boost.Serialization. More...
 

Typedefs

template<typename T >
using mpqc::Describable = std::is_base_of< DescribedClass, std::decay_t< T > >
 

Functions

template<typename T >
const char * mpqc::detail::guid ()
 
KeyVal mpqc::operator+ (const KeyVal &first, const KeyVal &second)
 
template<typename KV >
KV mpqc::detail::kv_append (KV &&kv)
 
template<typename KV , typename Key , typename Value , typename... RestOfArgs>
KV mpqc::detail::kv_append (KV &&kv, Key &&key, Value &&value, RestOfArgs &&... rest_of_args)
 
template<typename T , typename... Args>
mpqc::detail::get_list_t (int, std::initializer_list< T >)
 
template<typename... Args>
make_list_error mpqc::detail::get_list_t (short, make_list_error)
 
std::string mpqc::detail::dump (const KeyVal &kv)
 creates a string representation of a KeyVal object useful for debugging More...
 
KeyVal mpqc::make_kv ()
 make an empty KeyVal More...
 
template<typename... Args>
std::enable_if_t< sizeof...(Args) % 2==1, KeyVal > mpqc::make_kv (Args &&... args)
 report an error if make_kv receives an odd number of arguments More...
 
template<typename Key , typename Value , typename... RestOfArgs>
KeyVal mpqc::make_kv (Key &&key, Value &&value, RestOfArgs &&... rest_of_args)
 
template<typename... Args>
auto mpqc::make_list (Args &&... args)