Panda3D
|
This represents an array of some other kind of object, meaning this parameter type accepts an arbitrary (or possibly fixed) number of nested fields, all of which are of the same type. More...
#include "dcArrayParameter.h"
Public Member Functions | |
DCArrayParameter (DCParameter *element_type, const DCUnsignedIntRange &size=DCUnsignedIntRange()) | |
DCArrayParameter (const DCArrayParameter ©) | |
bool | add_keyword (const DCKeyword *keyword) |
Adds the indicated keyword to the list. | |
virtual DCParameter * | append_array_specification (const DCUnsignedIntRange &size) |
Returns the type represented by this_type[size]. | |
virtual DCArrayParameter * | as_array_parameter () |
virtual const DCArrayParameter * | as_array_parameter () const |
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. | |
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. | |
virtual DCClassParameter * | as_class_parameter () |
virtual const DCClassParameter * | as_class_parameter () const |
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. | |
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. | |
virtual DCParameter * | as_parameter () |
virtual const DCParameter * | as_parameter () const |
virtual DCSimpleParameter * | as_simple_parameter () |
virtual const DCSimpleParameter * | as_simple_parameter () const |
virtual DCSwitchParameter * | as_switch_parameter () |
virtual const DCSwitchParameter * | as_switch_parameter () const |
virtual int | calc_num_nested_fields (size_t length_bytes) const |
This flavor of get_num_nested_fields is used during unpacking. | |
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. | |
bool | check_match (const string &description, DCFile *dcfile=NULL) const |
Returns true if this interface is bitwise the same as the interface described with the indicated formatted string, e.g. | |
void | clear_keywords () |
Removes all keywords from the field. | |
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. | |
void | copy_keywords (const DCKeywordList &other) |
Replaces this keyword list with those from the other list. | |
virtual bool | do_check_match_atomic_field (const DCAtomicField *other) const |
Returns true if this field matches the indicated atomic field, false otherwise. | |
virtual bool | do_check_match_molecular_field (const DCMolecularField *other) const |
Returns true if this field matches the indicated molecular field, false otherwise. | |
virtual bool | do_check_match_switch_parameter (const DCSwitchParameter *other) const |
Returns true if this field matches the indicated switch parameter, false otherwise. | |
int | find_seek_index (const 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. | |
string | format_data (const string &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. | |
virtual void | generate_hash (HashGenerator &hashgen) const |
Accumulates the properties of this type into the hash. | |
int | get_array_size () const |
Returns the fixed number of elements in this array, or -1 if the array may contain a variable number of elements. | |
const DCPackerCatalog * | get_catalog () const |
Returns the DCPackerCatalog associated with this field, listing all of the nested fields by name. | |
DCClass * | get_class () const |
Returns the DCClass pointer for the class that contains this field. | |
const string & | get_default_value () const |
Returns the default value for this field. | |
DCParameter * | get_element_type () const |
Returns the type of the individual elements of this array. | |
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. | |
const DCKeyword * | get_keyword (int n) const |
Returns the nth keyword in the list. | |
const DCKeyword * | get_keyword_by_name (const 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. | |
const string & | get_name () const |
Returns the name of this field, or empty string if the field is unnamed. | |
virtual DCPackerInterface * | get_nested_field (int n) const |
Returns the DCPackerInterface object that represents the nth nested field. | |
int | get_num_keywords () const |
Returns the number of keywords in the list. | |
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(). | |
int | get_num_nested_fields () const |
Returns the number of nested fields required by this field type. | |
int | get_number () const |
Returns a unique index number associated with this field. | |
DCPackType | get_pack_type () const |
Returns the type of value expected by this field. | |
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. | |
bool | has_default_value () const |
Returns true if a default value has been explicitly established for this field, false otherwise. | |
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. | |
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. | |
bool | has_keyword (const DCKeyword *keyword) const |
Returns true if this list includes the indicated keyword, false otherwise. | |
bool | has_keyword (const string &name) const |
Returns true if this list includes the indicated keyword, false otherwise. | |
bool | has_nested_fields () const |
Returns true if this field type has any nested fields (and thus expects a push() . | |
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. | |
bool | is_airecv () const |
Returns true if the "airecv" flag is set for this field, false otherwise. | |
bool | is_bogus_field () const |
Returns true if the field has been flagged as a bogus field. | |
bool | is_broadcast () const |
Returns true if the "broadcast" flag is set for this field, false otherwise. | |
bool | is_clrecv () const |
Returns true if the "clrecv" flag is set for this field, false otherwise. | |
bool | is_clsend () const |
Returns true if the "clsend" flag is set for this field, false otherwise. | |
bool | is_db () const |
Returns true if the "db" flag is set for this field, false otherwise. | |
bool | is_ownrecv () const |
Returns true if the "ownrecv" flag is set for this field, false otherwise. | |
bool | is_ownsend () const |
Returns true if the "ownsend" flag is set for this field, false otherwise. | |
bool | is_ram () const |
Returns true if the "ram" flag is set for this field, false otherwise. | |
bool | is_required () const |
Returns true if the "required" flag is set for this field, false otherwise. | |
virtual bool | is_valid () const |
Returns false if the type is an invalid type (e.g. | |
virtual DCParameter * | make_copy () const |
virtual void | output (ostream &out, bool brief) const |
void | output (ostream &out) const |
Write a string representation of this instance to <out>. | |
virtual void | output_instance (ostream &out, bool brief, const string &prename, const string &name, const string &postname) const |
Formats the parameter in the C++-like dc syntax as a typename and identifier. | |
void | output_keywords (ostream &out) const |
void | output_typedef_name (ostream &out, bool brief, const string &prename, const string &name, const string &postname) const |
Formats the instance like output_instance, but uses the typedef name instead. | |
virtual bool | pack_default_value (DCPackData &pack_data, bool &pack_error) const |
Packs the arrayParameter's specified default value (or a sensible default if no value is specified) into 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_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 | 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. | |
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_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 | 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. | |
string | parse_string (const 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. | |
void | set_class (DCClass *dclass) |
Assigns the class pointer to this field. | |
void | set_default_value (const string &default_value) |
Establishes a default value for this field. | |
virtual void | set_name (const string &name) |
Sets the name of this field. | |
void | set_number (int number) |
Assigns the unique number to this field. | |
void | set_typedef (const DCTypedef *dtypedef) |
Records the DCTypedef object that generated this parameter. | |
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_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 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 | 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. | |
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 | 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 | 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 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. | |
virtual bool | validate_num_nested_fields (int num_nested_fields) const |
After a number of fields have been packed via push() | |
bool | validate_ranges (const string &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. | |
virtual void | write (ostream &out, bool brief, int indent_level) const |
void | write (ostream &out, int indent_level) const |
Write a string representation of this instance to <out>. | |
virtual void | write_instance (ostream &out, bool brief, int indent_level, const string &prename, const string &name, const string &postname) const |
Formats the parameter in the C++-like dc syntax as a typename and identifier. | |
void | write_typedef_name (ostream &out, bool brief, int indent_level, const string &prename, const string &name, const string &postname) const |
Formats the instance like write_instance, but uses the typedef name instead. | |
Static Public Member Functions | |
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, PN_int64 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, PN_uint64 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 PN_int64 | 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 PN_uint64 | do_unpack_uint64 (const char *buffer) |
static unsigned int | do_unpack_uint8 (const char *buffer) |
static void | validate_int64_limits (PN_int64 value, int num_bits, bool &range_error) |
Confirms that the signed value fits within num_bits bits. | |
static void | validate_int_limits (int value, int num_bits, bool &range_error) |
Confirms that the signed value fits within num_bits bits. | |
static void | validate_uint64_limits (PN_uint64 value, int num_bits, bool &range_error) |
Confirms that the unsigned value fits within num_bits bits. | |
static void | validate_uint_limits (unsigned int value, int num_bits, bool &range_error) |
Confirms that the unsigned value fits within num_bits bits. | |
Protected Member Functions | |
virtual bool | do_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. | |
virtual bool | do_check_match_array_parameter (const DCArrayParameter *other) const |
Returns true if this field matches the indicated array parameter, false otherwise. | |
virtual bool | do_check_match_class_parameter (const DCClassParameter *other) const |
Returns true if this field matches the indicated class parameter, false otherwise. | |
virtual bool | do_check_match_simple_parameter (const DCSimpleParameter *other) const |
Returns true if this field matches the indicated simple parameter, false otherwise. | |
void | refresh_default_value () |
Recomputes the default value of the field by repacking it. | |
Protected Attributes | |
bool | _bogus_field |
DCClass * | _dclass |
bool | _default_value_stale |
size_t | _fixed_byte_size |
bool | _has_default_value |
bool | _has_fixed_byte_size |
bool | _has_fixed_structure |
bool | _has_nested_fields |
bool | _has_range_limits |
string | _name |
size_t | _num_length_bytes |
int | _num_nested_fields |
int | _number |
DCPackType | _pack_type |
This represents an array of some other kind of object, meaning this parameter type accepts an arbitrary (or possibly fixed) number of nested fields, all of which are of the same type.
Definition at line 29 of file dcArrayParameter.h.
bool DCKeywordList::add_keyword | ( | const DCKeyword * | keyword | ) | [inherited] |
Adds the indicated keyword to the list.
Returns true if it is added, false if it was already there.
Definition at line 157 of file dcKeywordList.cxx.
References DCKeyword::get_historical_flag(), and DCKeyword::get_name().
Referenced by DCFile::add_keyword().
DCParameter * DCArrayParameter::append_array_specification | ( | const DCUnsignedIntRange & | size | ) | [virtual] |
Returns the type represented by this_type[size].
In the case of a DCArrayParameter, this means it modifies the current type to append the array specification on the innermost type, and returns this same pointer again.
Reimplemented from DCParameter.
Definition at line 175 of file dcArrayParameter.cxx.
References DCParameter::append_array_specification(), and DCParameter::get_typedef().
DCAtomicField * DCField::as_atomic_field | ( | ) | [virtual, inherited] |
Returns the same field pointer converted to an atomic field pointer, if this is in fact an atomic field; otherwise, returns NULL.
Reimplemented in DCAtomicField.
Definition at line 120 of file dcField.cxx.
Referenced by DCClass::add_field().
const DCAtomicField * DCField::as_atomic_field | ( | ) | const [virtual, inherited] |
Returns the same field pointer converted to an atomic field pointer, if this is in fact an atomic field; otherwise, returns NULL.
Reimplemented in DCAtomicField.
Definition at line 132 of file dcField.cxx.
DCMolecularField * DCField::as_molecular_field | ( | ) | [virtual, inherited] |
Returns the same field pointer converted to a molecular field pointer, if this is in fact a molecular field; otherwise, returns NULL.
Reimplemented in DCMolecularField.
Definition at line 144 of file dcField.cxx.
const DCMolecularField * DCField::as_molecular_field | ( | ) | const [virtual, inherited] |
Returns the same field pointer converted to a molecular field pointer, if this is in fact a molecular field; otherwise, returns NULL.
Reimplemented in DCMolecularField.
Definition at line 156 of file dcField.cxx.
int DCArrayParameter::calc_num_nested_fields | ( | size_t | length_bytes | ) | const [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 get_num_length_bytes() stored in the stream on the pack). This will only be called if get_num_length_bytes() returns nonzero.
Reimplemented from DCPackerInterface.
Definition at line 197 of file dcArrayParameter.cxx.
References DCPackerInterface::get_fixed_byte_size(), and DCPackerInterface::has_fixed_byte_size().
bool DCPackerInterface::check_match | ( | const DCPackerInterface * | other | ) | const [inline, inherited] |
Returns true if the other interface is bitwise the same as this one--that is, a uint32 only matches a uint32, etc.
Names of components, and range limits, are not compared.
Definition at line 36 of file dcPackerInterface.I.
Referenced by DCPackerInterface::check_match(), do_check_match_array_parameter(), DCClassParameter::do_check_match_array_parameter(), DCAtomicField::do_check_match_atomic_field(), DCClassParameter::do_check_match_class_parameter(), DCMolecularField::do_check_match_molecular_field(), and DCSwitch::do_check_match_switch().
bool DCPackerInterface::check_match | ( | const string & | description, |
DCFile * | dcfile = NULL |
||
) | const [inherited] |
Returns true if this interface is bitwise the same as the interface described with the indicated formatted string, e.g.
"(uint8, uint8, int16)", or false otherwise.
If DCFile is not NULL, it specifies the DCFile that was previously loaded, from which some predefined structs and typedefs may be referenced in the description string.
Definition at line 167 of file dcPackerInterface.cxx.
References DCPackerInterface::check_match().
void DCKeywordList::clear_keywords | ( | ) | [inherited] |
Removes all keywords from the field.
Definition at line 173 of file dcKeywordList.cxx.
Referenced by DCFile::clear().
bool DCKeywordList::compare_keywords | ( | const DCKeywordList & | other | ) | const [inherited] |
Returns true if this list has the same keywords as the other list, false if some keywords differ.
Order is not considered important.
Definition at line 135 of file dcKeywordList.cxx.
void DCKeywordList::copy_keywords | ( | const DCKeywordList & | other | ) | [inherited] |
Replaces this keyword list with those from the other list.
Definition at line 146 of file dcKeywordList.cxx.
Referenced by DCMolecularField::add_atomic().
bool DCArrayParameter::do_check_match | ( | const DCPackerInterface * | other | ) | const [protected, virtual] |
Returns true if the other interface is bitwise the same as this one--that is, a uint32 only matches a uint32, etc.
Names of components, and range limits, are not compared.
Implements DCPackerInterface.
Definition at line 402 of file dcArrayParameter.cxx.
References DCPackerInterface::do_check_match_array_parameter().
bool DCArrayParameter::do_check_match_array_parameter | ( | const DCArrayParameter * | other | ) | const [protected, virtual] |
Returns true if this field matches the indicated array parameter, false otherwise.
Reimplemented from DCPackerInterface.
Definition at line 435 of file dcArrayParameter.cxx.
References DCPackerInterface::check_match().
bool DCPackerInterface::do_check_match_atomic_field | ( | const DCAtomicField * | other | ) | const [virtual, inherited] |
Returns true if this field matches the indicated atomic field, false otherwise.
Reimplemented in DCAtomicField.
Definition at line 516 of file dcPackerInterface.cxx.
Referenced by DCAtomicField::do_check_match().
bool DCArrayParameter::do_check_match_class_parameter | ( | const DCClassParameter * | other | ) | const [protected, virtual] |
Returns true if this field matches the indicated class parameter, false otherwise.
Reimplemented from DCPackerInterface.
Definition at line 424 of file dcArrayParameter.cxx.
bool DCPackerInterface::do_check_match_molecular_field | ( | const DCMolecularField * | other | ) | const [virtual, inherited] |
Returns true if this field matches the indicated molecular field, false otherwise.
Reimplemented in DCMolecularField.
Definition at line 527 of file dcPackerInterface.cxx.
Referenced by DCMolecularField::do_check_match().
bool DCArrayParameter::do_check_match_simple_parameter | ( | const DCSimpleParameter * | other | ) | const [protected, virtual] |
Returns true if this field matches the indicated simple parameter, false otherwise.
Reimplemented from DCPackerInterface.
Definition at line 413 of file dcArrayParameter.cxx.
bool DCPackerInterface::do_check_match_switch_parameter | ( | const DCSwitchParameter * | other | ) | const [virtual, inherited] |
Returns true if this field matches the indicated switch parameter, false otherwise.
Reimplemented in DCSwitchParameter.
Definition at line 494 of file dcPackerInterface.cxx.
Referenced by DCSwitchParameter::do_check_match().
int DCPackerInterface::find_seek_index | ( | const string & | name | ) | const [inherited] |
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.
If the named field is nested within a switch or some similar dynamic structure that reveals different fields based on the contents of the data, this mechanism cannot be used to pre-fetch the field index number--you must seek for the field by name.
Definition at line 89 of file dcPackerInterface.cxx.
References DCPackerCatalog::find_entry_by_name(), and DCPackerInterface::get_catalog().
string DCField::format_data | ( | const string & | packed_data, |
bool | show_field_names = true |
||
) | [inherited] |
Given a blob that represents the packed data for this field, returns a string formatting it for human consumption.
Returns empty string if there is an error.
Definition at line 188 of file dcField.cxx.
References DCPacker::begin_unpack(), DCPacker::end_unpack(), DCPacker::set_unpack_data(), and DCPacker::unpack_and_format().
Referenced by DCSwitch::output_instance(), and DCSwitch::write_instance().
void DCArrayParameter::generate_hash | ( | HashGenerator & | hashgen | ) | const [virtual] |
Accumulates the properties of this type into the hash.
Reimplemented from DCParameter.
Definition at line 266 of file dcArrayParameter.cxx.
References DCParameter::generate_hash().
int DCArrayParameter::get_array_size | ( | ) | const |
Returns the fixed number of elements in this array, or -1 if the array may contain a variable number of elements.
Definition at line 160 of file dcArrayParameter.cxx.
Referenced by DCSimpleParameter::do_check_match_array_parameter(), and DCClassParameter::do_check_match_array_parameter().
const DCPackerCatalog * DCPackerInterface::get_catalog | ( | ) | const [inherited] |
Returns the DCPackerCatalog associated with this field, listing all of the nested fields by name.
Definition at line 458 of file dcPackerInterface.cxx.
Referenced by DCPacker::begin_repack(), DCPackerInterface::find_seek_index(), and DCPacker::seek().
DCClass * DCField::get_class | ( | ) | const [inline, inherited] |
Returns the DCClass pointer for the class that contains this field.
Reimplemented in DCClassParameter.
Definition at line 35 of file dcField.I.
Referenced by DCClass::add_field().
const string & DCField::get_default_value | ( | ) | const [inline, inherited] |
Returns the default value for this field.
If a default value has been explicitly set (e.g. has_default_value() returns true), returns that value; otherwise, returns an implicit default for the field.
DCParameter * DCArrayParameter::get_element_type | ( | ) | const |
Returns the type of the individual elements of this array.
Definition at line 148 of file dcArrayParameter.cxx.
Referenced by DCSimpleParameter::do_check_match_array_parameter(), and DCClassParameter::do_check_match_array_parameter().
size_t DCPackerInterface::get_fixed_byte_size | ( | ) | const [inline, inherited] |
If has_fixed_byte_size() returns true, this returns the number of bytes this field type will use.
Definition at line 58 of file dcPackerInterface.I.
Referenced by DCMolecularField::add_atomic(), DCAtomicField::add_element(), DCSwitch::SwitchFields::add_field(), and calc_num_nested_fields().
const DCKeyword * DCKeywordList::get_keyword | ( | int | n | ) | const [inherited] |
Returns the nth keyword in the list.
Definition at line 104 of file dcKeywordList.cxx.
Referenced by DCFile::get_keyword().
const DCKeyword * DCKeywordList::get_keyword_by_name | ( | const string & | name | ) | const [inherited] |
Returns the keyword in the list with the indicated name, or NULL if there is no keyword in the list with that name.
Definition at line 117 of file dcKeywordList.cxx.
Referenced by DCFile::get_keyword_by_name().
const string & DCPackerInterface::get_name | ( | ) | const [inline, inherited] |
Returns the name of this field, or empty string if the field is unnamed.
Definition at line 23 of file dcPackerInterface.I.
Referenced by DCSwitch::SwitchFields::add_field(), DCClass::add_field(), DCPacker::get_current_field_name(), DCTypedef::get_name(), DCClass::rebuild_inherited_fields(), DCField::refresh_default_value(), and DCPacker::unpack_and_format().
DCPackerInterface * DCArrayParameter::get_nested_field | ( | int | n | ) | const [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 213 of file dcArrayParameter.cxx.
int DCKeywordList::get_num_keywords | ( | ) | const [inherited] |
Returns the number of keywords in the list.
Definition at line 93 of file dcKeywordList.cxx.
Referenced by DCParameter::generate_hash(), and DCFile::get_num_keywords().
size_t DCPackerInterface::get_num_length_bytes | ( | ) | const [inline, inherited] |
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().
This is only meaningful if _has_nested_fields is true.
Definition at line 102 of file dcPackerInterface.I.
Referenced by DCPacker::pop(), and DCPacker::push().
int DCPackerInterface::get_num_nested_fields | ( | ) | const [inline, inherited] |
Returns the number of nested fields required by this field type.
These may be array elements or structure elements. The return value may be -1 to indicate the number of nested fields is variable.
Definition at line 130 of file dcPackerInterface.I.
Referenced by DCMolecularField::add_atomic(), DCPacker::output_hex_string(), DCPacker::pop(), DCPacker::push(), and DCPacker::seek().
int DCField::get_number | ( | ) | const [inline, inherited] |
Returns a unique index number associated with this field.
This is defined implicitly when the .dc file(s) are read.
Definition at line 24 of file dcField.I.
Referenced by DCClass::add_field().
DCPackType DCPackerInterface::get_pack_type | ( | ) | const [inline, inherited] |
Returns the type of value expected by this field.
Definition at line 140 of file dcPackerInterface.I.
Referenced by DCPacker::get_pack_type().
const DCTypedef * DCParameter::get_typedef | ( | ) | const [inherited] |
If this type has been referenced from a typedef, returns the DCTypedef instance, or NULL if the type was declared on-the-fly.
Definition at line 163 of file dcParameter.cxx.
Referenced by append_array_specification(), output_instance(), DCClassParameter::output_instance(), DCParameter::output_typedef_name(), and DCParameter::write_typedef_name().
bool DCField::has_default_value | ( | ) | const [inline, inherited] |
Returns true if a default value has been explicitly established for this field, false otherwise.
Definition at line 46 of file dcField.I.
Referenced by DCMolecularField::add_atomic(), DCAtomicField::add_element(), and DCSwitch::SwitchFields::add_field().
bool DCPackerInterface::has_fixed_byte_size | ( | ) | const [inline, inherited] |
Returns true if this field type always packs to the same number of bytes, false if it is variable.
Definition at line 47 of file dcPackerInterface.I.
Referenced by DCMolecularField::add_atomic(), DCAtomicField::add_element(), DCSwitch::SwitchFields::add_field(), and calc_num_nested_fields().
bool DCPackerInterface::has_fixed_structure | ( | ) | const [inline, inherited] |
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.
This is almost, but not quite, the same thing as has_fixed_byte_size. The difference is that a DCSwitch may have multiple cases all with the same byte size, but they will still (presumably) have different structures, in the sense that the actual list of fields varies according to the live data.
Definition at line 76 of file dcPackerInterface.I.
Referenced by DCMolecularField::add_atomic(), DCAtomicField::add_element(), DCSwitch::SwitchFields::add_field(), and DCPackerCatalog::get_live_catalog().
bool DCKeywordList::has_keyword | ( | const string & | name | ) | const [inherited] |
Returns true if this list includes the indicated keyword, false otherwise.
Definition at line 72 of file dcKeywordList.cxx.
Referenced by DCKeywordList::has_keyword(), DCField::is_airecv(), DCField::is_broadcast(), DCField::is_clrecv(), DCField::is_clsend(), DCField::is_db(), DCField::is_ownrecv(), DCField::is_ownsend(), DCField::is_ram(), and DCField::is_required().
bool DCKeywordList::has_keyword | ( | const DCKeyword * | keyword | ) | const [inherited] |
Returns true if this list includes the indicated keyword, false otherwise.
Definition at line 83 of file dcKeywordList.cxx.
References DCKeyword::get_name(), and DCKeywordList::has_keyword().
bool DCPackerInterface::has_nested_fields | ( | ) | const [inline, inherited] |
Returns true if this field type has any nested fields (and thus expects a push() .
. pop() interface to the DCPacker), or false otherwise. If this returns true, get_num_nested_fields() may be called to determine how many nested fields are expected.
Definition at line 117 of file dcPackerInterface.I.
Referenced by DCPacker::has_nested_fields().
bool DCPackerInterface::has_range_limits | ( | ) | const [inline, inherited] |
Returns true if this field, or any sub-field of this field, has a limit imposed in the DC file on its legal values.
If this is false, then unpack_validate() is trivial.
Definition at line 89 of file dcPackerInterface.I.
Referenced by DCMolecularField::add_atomic(), DCAtomicField::add_element(), and DCSwitch::SwitchFields::add_field().
bool DCField::is_airecv | ( | ) | const [inline, inherited] |
Returns true if the "airecv" flag is set for this field, false otherwise.
Definition at line 176 of file dcField.I.
References DCKeywordList::has_keyword().
bool DCField::is_bogus_field | ( | ) | const [inline, inherited] |
Returns true if the field has been flagged as a bogus field.
This is set for fields that are generated by the parser as placeholder for missing fields, as when reading a partial file; it should not occur in a normal valid dc file.
Definition at line 77 of file dcField.I.
Referenced by DCMolecularField::add_atomic().
bool DCField::is_broadcast | ( | ) | const [inline, inherited] |
Returns true if the "broadcast" flag is set for this field, false otherwise.
Definition at line 99 of file dcField.I.
References DCKeywordList::has_keyword().
bool DCField::is_clrecv | ( | ) | const [inline, inherited] |
Returns true if the "clrecv" flag is set for this field, false otherwise.
Definition at line 143 of file dcField.I.
References DCKeywordList::has_keyword().
bool DCField::is_clsend | ( | ) | const [inline, inherited] |
Returns true if the "clsend" flag is set for this field, false otherwise.
Definition at line 132 of file dcField.I.
References DCKeywordList::has_keyword().
bool DCField::is_db | ( | ) | const [inline, inherited] |
Returns true if the "db" flag is set for this field, false otherwise.
Definition at line 121 of file dcField.I.
References DCKeywordList::has_keyword().
bool DCField::is_ownrecv | ( | ) | const [inline, inherited] |
Returns true if the "ownrecv" flag is set for this field, false otherwise.
Definition at line 165 of file dcField.I.
References DCKeywordList::has_keyword().
bool DCField::is_ownsend | ( | ) | const [inline, inherited] |
Returns true if the "ownsend" flag is set for this field, false otherwise.
Definition at line 154 of file dcField.I.
References DCKeywordList::has_keyword().
bool DCField::is_ram | ( | ) | const [inline, inherited] |
Returns true if the "ram" flag is set for this field, false otherwise.
Definition at line 110 of file dcField.I.
References DCKeywordList::has_keyword().
bool DCField::is_required | ( | ) | const [inline, inherited] |
Returns true if the "required" flag is set for this field, false otherwise.
Definition at line 88 of file dcField.I.
References DCKeywordList::has_keyword().
bool DCArrayParameter::is_valid | ( | ) | const [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 137 of file dcArrayParameter.cxx.
void DCField::output | ( | ostream & | out | ) | const [inline, inherited] |
Write a string representation of this instance to <out>.
Definition at line 187 of file dcField.I.
Referenced by DCSwitch::output_instance(), DCClass::output_instance(), and DCSwitch::write_instance().
void DCArrayParameter::output_instance | ( | ostream & | out, |
bool | brief, | ||
const string & | prename, | ||
const string & | name, | ||
const string & | postname | ||
) | const [virtual] |
Formats the parameter in the C++-like dc syntax as a typename and identifier.
Implements DCParameter.
Definition at line 242 of file dcArrayParameter.cxx.
References DCParameter::get_typedef(), and DCParameter::output_typedef_name().
void DCParameter::output_typedef_name | ( | ostream & | out, |
bool | brief, | ||
const string & | prename, | ||
const string & | name, | ||
const string & | postname | ||
) | const [inherited] |
Formats the instance like output_instance, but uses the typedef name instead.
Definition at line 246 of file dcParameter.cxx.
References DCTypedef::get_name(), and DCParameter::get_typedef().
Referenced by output_instance(), and DCClassParameter::output_instance().
bool DCArrayParameter::pack_default_value | ( | DCPackData & | pack_data, |
bool & | pack_error | ||
) | const [virtual] |
Packs the arrayParameter'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 arrayParameter doesn't know how to pack its default value.
Reimplemented from DCField.
Definition at line 318 of file dcArrayParameter.cxx.
References DCPackData::append_data(), DCPacker::begin_pack(), DCPacker::end_pack(), DCPacker::get_data(), DCPacker::get_length(), DCNumericRange< NUM >::get_min(), DCNumericRange< NUM >::is_empty(), DCPacker::pack_default_value(), DCPacker::pop(), and DCPacker::push().
void DCPackerInterface::pack_double | ( | DCPackData & | pack_data, |
double | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
Packs the indicated numeric or string value into the stream.
Reimplemented in DCSimpleParameter.
Definition at line 249 of file dcPackerInterface.cxx.
Referenced by DCPacker::pack_double().
void DCPackerInterface::pack_int | ( | DCPackData & | pack_data, |
int | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
Packs the indicated numeric or string value into the stream.
Reimplemented in DCSimpleParameter.
Definition at line 260 of file dcPackerInterface.cxx.
Referenced by DCPacker::pack_int().
void DCPackerInterface::pack_int64 | ( | DCPackData & | pack_data, |
PN_int64 | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
Packs the indicated numeric or string value into the stream.
Reimplemented in DCSimpleParameter.
Definition at line 282 of file dcPackerInterface.cxx.
Referenced by DCPacker::pack_int64().
void DCArrayParameter::pack_string | ( | DCPackData & | pack_data, |
const string & | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual] |
Packs the indicated numeric or string value into the stream.
Reimplemented from DCPackerInterface.
Definition at line 279 of file dcArrayParameter.cxx.
References DCPackData::append_data(), DCSimpleParameter::get_type(), DCPackData::get_write_pointer(), and DCNumericRange< NUM >::validate().
void DCPackerInterface::pack_uint | ( | DCPackData & | pack_data, |
unsigned int | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
Packs the indicated numeric or string value into the stream.
Reimplemented in DCSimpleParameter.
Definition at line 271 of file dcPackerInterface.cxx.
Referenced by DCPacker::pack_uint().
void DCPackerInterface::pack_uint64 | ( | DCPackData & | pack_data, |
PN_uint64 | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
Packs the indicated numeric or string value into the stream.
Reimplemented in DCSimpleParameter.
Definition at line 293 of file dcPackerInterface.cxx.
Referenced by DCPacker::pack_uint64().
string DCField::parse_string | ( | const string & | formatted_string | ) | [inherited] |
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.
Returns empty string if there is an error.
Definition at line 209 of file dcField.cxx.
References DCPacker::begin_pack(), DCPacker::end_pack(), DCPacker::get_string(), and DCPacker::parse_and_pack().
void DCField::refresh_default_value | ( | ) | [protected, inherited] |
Recomputes the default value of the field by repacking it.
Definition at line 620 of file dcField.cxx.
References DCPacker::begin_pack(), DCPacker::end_pack(), DCPacker::get_data(), DCPacker::get_length(), DCPackerInterface::get_name(), and DCPacker::pack_default_value().
void DCField::set_class | ( | DCClass * | dclass | ) | [inline, inherited] |
Assigns the class pointer to this field.
This is normally called only by the DCClass interface as the field is added.
Definition at line 222 of file dcField.I.
Referenced by DCClass::add_field().
void DCField::set_default_value | ( | const string & | default_value | ) | [inline, inherited] |
void DCField::set_name | ( | const string & | name | ) | [virtual, inherited] |
Sets the name of this field.
Reimplemented from DCPackerInterface.
Definition at line 566 of file dcField.cxx.
References DCFile::mark_inherited_fields_stale().
Referenced by DCTypedef::DCTypedef(), and DCTypedef::make_new_parameter().
void DCField::set_number | ( | int | number | ) | [inline, inherited] |
Assigns the unique number to this field.
This is normally called only by the DCClass interface as the field is added.
Definition at line 210 of file dcField.I.
Referenced by DCClass::add_field(), and DCFile::set_new_index_number().
void DCParameter::set_typedef | ( | const DCTypedef * | dtypedef | ) | [inherited] |
Records the DCTypedef object that generated this parameter.
This is normally called only from DCTypedef::make_new_parameter().
Definition at line 175 of file dcParameter.cxx.
Referenced by DCTypedef::make_new_parameter().
void DCPackerInterface::unpack_double | ( | const char * | data, |
size_t | length, | ||
size_t & | p, | ||
double & | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
Unpacks the current numeric or string value from the stream.
Reimplemented in DCSimpleParameter.
Definition at line 329 of file dcPackerInterface.cxx.
Referenced by DCPacker::unpack_double().
void DCPackerInterface::unpack_int | ( | const char * | data, |
size_t | length, | ||
size_t & | p, | ||
int & | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
Unpacks the current numeric or string value from the stream.
Reimplemented in DCSimpleParameter.
Definition at line 340 of file dcPackerInterface.cxx.
Referenced by DCPacker::unpack_int().
void DCPackerInterface::unpack_int64 | ( | const char * | data, |
size_t | length, | ||
size_t & | p, | ||
PN_int64 & | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
Unpacks the current numeric or string value from the stream.
Reimplemented in DCSimpleParameter.
Definition at line 362 of file dcPackerInterface.cxx.
Referenced by DCPacker::unpack_int64().
bool DCPackerInterface::unpack_skip | ( | const char * | data, |
size_t | length, | ||
size_t & | p, | ||
bool & | pack_error | ||
) | const [virtual, inherited] |
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 in DCSimpleParameter.
Definition at line 415 of file dcPackerInterface.cxx.
Referenced by DCPacker::unpack_skip(), and DCPackerInterface::unpack_validate().
void DCArrayParameter::unpack_string | ( | const char * | data, |
size_t | length, | ||
size_t & | p, | ||
string & | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual] |
Unpacks the current numeric or string value from the stream.
Reimplemented from DCPackerInterface.
Definition at line 357 of file dcArrayParameter.cxx.
References DCSimpleParameter::get_type().
void DCPackerInterface::unpack_uint | ( | const char * | data, |
size_t | length, | ||
size_t & | p, | ||
unsigned int & | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
Unpacks the current numeric or string value from the stream.
Reimplemented in DCSimpleParameter.
Definition at line 351 of file dcPackerInterface.cxx.
Referenced by DCPacker::unpack_uint().
void DCPackerInterface::unpack_uint64 | ( | const char * | data, |
size_t | length, | ||
size_t & | p, | ||
PN_uint64 & | value, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
Unpacks the current numeric or string value from the stream.
Reimplemented in DCSimpleParameter.
Definition at line 373 of file dcPackerInterface.cxx.
Referenced by DCPacker::unpack_uint64().
bool DCPackerInterface::unpack_validate | ( | const char * | data, |
size_t | length, | ||
size_t & | p, | ||
bool & | pack_error, | ||
bool & | range_error | ||
) | const [virtual, inherited] |
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 in DCSimpleParameter.
Definition at line 398 of file dcPackerInterface.cxx.
References DCPackerInterface::unpack_skip().
Referenced by DCPacker::unpack_validate().
void DCPackerInterface::validate_int64_limits | ( | PN_int64 | value, |
int | num_bits, | ||
bool & | range_error | ||
) | [inline, static, inherited] |
Confirms that the signed value fits within num_bits bits.
Sets range_error true if it does not.
Definition at line 416 of file dcPackerInterface.I.
void DCPackerInterface::validate_int_limits | ( | int | value, |
int | num_bits, | ||
bool & | range_error | ||
) | [inline, static, inherited] |
Confirms that the signed value fits within num_bits bits.
Sets range_error true if it does not.
Definition at line 394 of file dcPackerInterface.I.
bool DCArrayParameter::validate_num_nested_fields | ( | int | num_nested_fields | ) | const [virtual] |
After a number of fields have been packed via push()
. pack_*() .. pop(), this is called to confirm that the number of nested fields that were added is valid for this type. This is primarily useful for array types with dynamic ranges that can't validate the number of fields any other way.
Reimplemented from DCPackerInterface.
Definition at line 228 of file dcArrayParameter.cxx.
References DCNumericRange< NUM >::validate().
bool DCField::validate_ranges | ( | const string & | packed_data | ) | const [inherited] |
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.
Returns true if all fields are valid, false otherwise.
Definition at line 233 of file dcField.cxx.
References DCPacker::begin_unpack(), DCPacker::end_unpack(), DCPacker::get_num_unpacked_bytes(), DCPacker::set_unpack_data(), and DCPacker::unpack_validate().
void DCPackerInterface::validate_uint64_limits | ( | PN_uint64 | value, |
int | num_bits, | ||
bool & | range_error | ||
) | [inline, static, inherited] |
Confirms that the unsigned value fits within num_bits bits.
Sets range_error true if it does not.
Definition at line 451 of file dcPackerInterface.I.
void DCPackerInterface::validate_uint_limits | ( | unsigned int | value, |
int | num_bits, | ||
bool & | range_error | ||
) | [inline, static, inherited] |
Confirms that the unsigned value fits within num_bits bits.
Sets range_error true if it does not.
Definition at line 432 of file dcPackerInterface.I.
Referenced by DCPacker::pop().
void DCField::write | ( | ostream & | out, |
int | indent_level | ||
) | const [inline, inherited] |
Write a string representation of this instance to <out>.
Definition at line 198 of file dcField.I.
Referenced by DCClass::write().
void DCParameter::write_instance | ( | ostream & | out, |
bool | brief, | ||
int | indent_level, | ||
const string & | prename, | ||
const string & | name, | ||
const string & | postname | ||
) | const [virtual, inherited] |
Formats the parameter in the C++-like dc syntax as a typename and identifier.
Reimplemented in DCSwitchParameter.
Definition at line 226 of file dcParameter.cxx.
void DCParameter::write_typedef_name | ( | ostream & | out, |
bool | brief, | ||
int | indent_level, | ||
const string & | prename, | ||
const string & | name, | ||
const string & | postname | ||
) | const [inherited] |
Formats the instance like write_instance, but uses the typedef name instead.
Definition at line 261 of file dcParameter.cxx.
References DCTypedef::get_name(), and DCParameter::get_typedef().