3#include "mspass/utility/BasicMetadata.h"
4#include "mspass/utility/MsPASSError.h"
5#include <boost/any.hpp>
10#include <pybind11/pybind11.h>
35 std::string pretty_name(boost::core::demangle(Texpected));
36 ss <<
"Error trying to extract Metadata with key=" << key << std::endl
37 <<
"No value associated with this key is set in Metadata object"
39 <<
"Expected an entry of type=" << pretty_name << std::endl;
41 badness = ErrorSeverity::Suspect;
50 const char *Texpected,
const char *Tactual) {
51 ss <<
"Error in Metadata get method. Type mismatch in attempt to get "
52 <<
"data with key=" << key << std::endl
53 <<
"boost::any bad_any_cast wrote this message: " << std::endl
54 << boostmessage << std::endl;
55 std::string name_e(boost::core::demangle(Texpected));
56 ss <<
"Trying to convert to data of type=" << name_e << std::endl;
57 std::string name_a(boost::core::demangle(Tactual));
58 ss <<
"Actual entry has type=" << name_a << std::endl;
60 badness = ErrorSeverity::Suspect;
69 const char *Tactual,
const std::string detail) {
70 ss <<
"Error in Metadata get method. Type mismatch in attempt to get "
71 <<
"data with key=" << key << std::endl;
72 std::string name_e(boost::core::demangle(Texpected));
73 ss <<
"Trying to convert to data of type=" << name_e << std::endl;
74 std::string name_a(boost::core::demangle(Tactual));
75 ss <<
"Actual entry has type=" << name_a << std::endl;
76 ss << detail << std::endl;
78 badness = ErrorSeverity::Suspect;
87 if (
this != &parent) {
119 Metadata(std::ifstream &ifs,
const std::string form = std::string(
"pf"));
161 double get_double(
const std::string key)
const override;
169 int get_int(
const std::string key)
const override;
177 long get_long(
const std::string key)
const;
189 std::string
get_string(
const std::string key)
const override {
206 bool get_bool(
const std::string
key)
const override;
222 template <
typename T>
T get(
const std::string
key)
const;
237 template <
typename T>
T get(
const char *
key)
const {
257 std::map<std::string, boost::any>::const_iterator
iptr;
270 std::string
type(
const std::string
key)
const;
277 template <
typename T>
void put(
const std::string
key,
T val)
noexcept {
287 template <
typename T>
void put(
const char *
key,
T val)
noexcept {
300 void put(
const std::string
key,
const double val)
override {
308 void put(
const std::string
key,
const int val)
override {
316 void put(
const std::string
key,
const bool val)
override {
324 void put(
const std::string
key,
const std::string
val)
override {
393 const std::string
separator = std::string(
":"));
479 std::map<std::string, boost::any>::const_iterator
iptr;
486 result = boost::any_cast<T>(
aval);
487 }
catch (boost::bad_any_cast &
err) {
488 const std::type_info &
ti =
aval.type();
512std::string demangled_name(
const boost::any
val);
548typedef std::list<Metadata_typedef> MetadataList;
575 const MetadataList &
mdlist);
597std::string serialize_metadata(
const Metadata &
md);
609Metadata restore_serialized_metadata(
const std::string
sd);
Base class for error object thrown by MsPASS library routines.
Definition MsPASSError.h:38
std::string message
Definition MsPASSError.h:108
ErrorSeverity badness
Definition MsPASSError.h:110