56#include "Marshaller.h"
58#include "UnMarshaller.h"
60#include "D4Attributes.h"
61#include "D4StreamMarshaller.h"
62#include "D4StreamUnMarshaller.h"
66#include "InternalErr.h"
68#include "dods-limits.h"
102BaseType *Byte::ptr_duplicate() {
return new Byte(*
this); }
104Byte &Byte::operator=(
const Byte &rhs) {
107 BaseType::operator=(rhs);
123#if USE_LOCAL_TIMEOUT_SCHEME
131#if USE_LOCAL_TIMEOUT_SCHEME
148void Byte::compute_checksum(
Crc32 &checksum) { checksum.
AddData(
reinterpret_cast<uint8_t *
>(&d_buf),
sizeof(d_buf)); }
178 throw InternalErr(
"the incoming pointer does not contain any data.");
180 d_buf = *(dods_byte *)val;
185unsigned int Byte::buf2val(
void **val) {
192 *val =
new dods_byte;
194 *(dods_byte *)*val = d_buf;
214void Byte::print_val(FILE *out,
string space,
bool print_decl_p) {
217 fwrite(oss.str().data(),
sizeof(
char), oss.str().length(), out);
220void Byte::print_val(ostream &out,
string space,
bool print_decl_p) {
222 print_decl(out, space,
false);
223 out <<
" = " << (int)d_buf <<
";\n";
228bool Byte::ops(BaseType *b,
int op) {
231 if (!
read_p() && !read()) {
237 throw InternalErr(
"This value not read!");
240 if (!b || !(b->read_p() || b->read())) {
246 throw InternalErr(
"This value not read!");
281 throw Error(malformed_expr,
"Relational operators can only compare compatible types (number, string).");
283 throw Error(malformed_expr,
"Relational operators only work with scalar types.");
303 DBG(cerr << __func__ <<
"() - BEGIN" << endl;);
304 vector<BaseType *> *vec = BaseType::transform_to_dap2(parent_attr_table);
305 if (vec->size() != 1) {
307 oss << __func__ <<
"() - Something Bad Happened. This transform should produce only ";
308 oss <<
" a single BaseType yet it produced " << vec->size();
309 throw Error(internal_error, oss.str());
313 DBG(cerr << __func__ <<
"() - type(): " << type() << endl;);
314 DBG(cerr << __func__ <<
"() - dest->type(): " << dest->type() << endl;);
319 if (type() != dods_byte_c) {
320 dest->set_type(dods_byte_c);
322 DBG(dest->get_attr_table().print(cerr););
324 DBG(cerr << __func__ <<
"() - END" << endl;);
337 strm << DapIndent::LMarg <<
"Byte::dump - (" << (
void *)
this <<
")" << endl;
339 BaseType::dump(strm);
340 strm << DapIndent::LMarg <<
"value: " << d_buf << endl;
341 DapIndent::UnIndent();
void AddData(const uint8_t *pData, const uint32_t length)
Contains the attributes for a dataset.
bool d4_ops(BaseType *b, int op) override
Byte(const string &n)
The Byte constructor.
bool deserialize(UnMarshaller &um, DDS *, bool) override
Deserialize the char on stdin and put the result in _BUF.
void dump(ostream &strm) const override
dumps information about this object
virtual dods_byte value() const
unsigned int val2buf(void *val, bool reuse=false) override
virtual bool set_value(const dods_byte value)
std::vector< BaseType * > * transform_to_dap2(AttrTable *parent_attr_table) override
DAP4 to DAP2 transform.
bool serialize(ConstraintEvaluator &eval, DDS &dds, Marshaller &m, bool ce_eval) override
Evaluate a constraint expression.
bool eval_selection(DDS &dds, const std::string &dataset)
Evaluate a boolean-valued constraint expression. This is main method for the evaluator and is called ...
Marshaller that knows how to marshal/serialize dap data objects to a C++ iostream using DAP4's receiv...
Read data from the stream made by D4StreamMarshaller.
A class for error processing.
Holds a 32-bit floating point value.
Holds a 64-bit (double precision) floating point value.
Holds a 16-bit signed integer value.
Holds a 32-bit signed integer.
Holds a64-bit signed integer.
Holds an 8-bit signed integer value.
A class for software fault reporting.
abstract base class used to marshal/serialize dap data objects
Holds an unsigned 16-bit integer.
Holds a 32-bit unsigned integer.
Holds a 64-bit unsigned integer.
abstract base class used to unmarshall/deserialize dap data objects
top level DAP object to house generic methods
virtual bool read_p()
Has this variable been read?
bool Cmp(int op, T1 v1, T2 v2)
virtual unsigned int width(bool constrained=false) const
Returns the width of the data, in bytes.
virtual void print_val(FILE *out, string space="", bool print_decl_p=true)
Prints the value of the variable.
virtual string dataset() const
Returns the name of the dataset used to create this instance.