From b694349f09630e17ec9f86856dbd0606bf090347 Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Tue, 16 Jan 2018 09:25:57 +0100 Subject: [PATCH] Add type to format definition --- src/h5_utils.hpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/h5_utils.hpp b/src/h5_utils.hpp index 977a8ad..e05df29 100644 --- a/src/h5_utils.hpp +++ b/src/h5_utils.hpp @@ -8,6 +8,12 @@ typedef boost::any h5_value; +enum NODE_TYPE { + ATTRIBUTE, + DATASET, + GROUP +}; + enum DATA_TYPE { NX_FLOAT, NX_CHAR, @@ -24,8 +30,10 @@ enum DATA_LOCATION { struct h5_base { - h5_base(std::string name) : name(name){}; + h5_base(std::string name, NODE_TYPE node_type) : name(name), node_type(node_type){}; + virtual ~h5_base(){}; std::string name; + NODE_TYPE node_type; }; struct h5_data_base{ @@ -34,25 +42,25 @@ struct h5_data_base{ DATA_LOCATION data_location; }; -struct h5_parent{ - h5_parent(std::list items) : items(items) {}; +struct h5_parent: public h5_base{ + h5_parent(std::string name, NODE_TYPE node_type, std::list items) : h5_base(name, node_type), items(items) {}; std::list items; }; -struct h5_group : public h5_base, public h5_parent { - h5_group(std::string name, std::list items) : h5_base(name), h5_parent(items) {}; +struct h5_group : public h5_parent { + h5_group(std::string name, std::list items) : h5_parent(name, GROUP, items) {}; }; -struct h5_dataset : public h5_base, public h5_parent, public h5_data_base{ +struct h5_dataset : public h5_parent, public h5_data_base{ h5_dataset(std::string name, std::string value, DATA_TYPE data_type, std::list items={}) - : h5_base(name), h5_parent(items), h5_data_base(data_type, REFERENCE), value(value) {}; + : h5_parent(name, DATASET, items), h5_data_base(data_type, REFERENCE), value(value) {}; std::string value; }; struct h5_attr : public h5_base, public h5_data_base { h5_attr(std::string name, h5_value value, DATA_TYPE data_types, DATA_LOCATION data_location=IMMEDIATE) - : h5_base(name), h5_data_base(data_types, data_location), value(value){}; + : h5_base(name, ATTRIBUTE), h5_data_base(data_types, data_location), value(value){}; h5_value value; };