32#include "dods-datatypes.h"
39class ConstraintEvaluator;
57 friend class D4EnumTest;
69 void m_duplicate(
const D4Enum &src);
70 void m_check_value(int64_t v)
const;
72 unsigned int m_type_width()
const {
73 switch(d_element_type) {
89 assert(!
"illegal type for D4Enum");
97 D4Enum(
const string &
name,
const string &enum_type);
108 BaseType::operator=(rhs);
115 virtual D4EnumDef *enumeration()
const {
return d_enum_def; }
116 virtual void set_enumeration(
D4EnumDef *enum_def);
120 Type element_type() {
return d_element_type; }
121 void set_element_type(
Type type) { d_element_type =
type; }
123 bool is_signed()
const {
return d_is_signed; }
124 void set_is_signed(
Type t);
134 template<
typename T>
void value(T *v)
const {
135 *v =
static_cast<T
>(d_buf);
148 template <
typename T>
void set_value(T v,
bool check_value =
true)
150 if (check_value) m_check_value(v);
151 d_buf =
static_cast<int64_t
>(v);
169 unsigned int width(
bool =
false)
const override
171 return (
int)m_type_width();
174 int64_t width_ll(
bool =
false)
const override
176 return (int64_t)m_type_width();
181 void serialize(D4StreamMarshaller &m, DMR &dmr,
bool filter =
false)
override;
182 void deserialize(D4StreamUnMarshaller &um, DMR &dmr)
override;
184 void print_val(ostream &out,
string space =
"",
bool print_decl_p =
true)
override;
188 bool ops(BaseType *b,
int op)
override;
190 void dump(ostream &strm)
const override;
192 unsigned int val2buf(
void *,
bool);
195 std::vector<BaseType *> *
transform_to_dap2(AttrTable *parent_attr_table)
override;
The basic data type for the DODS DAP types.
virtual string name() const
Returns the name of the class instance.
virtual string dataset() const
Returns the name of the dataset used to create this instance.
virtual Type type() const
Returns the type of the class instance.
Holds a DAP4 enumeration.
void print_xml_writer(XMLWriter &xml, bool constrained) override
std::vector< BaseType * > * transform_to_dap2(AttrTable *parent_attr_table) override
Convert an Enum to a DAP2 int type.
unsigned int buf2val(void **)
Reads the class data.
BaseType * ptr_duplicate() override
void print_val(ostream &out, string space="", bool print_decl_p=true) override
Prints the value of the variable.
unsigned int width(bool=false) const override
Return the number of bytes in an instance of an Enum. This returns the number of bytes an instance of...
void compute_checksum(Crc32 &checksum) override
include the data for this variable in the checksum DAP4 includes a checksum with every data response....
unsigned int val2buf(void *, bool)
Loads class data.
void serialize(D4StreamMarshaller &m, DMR &dmr, bool filter=false) override
Serialize a D4Enum Use the (integer) data type associated with an Enumeration definition to serialize...
void set_value(T v, bool check_value=true)
Set the value of the Enum Template member function to set the value of the Enum. The libdap library c...
void value(T *v) const
Get the value of an Enum Get the value of this instance. The caller is responsible for using a type T...
void dump(ostream &strm) const override
dumps information about this object
void deserialize(D4StreamUnMarshaller &um, DMR &dmr) override
top level DAP object to house generic methods
Type
Identifies the data type.