Panda3D

Loading...
Searching...
No Matches
Public Member Functions | List of all members
DCAtomicField Class Reference

A single atomic field of a Distributed Class, as read from a .dc file. More...

`#include "dcAtomicField.h"`

Inheritance diagram for DCAtomicField:

## Public Member Functions
| DCAtomicField (const std::string &name, DCClass *dclass, bool bogus_field)
void | add_element (DCParameter *element)
| Adds a new element (parameter) to the field.
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 void | generate_hash (HashGenerator &hashgen) const
| Accumulates the properties of this field into the hash.
DCParameter * | get_element (int n) const
| Returns the parameter object describing the nth element.
std::vector< unsigned char > | get_element_default (int n) const
| Returns the pre-formatted default value associated with the nth element of the field.
int | get_element_divisor (int n) const
| Returns the divisor associated with the nth element of the field.
std::string | get_element_name (int n) const
| Returns the name of the nth element of the field.
DCSubatomicType | get_element_type (int n) const
| Returns the numeric type of the nth element of the field.
virtual DCPackerInterface * | get_nested_field (int n) const
| Returns the DCPackerInterface object that represents the nth nested field.
int | get_num_elements () const
| Returns the number of elements (parameters) of the atomic field.
bool | has_element_default (int n) const
| Returns true if the nth element of the field has a default value specified, false otherwise.
virtual void | output (std::ostream &out, bool brief) const
virtual void | write (std::ostream &out, bool brief, int indent_level) const
| Generates a parseable description of the object to the indicated output stream.
Public Member Functions inherited from DCField
| DCField (const std::string &name, DCClass *dclass)
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
std::string | format_data (const std::vector< unsigned char > &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.
DCClass * | get_class () const
| Returns the DCClass pointer for the class that contains this field.
const std::vector< unsigned char > & | get_default_value () const
| Returns the default value for this field.
int | get_number () const
| Returns a unique index number associated with this field.
bool | has_default_value () const
| Returns true if a default value has been explicitly established for this field, false otherwise.
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.
void | output (std::ostream &out) const
| Write a string representation of this instance to <out>.
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 stream.
std::vector< unsigned char > | 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.
void | set_class (DCClass *dclass)
| Assigns the class pointer to this field.
void | set_default_value (std::vector< unsigned char > default_value)
| Establishes a default value for this field.
virtual void | set_name (const std::string &name)
| Sets the name of this field.
void | set_number (int number)
| Assigns the unique number to this field.
bool | validate_ranges (const std::vector< unsigned char > &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.
void | write (std::ostream &out, int indent_level) const
| Write a string representation of this instance to <out>.
Public Member Functions inherited from DCPackerInterface
| DCPackerInterface (const DCPackerInterface &copy)
| DCPackerInterface (const std::string &name=std::string())
virtual DCClassParameter * | as_class_parameter ()
virtual const DCClassParameter * | as_class_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 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.
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_molecular_field (const DCMolecularField *other) const
| Returns true if this field matches the indicated molecular field, 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.
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 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.
const DCPackerCatalog * | get_catalog () const
| Returns the DCPackerCatalog associated with this field, listing all of the nested fields by name.
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 std::string & | get_name () const
| Returns the name of this field, or empty string if the field is unnamed.
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.
DCPackType | get_pack_type () const
| Returns the type of value expected by this field.
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_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.
virtual void | pack_blob (DCPackData &pack_data, const std::vector< unsigned char > &value, bool &pack_error, bool &range_error) const
| Packs the indicated numeric or string value 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, int64_t 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 std::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, uint64_t value, bool &pack_error, bool &range_error) const
| Packs the indicated numeric or string value into the stream.
virtual void | unpack_blob (const char *data, size_t length, size_t &p, std::vector< unsigned char > &value, bool &pack_error, bool &range_error) const
| Unpacks the current numeric or string value from the stream.
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, int64_t &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, std::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, uint64_t &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() .
Public Member Functions inherited from DCKeywordList
| DCKeywordList (const DCKeywordList &copy)
bool | add_keyword (const DCKeyword *keyword)
| Adds the indicated keyword to the list.
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.
void | generate_hash (HashGenerator &hashgen) const
| Accumulates the properties of these keywords into the hash.
const DCKeyword * | get_keyword (int n) const
| Returns the nth keyword in the list.
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.
int | get_num_keywords () const
| Returns the number of keywords in the list.
bool | has_keyword (const DCKeyword *keyword) const
| Returns true if this list includes the indicated keyword, false otherwise.
bool | has_keyword (const std::string &name) const
| Returns true if this list includes the indicated keyword, false otherwise.
void | operator= (const DCKeywordList &copy)
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.
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 (uint64_t 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.

## Detailed Description

A single atomic field of a Distributed Class, as read from a .dc file.

This defines an interface to the Distributed Class, and is always implemented as a remote procedure method.

Definition at line 30 of file dcAtomicField.h.

## Constructor & Destructor Documentation

## ◆ DCAtomicField()

DCAtomicField::DCAtomicField | ( | const std::string & | name,
|  | DCClass * | dclass,
|  | bool | bogus_field )

Definition at line 27 of file dcAtomicField.cxx.

## ◆ ~DCAtomicField()

DCAtomicField::~DCAtomicField | ( |  | ) |
| virtual

Definition at line 38 of file dcAtomicField.cxx.

## Member Function Documentation

## ◆ add_element()

void DCAtomicField::add_element | ( | DCParameter * | element | ) |

Adds a new element (parameter) to the field.

Normally this is called only during parsing. The DCAtomicField object becomes the owner of the new pointer and will delete it upon destruction.

Definition at line 221 of file dcAtomicField.cxx.

References DCPackerInterface::get_fixed_byte_size(), DCField::has_default_value(), DCPackerInterface::has_fixed_byte_size(), DCPackerInterface::has_fixed_structure(), and DCPackerInterface::has_range_limits().

## ◆ as_atomic_field() [1/2]

DCAtomicField * DCAtomicField::as_atomic_field | ( |  | ) |
| virtual

Returns the same field pointer converted to an atomic field pointer, if this is in fact an atomic field; otherwise, returns NULL.

Reimplemented from DCField.

Definition at line 51 of file dcAtomicField.cxx.

## ◆ as_atomic_field() [2/2]

const DCAtomicField * DCAtomicField::as_atomic_field | ( |  | ) | const
| virtual

Returns the same field pointer converted to an atomic field pointer, if this is in fact an atomic field; otherwise, returns NULL.

Reimplemented from DCField.

Definition at line 60 of file dcAtomicField.cxx.

## ◆ generate_hash()

void DCAtomicField::generate_hash | ( | HashGenerator & | hashgen | ) | const
| virtual

Accumulates the properties of this field into the hash.

Reimplemented from DCField.

Definition at line 192 of file dcAtomicField.cxx.

References HashGenerator::add_int(), DCField::generate_hash(), and DCKeywordList::generate_hash().

## ◆ get_element()

DCParameter * DCAtomicField::get_element | ( | int | n | ) | const

Returns the parameter object describing the nth element.

Definition at line 76 of file dcAtomicField.cxx.

## ◆ get_element_default()

std::vector< unsigned char > DCAtomicField::get_element_default | ( | int | n | ) | const

Returns the pre-formatted default value associated with the nth element of the field.

This is only valid if has_element_default() returns true, in which case this string represents the bytes that should be assigned to the field as a default value.

If the element is an array-type element, the returned value will include the two-byte length preceding the array data.

Definition at line 93 of file dcAtomicField.cxx.

## ◆ get_element_divisor()

int DCAtomicField::get_element_divisor | ( | int | n | ) | const

Returns the divisor associated with the nth element of the field.

This implements an implicit fixed-point system; floating-point values are to be multiplied by this value before encoding into a packet, and divided by this number after decoding.

This method is deprecated; use get_element()->get_divisor() instead.

Definition at line 144 of file dcAtomicField.cxx.

References DCSimpleParameter::get_divisor().

## ◆ get_element_name()

string DCAtomicField::get_element_name | ( | int | n | ) | const

Returns the name of the nth element of the field.

This name is strictly for documentary purposes; it does not generally affect operation. If a name is not specified, this will be the empty string.

Definition at line 118 of file dcAtomicField.cxx.

## ◆ get_element_type()

DCSubatomicType DCAtomicField::get_element_type | ( | int | n | ) | const

Returns the numeric type of the nth element of the field.

This method is deprecated; use get_element() instead.

Definition at line 128 of file dcAtomicField.cxx.

References DCSimpleParameter::get_type().

## ◆ get_nested_field()

DCPackerInterface * DCAtomicField::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 210 of file dcAtomicField.cxx.

Referenced by DCMolecularField::add_atomic().

## ◆ get_num_elements()

int DCAtomicField::get_num_elements | ( |  | ) | const

Returns the number of elements (parameters) of the atomic field.

Definition at line 68 of file dcAtomicField.cxx.

## ◆ has_element_default()

bool DCAtomicField::has_element_default | ( | int | n | ) | const

Returns true if the nth element of the field has a default value specified, false otherwise.

Definition at line 105 of file dcAtomicField.cxx.

## ◆ output()

void DCAtomicField::output | ( | std::ostream & | out,
|  | bool | brief ) const
| virtual

Implements DCField.

Definition at line 155 of file dcAtomicField.cxx.

## ◆ write()

void DCAtomicField::write | ( | std::ostream & | out,
|  | bool | brief,
|  | int | indent_level ) const
| virtual

Generates a parseable description of the object to the indicated output stream.

Implements DCField.

Definition at line 178 of file dcAtomicField.cxx.

References indent().

The documentation for this class was generated from the following files:

- direct/src/dcparser/dcAtomicField.h
- direct/src/dcparser/dcAtomicField.cxx