This is the most fundamental kind of parameter type: a single number or string, one of the DCSubatomicType elements. More...
#include "dcSimpleParameter.h"
Public Member Functions | |
DCSimpleParameter (DCSubatomicType type, unsigned int divisor=1) | |
DCSimpleParameter (const DCSimpleParameter ©) | |
virtual DCSimpleParameter * | as_simple_parameter () |
virtual const DCSimpleParameter * | as_simple_parameter () const |
virtual int | calc_num_nested_fields (size_t length_bytes) const |
This flavor of get_num_nested_fields is used during unpacking. More... | |
virtual void | generate_hash (HashGenerator &hashgen) const |
Accumulates the properties of this type into the hash. More... | |
int | get_divisor () const |
Returns the divisor associated with this type. More... | |
double | get_modulus () const |
Returns the modulus associated with this type, if any. More... | |
virtual DCPackerInterface * | get_nested_field (int n) const |
Returns the DCPackerInterface object that represents the nth nested field. More... | |
DCSubatomicType | get_type () const |
Returns the particular subatomic type represented by this instance. More... | |
bool | has_modulus () const |
Returns true if there is a modulus associated, false otherwise.,. More... | |
bool | is_numeric_type () const |
Returns true if the type is a numeric type (and therefore can accept a divisor and/or a modulus), or false if it is some string-based type. More... | |
virtual bool | is_valid () const |
Returns false if the type is an invalid type (e.g. More... | |
virtual DCParameter * | make_copy () const |
virtual void | output_instance (std::ostream &out, bool brief, const std::string &prename, const std::string &name, const std::string &postname) const |
Formats the parameter in the C++-like dc syntax as a typename and identifier. More... | |
virtual void | pack_blob (DCPackData &pack_data, const vector_uchar &value, bool &pack_error, bool &range_error) const |
Packs the indicated numeric or string value into the stream. More... | |
virtual bool | pack_default_value (DCPackData &pack_data, bool &pack_error) const |
Packs the simpleParameter's specified default value (or a sensible default if no value is specified) into the stream. More... | |
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. More... | |
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. More... | |
virtual void | pack_int64 (DCPackData &pack_data, int64_t value, bool &pack_error, bool &range_error) const |
Packs the indicated numeric or string value into the stream. More... | |
virtual void | pack_string (DCPackData &pack_data, const std::string &value, bool &pack_error, bool &range_error) const |
Packs the indicated numeric or string value into the stream. More... | |
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. More... | |
virtual void | pack_uint64 (DCPackData &pack_data, uint64_t value, bool &pack_error, bool &range_error) const |
Packs the indicated numeric or string value into the stream. More... | |
bool | set_divisor (unsigned int divisor) |
Assigns the indicated divisor to the simple type. More... | |
bool | set_modulus (double modulus) |
Assigns the indicated modulus to the simple type. More... | |
bool | set_range (const DCDoubleRange &range) |
Sets the parameter with the indicated range. More... | |
virtual void | unpack_blob (const char *data, size_t length, size_t &p, vector_uchar &value, bool &pack_error, bool &range_error) const |
Unpacks the current numeric or string value from the stream. More... | |
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. More... | |
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. More... | |
virtual void | unpack_int64 (const char *data, size_t length, size_t &p, int64_t &value, bool &pack_error, bool &range_error) const |
Unpacks the current numeric or string value from the stream. More... | |
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 range validation. More... | |
virtual void | unpack_string (const char *data, size_t length, size_t &p, std::string &value, bool &pack_error, bool &range_error) const |
Unpacks the current numeric or string value from the stream. More... | |
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. More... | |
virtual void | unpack_uint64 (const char *data, size_t length, size_t &p, uint64_t &value, bool &pack_error, bool &range_error) const |
Unpacks the current numeric or string value from the stream. More... | |
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, but does not return the value. More... | |
Public Member Functions inherited from DCParameter | |
virtual DCParameter * | append_array_specification (const DCUnsignedIntRange &size) |
Returns the type represented by this_type[size]. More... | |
virtual DCArrayParameter * | as_array_parameter () |
virtual const DCArrayParameter * | as_array_parameter () const |
virtual DCClassParameter * | as_class_parameter () |
virtual const DCClassParameter * | as_class_parameter () const |
virtual DCParameter * | as_parameter () |
virtual const DCParameter * | as_parameter () const |
virtual DCSwitchParameter * | as_switch_parameter () |
virtual const DCSwitchParameter * | as_switch_parameter () const |
const DCTypedef * | get_typedef () const |
If this type has been referenced from a typedef, returns the DCTypedef instance, or NULL if the type was declared on-the-fly. More... | |
virtual void | output (std::ostream &out, bool brief) const |
void | output_typedef_name (std::ostream &out, bool brief, const std::string &prename, const std::string &name, const std::string &postname) const |
Formats the instance like output_instance, but uses the typedef name instead. More... | |
void | set_typedef (const DCTypedef *dtypedef) |
Records the DCTypedef object that generated this parameter. More... | |
virtual void | write (std::ostream &out, bool brief, int indent_level) const |
virtual void | write_instance (std::ostream &out, bool brief, int indent_level, const std::string &prename, const std::string &name, const std::string &postname) const |
Formats the parameter in the C++-like dc syntax as a typename and identifier. More... | |
void | write_typedef_name (std::ostream &out, bool brief, int indent_level, const std::string &prename, const std::string &name, const std::string &postname) const |
Formats the instance like write_instance, but uses the typedef name instead. More... | |
Public Member Functions inherited from DCField | |
DCField (const std::string &name, DCClass *dclass) | |
virtual DCAtomicField * | as_atomic_field () |
Returns the same field pointer converted to an atomic field pointer, if this is in fact an atomic field; otherwise, returns NULL. More... | |
virtual const DCAtomicField * | as_atomic_field () const |
Returns the same field pointer converted to an atomic field pointer, if this is in fact an atomic field; otherwise, returns NULL. More... | |
virtual DCField * | as_field () |
virtual const DCField * | as_field () const |
virtual DCMolecularField * | as_molecular_field () |
Returns the same field pointer converted to a molecular field pointer, if this is in fact a molecular field; otherwise, returns NULL. More... | |
virtual const DCMolecularField * | as_molecular_field () const |
Returns the same field pointer converted to a molecular field pointer, if this is in fact a molecular field; otherwise, returns NULL. More... | |
std::string | format_data (const vector_uchar &packed_data, bool show_field_names=true) |
Given a blob that represents the packed data for this field, returns a string formatting it for human consumption. More... | |
DCClass * | get_class () const |
Returns the DCClass pointer for the class that contains this field. More... | |
const vector_uchar & | get_default_value () const |
Returns the default value for this field. More... | |
int | get_number () const |
Returns a unique index number associated with this field. More... | |
bool | has_default_value () const |
Returns true if a default value has been explicitly established for this field, false otherwise. More... | |
bool | is_airecv () const |
Returns true if the "airecv" flag is set for this field, false otherwise. More... | |
bool | is_bogus_field () const |
Returns true if the field has been flagged as a bogus field. More... | |
bool | is_broadcast () const |
Returns true if the "broadcast" flag is set for this field, false otherwise. More... | |
bool | is_clrecv () const |
Returns true if the "clrecv" flag is set for this field, false otherwise. More... | |
bool | is_clsend () const |
Returns true if the "clsend" flag is set for this field, false otherwise. More... | |
bool | is_db () const |
Returns true if the "db" flag is set for this field, false otherwise. More... | |
bool | is_ownrecv () const |
Returns true if the "ownrecv" flag is set for this field, false otherwise. More... | |
bool | is_ownsend () const |
Returns true if the "ownsend" flag is set for this field, false otherwise. More... | |
bool | is_ram () const |
Returns true if the "ram" flag is set for this field, false otherwise. More... | |
bool | is_required () const |
Returns true if the "required" flag is set for this field, false otherwise. More... | |
void | output (std::ostream &out) const |
Write a string representation of this instance to <out>. More... | |
vector_uchar | parse_string (const std::string &formatted_string) |
Given a human-formatted string (for instance, as returned by format_data(), above) that represents the value of this field, parse the string and return the corresponding packed data. More... | |
void | set_class (DCClass *dclass) |
Assigns the class pointer to this field. More... | |
void | set_default_value (vector_uchar default_value) |
Establishes a default value for this field. More... | |
virtual void | set_name (const std::string &name) |
Sets the name of this field. More... | |
void | set_number (int number) |
Assigns the unique number to this field. More... | |
bool | validate_ranges (const vector_uchar &packed_data) const |
Verifies that all of the packed values in the field data are within the specified ranges and that there are no extra bytes on the end of the record. More... | |
void | write (std::ostream &out, int indent_level) const |
Write a string representation of this instance to <out>. More... | |
Public Member Functions inherited from DCPackerInterface | |
DCPackerInterface (const std::string &name=std::string()) | |
DCPackerInterface (const DCPackerInterface ©) | |
bool | check_match (const DCPackerInterface *other) const |
Returns true if the other interface is bitwise the same as this one–that is, a uint32 only matches a uint32, etc. More... | |
bool | check_match (const std::string &description, DCFile *dcfile=nullptr) const |
Returns true if this interface is bitwise the same as the interface described with the indicated formatted string, e.g. More... | |
virtual bool | do_check_match_atomic_field (const DCAtomicField *other) const |
Returns true if this field matches the indicated atomic field, false otherwise. More... | |
virtual bool | do_check_match_class_parameter (const DCClassParameter *other) const |
Returns true if this field matches the indicated class parameter, false otherwise. More... | |
virtual bool | do_check_match_molecular_field (const DCMolecularField *other) const |
Returns true if this field matches the indicated molecular field, false otherwise. More... | |
virtual bool | do_check_match_switch_parameter (const DCSwitchParameter *other) const |
Returns true if this field matches the indicated switch parameter, false otherwise. More... | |
int | find_seek_index (const std::string &name) const |
Returns the index number to be passed to a future call to DCPacker::seek() to seek directly to the named field without having to look up the field name in a table later, or -1 if the named field cannot be found. More... | |
const DCPackerCatalog * | get_catalog () const |
Returns the DCPackerCatalog associated with this field, listing all of the nested fields by name. More... | |
size_t | get_fixed_byte_size () const |
If has_fixed_byte_size() returns true, this returns the number of bytes this field type will use. More... | |
const std::string & | get_name () const |
Returns the name of this field, or empty string if the field is unnamed. More... | |
size_t | get_num_length_bytes () const |
Returns the number of bytes that should be written into the stream on a push() to record the number of bytes in the record up until the next pop(). More... | |
int | get_num_nested_fields () const |
Returns the number of nested fields required by this field type. More... | |
DCPackType | get_pack_type () const |
Returns the type of value expected by this field. More... | |
bool | has_fixed_byte_size () const |
Returns true if this field type always packs to the same number of bytes, false if it is variable. More... | |
bool | has_fixed_structure () const |
Returns true if this field type always has the same structure regardless of the data in the stream, or false if its structure may vary. More... | |
bool | has_nested_fields () const |
Returns true if this field type has any nested fields (and thus expects a push() . More... | |
bool | has_range_limits () const |
Returns true if this field, or any sub-field of this field, has a limit imposed in the DC file on its legal values. More... | |
virtual bool | validate_num_nested_fields (int num_nested_fields) const |
After a number of fields have been packed via push() . More... | |
Public Member Functions inherited from DCKeywordList | |
DCKeywordList (const DCKeywordList ©) | |
bool | add_keyword (const DCKeyword *keyword) |
Adds the indicated keyword to the list. More... | |
void | clear_keywords () |
Removes all keywords from the field. More... | |
bool | compare_keywords (const DCKeywordList &other) const |
Returns true if this list has the same keywords as the other list, false if some keywords differ. More... | |
void | copy_keywords (const DCKeywordList &other) |
Replaces this keyword list with those from the other list. More... | |
void | generate_hash (HashGenerator &hashgen) const |
Accumulates the properties of these keywords into the hash. More... | |
const DCKeyword * | get_keyword (int n) const |
Returns the nth keyword in the list. More... | |
const DCKeyword * | get_keyword_by_name (const std::string &name) const |
Returns the keyword in the list with the indicated name, or NULL if there is no keyword in the list with that name. More... | |
int | get_num_keywords () const |
Returns the number of keywords in the list. More... | |
bool | has_keyword (const std::string &name) const |
Returns true if this list includes the indicated keyword, false otherwise. More... | |
bool | has_keyword (const DCKeyword *keyword) const |
Returns true if this list includes the indicated keyword, false otherwise. More... | |
void | operator= (const DCKeywordList ©) |
void | output_keywords (std::ostream &out) const |
Additional Inherited Members | |
Static Public Member Functions inherited from DCPackerInterface | |
static void | do_pack_float64 (char *buffer, double value) |
static void | do_pack_int16 (char *buffer, int value) |
static void | do_pack_int32 (char *buffer, int value) |
static void | do_pack_int64 (char *buffer, int64_t value) |
static void | do_pack_int8 (char *buffer, int value) |
static void | do_pack_uint16 (char *buffer, unsigned int value) |
static void | do_pack_uint32 (char *buffer, unsigned int value) |
static void | do_pack_uint64 (char *buffer, uint64_t value) |
static void | do_pack_uint8 (char *buffer, unsigned int value) |
static double | do_unpack_float64 (const char *buffer) |
static int | do_unpack_int16 (const char *buffer) |
static int | do_unpack_int32 (const char *buffer) |
static int64_t | do_unpack_int64 (const char *buffer) |
static int | do_unpack_int8 (const char *buffer) |
static unsigned int | do_unpack_uint16 (const char *buffer) |
static unsigned int | do_unpack_uint32 (const char *buffer) |
static uint64_t | do_unpack_uint64 (const char *buffer) |
static unsigned int | do_unpack_uint8 (const char *buffer) |
static void | validate_int64_limits (int64_t value, int num_bits, bool &range_error) |
Confirms that the signed value fits within num_bits bits. More... | |
static void | validate_int_limits (int value, int num_bits, bool &range_error) |
Confirms that the signed value fits within num_bits bits. More... | |
static void | validate_uint64_limits (uint64_t value, int num_bits, bool &range_error) |
Confirms that the unsigned value fits within num_bits bits. More... | |
static void | validate_uint_limits (unsigned int value, int num_bits, bool &range_error) |
Confirms that the unsigned value fits within num_bits bits. More... | |
This is the most fundamental kind of parameter type: a single number or string, one of the DCSubatomicType elements.
It may also optionally have a divisor, which is meaningful only for the numeric type elements (and represents a fixed-point numeric convention).
Definition at line 28 of file dcSimpleParameter.h.
|
virtual |
This flavor of get_num_nested_fields is used during unpacking.
It returns the number of nested fields to expect, given a certain length in bytes (as read from the _num_length_bytes stored in the stream on the push). This will only be called if _num_length_bytes is nonzero.
Reimplemented from DCPackerInterface.
Definition at line 575 of file dcSimpleParameter.cxx.
|
virtual |
Accumulates the properties of this type into the hash.
Reimplemented from DCParameter.
Definition at line 2385 of file dcSimpleParameter.cxx.
References HashGenerator::add_int(), and DCParameter::generate_hash().
int DCSimpleParameter::get_divisor | ( | ) | const |
Returns the divisor associated with this type.
This is 1 by default, but if this is other than one it represents the scale to apply when packing and unpacking numeric values (to store fixed-point values in an integer field). It is only meaningful for numeric-type fields.
Definition at line 287 of file dcSimpleParameter.cxx.
double DCSimpleParameter::get_modulus | ( | ) | const |
Returns the modulus associated with this type, if any.
It is an error to call this if has_modulus() returned false.
If present, this is the modulus that is used to constrain the numeric value of the field before it is packed (and range-checked).
Definition at line 276 of file dcSimpleParameter.cxx.
|
virtual |
Returns the DCPackerInterface object that represents the nth nested field.
This may return NULL if there is no such field (but it shouldn't do this if n is in the range 0 <= n < get_num_nested_fields()).
Reimplemented from DCPackerInterface.
Definition at line 588 of file dcSimpleParameter.cxx.
DCSubatomicType DCSimpleParameter::get_type | ( | ) | const |
Returns the particular subatomic type represented by this instance.
Definition at line 256 of file dcSimpleParameter.cxx.
Referenced by DCArrayParameter::pack_blob(), and DCArrayParameter::pack_string().
bool DCSimpleParameter::has_modulus | ( | ) | const |
Returns true if there is a modulus associated, false otherwise.,.
Definition at line 264 of file dcSimpleParameter.cxx.
bool DCSimpleParameter::is_numeric_type | ( | ) | const |
Returns true if the type is a numeric type (and therefore can accept a divisor and/or a modulus), or false if it is some string-based type.
Definition at line 296 of file dcSimpleParameter.cxx.
|
virtual |
Returns false if the type is an invalid type (e.g.
declared from an undefined typedef), true if it is valid.
Implements DCParameter.
Definition at line 248 of file dcSimpleParameter.cxx.
|
virtual |
Formats the parameter in the C++-like dc syntax as a typename and identifier.
Implements DCParameter.
Definition at line 2295 of file dcSimpleParameter.cxx.
|
virtual |
Packs the indicated numeric or string value into the stream.
Reimplemented from DCPackerInterface.
Definition at line 1076 of file dcSimpleParameter.cxx.
|
virtual |
Packs the simpleParameter's specified default value (or a sensible default if no value is specified) into the stream.
Returns true if the default value is packed, false if the simpleParameter doesn't know how to pack its default value.
Reimplemented from DCField.
Definition at line 1125 of file dcSimpleParameter.cxx.
References DCPacker::begin_pack(), DCField::pack_default_value(), and DCPacker::push().
|
virtual |
Packs the indicated numeric or string value into the stream.
Reimplemented from DCPackerInterface.
Definition at line 596 of file dcSimpleParameter.cxx.
|
virtual |
Packs the indicated numeric or string value into the stream.
Reimplemented from DCPackerInterface.
Definition at line 694 of file dcSimpleParameter.cxx.
|
virtual |
Packs the indicated numeric or string value into the stream.
Reimplemented from DCPackerInterface.
Definition at line 864 of file dcSimpleParameter.cxx.
|
virtual |
Packs the indicated numeric or string value into the stream.
Reimplemented from DCPackerInterface.
Definition at line 1030 of file dcSimpleParameter.cxx.
|
virtual |
Packs the indicated numeric or string value into the stream.
Reimplemented from DCPackerInterface.
Definition at line 785 of file dcSimpleParameter.cxx.
|
virtual |
Packs the indicated numeric or string value into the stream.
Reimplemented from DCPackerInterface.
Definition at line 949 of file dcSimpleParameter.cxx.
bool DCSimpleParameter::set_divisor | ( | unsigned int | divisor | ) |
Assigns the indicated divisor to the simple type.
Returns true if assigned, false if this type cannot accept a divisor or if the divisor is invalid.
Definition at line 376 of file dcSimpleParameter.cxx.
bool DCSimpleParameter::set_modulus | ( | double | modulus | ) |
Assigns the indicated modulus to the simple type.
Any packed value will be constrained to be within [0, modulus).
Returns true if assigned, false if this type cannot accept a modulus or if the modulus is invalid.
Definition at line 308 of file dcSimpleParameter.cxx.
bool DCSimpleParameter::set_range | ( | const DCDoubleRange & | range | ) |
Sets the parameter with the indicated range.
A DCDoubleRange is used for specification, since this is the most generic type; but it is converted to the appropriate type internally. The return value is true if successful, or false if the range is inappropriate for the type.
Definition at line 405 of file dcSimpleParameter.cxx.
References DCNumericRange< NUM >::get_num_ranges().
|
virtual |
Unpacks the current numeric or string value from the stream.
Reimplemented from DCPackerInterface.
Definition at line 1990 of file dcSimpleParameter.cxx.
|
virtual |
Unpacks the current numeric or string value from the stream.
Reimplemented from DCPackerInterface.
Definition at line 1216 of file dcSimpleParameter.cxx.
|
virtual |
Unpacks the current numeric or string value from the stream.
Reimplemented from DCPackerInterface.
Definition at line 1352 of file dcSimpleParameter.cxx.
|
virtual |
Unpacks the current numeric or string value from the stream.
Reimplemented from DCPackerInterface.
Definition at line 1636 of file dcSimpleParameter.cxx.
|
virtual |
Increments p to the end of the current field without actually unpacking any data or performing any range validation.
Returns true on success, false on failure (e.g. we don't know how to skip this field).
Reimplemented from DCPackerInterface.
Definition at line 2225 of file dcSimpleParameter.cxx.
|
virtual |
Unpacks the current numeric or string value from the stream.
Reimplemented from DCPackerInterface.
Definition at line 1919 of file dcSimpleParameter.cxx.
|
virtual |
Unpacks the current numeric or string value from the stream.
Reimplemented from DCPackerInterface.
Definition at line 1490 of file dcSimpleParameter.cxx.
|
virtual |
Unpacks the current numeric or string value from the stream.
Reimplemented from DCPackerInterface.
Definition at line 1773 of file dcSimpleParameter.cxx.
|
virtual |
Internally unpacks the current numeric or string value and validates it against the type range limits, but does not return the value.
Returns true on success, false on failure (e.g. we don't know how to validate this field).
Reimplemented from DCPackerInterface.
Definition at line 2066 of file dcSimpleParameter.cxx.