15 #ifndef DCSIMPLEPARAMETER_H
16 #define DCSIMPLEPARAMETER_H
19 #include "dcParameter.h"
20 #include "dcSubatomicType.h"
21 #include "dcNumericRange.h"
41 virtual bool is_valid()
const;
43 DCSubatomicType get_type()
const;
44 bool has_modulus()
const;
45 double get_modulus()
const;
46 int get_divisor()
const;
49 bool is_numeric_type()
const;
50 bool set_modulus(
double modulus);
51 bool set_divisor(
unsigned int divisor);
58 bool &pack_error,
bool &range_error)
const;
60 bool &pack_error,
bool &range_error)
const;
62 bool &pack_error,
bool &range_error)
const;
64 bool &pack_error,
bool &range_error)
const;
66 bool &pack_error,
bool &range_error)
const;
68 bool &pack_error,
bool &range_error)
const;
71 virtual void unpack_double(
const char *data,
size_t length,
size_t &p,
72 double &value,
bool &pack_error,
bool &range_error)
const;
73 virtual void unpack_int(
const char *data,
size_t length,
size_t &p,
74 int &value,
bool &pack_error,
bool &range_error)
const;
75 virtual void unpack_uint(
const char *data,
size_t length,
size_t &p,
76 unsigned int &value,
bool &pack_error,
bool &range_error)
const;
77 virtual void unpack_int64(
const char *data,
size_t length,
size_t &p,
78 PN_int64 &value,
bool &pack_error,
bool &range_error)
const;
79 virtual void unpack_uint64(
const char *data,
size_t length,
size_t &p,
80 PN_uint64 &value,
bool &pack_error,
bool &range_error)
const;
81 virtual void unpack_string(
const char *data,
size_t length,
size_t &p,
82 string &value,
bool &pack_error,
bool &range_error)
const;
83 virtual bool unpack_validate(
const char *data,
size_t length,
size_t &p,
84 bool &pack_error,
bool &range_error)
const;
85 virtual bool unpack_skip(
const char *data,
size_t length,
size_t &p,
86 bool &pack_error)
const;
88 virtual void output_instance(ostream &out,
bool brief,
const string &prename,
89 const string &name,
const string &postname)
const;
99 unsigned int divisor);
103 DCSubatomicType _type;
104 unsigned int _divisor;
106 DCSubatomicType _nested_type;
108 size_t _bytes_per_element;
115 static NestedFieldMap _nested_field_map;
121 double _orig_modulus;
132 unsigned int _uint_modulus;
133 PN_uint64 _uint64_modulus;
134 double _double_modulus;
virtual int calc_num_nested_fields(size_t length_bytes) const
This flavor of get_num_nested_fields is used during unpacking.
This is our own Panda specialization on the default STL map.
This is a block of data that receives the results of DCPacker.
virtual bool pack_default_value(DCPackData &pack_data, bool &pack_error) const
Packs the field's specified default value (or a sensible default if no value is specified) into the s...
virtual DCPackerInterface * get_nested_field(int n) const
Returns the DCPackerInterface object that represents the nth nested field.
virtual bool do_check_match_simple_parameter(const DCSimpleParameter *other) const
Returns true if this field matches the indicated simple parameter, false otherwise.
This represents a class (or struct) object used as a parameter itself.
This is the most fundamental kind of parameter type: a single number or string, one of the DCSubatomi...
virtual void pack_uint(DCPackData &pack_data, unsigned int value, bool &pack_error, bool &range_error) const
Packs the indicated numeric or string value into the stream.
virtual void unpack_uint(const char *data, size_t length, size_t &p, unsigned int &value, bool &pack_error, bool &range_error) const
Unpacks the current numeric or string value from the stream.
virtual void pack_double(DCPackData &pack_data, double value, bool &pack_error, bool &range_error) const
Packs the indicated numeric or string value into the stream.
virtual void pack_uint64(DCPackData &pack_data, PN_uint64 value, bool &pack_error, bool &range_error) const
Packs the indicated numeric or string value into the stream.
virtual void unpack_int64(const char *data, size_t length, size_t &p, PN_int64 &value, bool &pack_error, bool &range_error) const
Unpacks the current numeric or string value from the stream.
virtual bool do_check_match_array_parameter(const DCArrayParameter *other) const
Returns true if this field matches the indicated array parameter, false otherwise.
virtual void generate_hash(HashGenerator &hashgen) const
Accumulates the properties of this type into the hash.
Represents the type specification for a single parameter within a field specification.
This represents an array of some other kind of object, meaning this parameter type accepts an arbitra...
This class generates an arbitrary hash number from a sequence of ints.
virtual void unpack_uint64(const char *data, size_t length, size_t &p, PN_uint64 &value, bool &pack_error, bool &range_error) const
Unpacks the current numeric or string value from the stream.
virtual void pack_string(DCPackData &pack_data, const string &value, bool &pack_error, bool &range_error) const
Packs the indicated numeric or string value into the stream.
virtual void pack_int(DCPackData &pack_data, int value, bool &pack_error, bool &range_error) const
Packs the indicated numeric or string value into the stream.
virtual void unpack_int(const char *data, size_t length, size_t &p, int &value, bool &pack_error, bool &range_error) const
Unpacks the current numeric or string value from the stream.
virtual bool unpack_skip(const char *data, size_t length, size_t &p, bool &pack_error) const
Increments p to the end of the current field without actually unpacking any data or performing any ra...
virtual void unpack_double(const char *data, size_t length, size_t &p, double &value, bool &pack_error, bool &range_error) const
Unpacks the current numeric or string value from the stream.
virtual void unpack_string(const char *data, size_t length, size_t &p, string &value, bool &pack_error, bool &range_error) const
Unpacks the current numeric or string value from the stream.
virtual void pack_int64(DCPackData &pack_data, PN_int64 value, bool &pack_error, bool &range_error) const
Packs the indicated numeric or string value into the stream.
This defines the internal interface for packing values into a DCField.
virtual bool unpack_validate(const char *data, size_t length, size_t &p, bool &pack_error, bool &range_error) const
Internally unpacks the current numeric or string value and validates it against the type range limits...