1 #ifndef teca_cf_time_axis_data_h
2 #define teca_cf_time_axis_data_h
4 #include "teca_dataset.h"
5 #include "teca_variant_array.h"
6 #include "teca_metadata.h"
12 #include "teca_shared_object.h"
22 TECA_DATASET_NEW_INSTANCE()
23 TECA_DATASET_NEW_COPY()
27 using elem_t = std::pair<p_teca_variant_array, teca_metadata>;
31 void transfer(
unsigned long file_id, elem_t &&data);
34 elem_t &get(
unsigned long file_id);
35 const elem_t &get(
unsigned long file_id)
const;
40 {
return elem.second; }
44 {
return elem.second; }
48 p_teca_variant_array get_variant_array(elem_t &elem)
49 {
return elem.first; }
52 const_p_teca_variant_array get_variant_array(
const elem_t &elem)
53 {
return elem.first; }
56 void append(
const const_p_teca_dataset &other);
57 void shallow_append(
const const_p_teca_dataset &other);
60 std::string get_class_name()
const override
61 {
return "teca_cf_time_axis_data"; }
64 int get_type_code()
const override;
68 explicit operator bool()
const noexcept
69 {
return !this->empty(); }
72 bool empty()
const noexcept
override;
80 int to_stream(std::ostream &)
const override;
81 int from_stream(std::istream &)
override;
85 void copy(
const const_p_teca_dataset &other)
override;
88 void copy(
const const_p_teca_cf_time_axis_data &other,
89 unsigned long first_row,
unsigned long last_row);
91 void shallow_copy(
const p_teca_dataset &other)
override;
94 void swap(p_teca_dataset &other)
override;
104 using internals_t = std::map<unsigned long, elem_t>;
105 internals_t *internals;