Panda3D

Loading...
Searching...
No Matches
Public Member Functions | List of all members
DCParameter Class Referenceabstract

Represents the type specification for a single parameter within a field specification. More...

`#include "dcParameter.h"`

Inheritance diagram for DCParameter:

## Public Member Functions
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 DCClassParameter * | as_class_parameter ()
virtual const DCClassParameter * | as_class_parameter () const
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 void | generate_hash (HashGenerator &hashgen) const
| Accumulates the properties of this type into the hash.
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.
virtual bool | is_valid () const =0
virtual DCParameter * | make_copy () const =0
virtual void | output (std::ostream &out, bool brief) const
virtual void | output_instance (std::ostream &out, bool brief, const std::string &prename, const std::string &name, const std::string &postname) const =0
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.
void | set_typedef (const DCTypedef *dtypedef)
| Records the DCTypedef object that generated this parameter.
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.
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.
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.
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 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.
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 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_atomic_field (const DCAtomicField *other) const
| Returns true if this field matches the indicated atomic field, 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.
virtual DCPackerInterface * | get_nested_field (int n) const
| Returns the DCPackerInterface object that represents the nth nested field.
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

Represents the type specification for a single parameter within a field specification.

This may be a simple type, or it may be a class or an array reference.

This may also be a typedef reference to another type, which has the same properties as the referenced type, but a different name.

Definition at line 35 of file dcParameter.h.

## Constructor & Destructor Documentation

## ◆ ~DCParameter()

DCParameter::~DCParameter | ( |  | ) |
| virtual

Definition at line 47 of file dcParameter.cxx.

## Member Function Documentation

## ◆ append_array_specification()

DCParameter * DCParameter::append_array_specification | ( | const DCUnsignedIntRange & | size | ) |
| virtual

Returns the type represented by this_type[size].

In the case of a generic DCParameter, this means it returns a DCArrayParameter wrapped around this type.

Reimplemented in DCArrayParameter.

Definition at line 155 of file dcParameter.cxx.

Referenced by DCArrayParameter::append_array_specification().

## ◆ as_array_parameter() [1/2]

DCArrayParameter * DCParameter::as_array_parameter | ( |  | ) |
| virtual

Definition at line 118 of file dcParameter.cxx.

## ◆ as_array_parameter() [2/2]

const DCArrayParameter * DCParameter::as_array_parameter | ( |  | ) | const
| virtual

Definition at line 126 of file dcParameter.cxx.

## ◆ as_class_parameter() [1/2]

DCClassParameter * DCParameter::as_class_parameter | ( |  | ) |
| virtual

Reimplemented from DCPackerInterface.

Definition at line 86 of file dcParameter.cxx.

## ◆ as_class_parameter() [2/2]

const DCClassParameter * DCParameter::as_class_parameter | ( |  | ) | const
| virtual

Reimplemented from DCPackerInterface.

Definition at line 94 of file dcParameter.cxx.

## ◆ as_parameter() [1/2]

DCParameter * DCParameter::as_parameter | ( |  | ) |
| virtual

Reimplemented from DCField.

Definition at line 54 of file dcParameter.cxx.

## ◆ as_parameter() [2/2]

const DCParameter * DCParameter::as_parameter | ( |  | ) | const
| virtual

Reimplemented from DCField.

Definition at line 62 of file dcParameter.cxx.

## ◆ as_simple_parameter() [1/2]

DCSimpleParameter * DCParameter::as_simple_parameter | ( |  | ) |
| virtual

Definition at line 70 of file dcParameter.cxx.

## ◆ as_simple_parameter() [2/2]

const DCSimpleParameter * DCParameter::as_simple_parameter | ( |  | ) | const
| virtual

Definition at line 78 of file dcParameter.cxx.

## ◆ as_switch_parameter() [1/2]

DCSwitchParameter * DCParameter::as_switch_parameter | ( |  | ) |
| virtual

Reimplemented from DCPackerInterface.

Definition at line 102 of file dcParameter.cxx.

## ◆ as_switch_parameter() [2/2]

const DCSwitchParameter * DCParameter::as_switch_parameter | ( |  | ) | const
| virtual

Reimplemented from DCPackerInterface.

Definition at line 110 of file dcParameter.cxx.

## ◆ generate_hash()

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

Accumulates the properties of this type into the hash.

Reimplemented from DCField.

Reimplemented in DCArrayParameter, DCClassParameter, DCSimpleParameter, and DCSwitchParameter.

Definition at line 237 of file dcParameter.cxx.

References DCKeywordList::generate_hash(), and DCKeywordList::get_num_keywords().

Referenced by DCArrayParameter::generate_hash(), DCClassParameter::generate_hash(), DCSimpleParameter::generate_hash(), and DCSwitchParameter::generate_hash().

## ◆ get_typedef()

const DCTypedef * DCParameter::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.

Definition at line 135 of file dcParameter.cxx.

Referenced by DCArrayParameter::append_array_specification(), DCArrayParameter::output_instance(), DCClassParameter::output_instance(), DCSimpleParameter::output_instance(), DCSwitchParameter::output_instance(), output_typedef_name(), DCSwitchParameter::write_instance(), and write_typedef_name().

## ◆ is_valid()

virtual bool DCParameter::is_valid | ( |  | ) | const
| pure virtual

Implemented in DCArrayParameter, DCClassParameter, DCSimpleParameter, and DCSwitchParameter.

## ◆ output()

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

Implements DCField.

Definition at line 163 of file dcParameter.cxx.

## ◆ output_instance()

virtual void DCParameter::output_instance | ( | std::ostream & | out,
|  | bool | brief,
|  | const std::string & | prename,
|  | const std::string & | name,
|  | const std::string & | postname ) const
| pure virtual

Implemented in DCArrayParameter, DCClassParameter, DCSimpleParameter, and DCSwitchParameter.

## ◆ output_typedef_name()

void DCParameter::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.

Definition at line 204 of file dcParameter.cxx.

References DCTypedef::get_name(), and get_typedef().

Referenced by DCArrayParameter::output_instance(), DCClassParameter::output_instance(), DCSimpleParameter::output_instance(), and DCSwitchParameter::output_instance().

## ◆ set_typedef()

void DCParameter::set_typedef | ( | const DCTypedef * | dtypedef | ) |

Records the DCTypedef object that generated this parameter.

This is normally called only from DCTypedef::make_new_parameter().

Definition at line 144 of file dcParameter.cxx.

Referenced by DCTypedef::make_new_parameter().

## ◆ write()

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

Implements DCField.

Definition at line 175 of file dcParameter.cxx.

## ◆ write_instance()

void DCParameter::write_instance | ( | std::ostream & | out,
|  | bool | brief,
|  | int | indent_level,
|  | const std::string & | prename,
|  | const std::string & | name,
|  | const std::string & | postname ) const
| virtual

Formats the parameter in the C++-like dc syntax as a typename and identifier.

Reimplemented in DCSwitchParameter.

Definition at line 186 of file dcParameter.cxx.

References indent().

## ◆ write_typedef_name()

void DCParameter::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.

Definition at line 217 of file dcParameter.cxx.

References DCTypedef::get_name(), get_typedef(), and indent().

Referenced by DCSwitchParameter::write_instance().

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

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