Panda3D
|
A class to retrieve the individual data elements previously stored in a Datagram. More...
#include "datagramIterator.h"
Public Member Functions | |
DatagramIterator (const Datagram &datagram, size_t offset=0) | |
void | assign (Datagram &datagram, size_t offset=0) |
direct Assignment to a Datagram | |
vector_uchar | extract_bytes (size_t size) |
Extracts the indicated number of bytes in the datagram and returns them as a string. | |
size_t | extract_bytes (unsigned char *into, size_t size) |
Extracts the indicated number of bytes in the datagram into the given character buffer. | |
PN_float32 | get_be_float32 () |
Extracts a 32-bit big-endian single-precision floating-point number. | |
PN_float64 | get_be_float64 () |
Extracts a 64-bit big-endian floating-point number. | |
int16_t | get_be_int16 () |
Extracts a signed 16-bit big-endian integer. | |
int32_t | get_be_int32 () |
Extracts a signed 32-bit big-endian integer. | |
int64_t | get_be_int64 () |
Extracts a signed 64-bit big-endian integer. | |
uint16_t | get_be_uint16 () |
Extracts an unsigned 16-bit big-endian integer. | |
uint32_t | get_be_uint32 () |
Extracts an unsigned 32-bit big-endian integer. | |
uint64_t | get_be_uint64 () |
Extracts an unsigned 64-bit big-endian integer. | |
vector_uchar | get_blob () |
Extracts a variable-length binary blob. | |
vector_uchar | get_blob32 () |
Extracts a variable-length binary blob with a 32-bit size field. | |
bool | get_bool () |
Extracts a boolean value. | |
size_t | get_current_index () const |
Returns the current position within the datagram of the next piece of data to extract. | |
const Datagram & | get_datagram () const |
Return the datagram of this iterator. | |
std::string | get_fixed_string (size_t size) |
Extracts a fixed-length string. | |
PN_float32 | get_float32 () |
Extracts a 32-bit single-precision floating-point number. | |
PN_float64 | get_float64 () |
Extracts a 64-bit floating-point number. | |
int16_t | get_int16 () |
Extracts a signed 16-bit integer. | |
int32_t | get_int32 () |
Extracts a signed 32-bit integer. | |
int64_t | get_int64 () |
Extracts a signed 64-bit integer. | |
int8_t | get_int8 () |
Extracts a signed 8-bit integer. | |
vector_uchar | get_remaining_bytes () const |
Returns the remaining bytes in the datagram as a string, but does not extract them from the iterator. | |
size_t | get_remaining_size () const |
Return the bytes left in the datagram. | |
PN_stdfloat | get_stdfloat () |
Extracts either a 32-bit or a 64-bit floating-point number, according to Datagram::set_stdfloat_double(). | |
std::string | get_string () |
Extracts a variable-length string. | |
std::string | get_string32 () |
Extracts a variable-length string with a 32-bit length field. | |
uint16_t | get_uint16 () |
Extracts an unsigned 16-bit integer. | |
uint32_t | get_uint32 () |
Extracts an unsigned 32-bit integer. | |
uint64_t | get_uint64 () |
Extracts an unsigned 64-bit integer. | |
uint8_t | get_uint8 () |
Extracts an unsigned 8-bit integer. | |
std::wstring | get_wstring () |
Extracts a variable-length wstring (with a 32-bit length field). | |
std::string | get_z_string () |
Extracts a variable-length string, as a NULL-terminated string. | |
void | output (std::ostream &out) const |
Write a string representation of this instance to <out>. | |
void | skip_bytes (size_t size) |
Skips over the indicated number of bytes in the datagram. | |
void | write (std::ostream &out, unsigned int indent=0) const |
Write a string representation of this instance to <out>. | |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
A class to retrieve the individual data elements previously stored in a Datagram.
Elements may be retrieved one at a time; it is up to the caller to know the correct type and order of each element.
Note that it is the responsibility of the caller to ensure that the datagram object is not destructed while this DatagramIterator is in use.
Definition at line 30 of file datagramIterator.h.
|
inline |
Definition at line 17 of file datagramIterator.I.
|
inline |
Definition at line 26 of file datagramIterator.I.
|
inline |
direct Assignment to a Datagram
Definition at line 36 of file datagramIterator.I.
vector_uchar DatagramIterator::extract_bytes | ( | size_t | size | ) |
Extracts the indicated number of bytes in the datagram and returns them as a string.
Definition at line 125 of file datagramIterator.cxx.
References Datagram::get_data().
Referenced by get_blob(), and get_blob32().
size_t DatagramIterator::extract_bytes | ( | unsigned char * | into, |
size_t | size ) |
Extracts the indicated number of bytes in the datagram into the given character buffer.
Assumes that the buffer is big enough to hold the requested number of bytes. Returns the number of bytes that were successfully written.
Definition at line 145 of file datagramIterator.cxx.
References Datagram::get_data().
|
inline |
Extracts a 32-bit big-endian single-precision floating-point number.
Definition at line 368 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and ReversedNumericData::store_value().
Referenced by FltMaterial::extract_14_record(), FltLocalVertexPool::extract_record(), and IffInputFile::get_be_float32().
|
inline |
Extracts a 64-bit big-endian floating-point number.
Definition at line 387 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and ReversedNumericData::store_value().
Referenced by FltLocalVertexPool::extract_record().
|
inline |
Extracts a signed 16-bit big-endian integer.
Definition at line 254 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and ReversedNumericData::store_value().
Referenced by IffInputFile::get_be_int16().
|
inline |
Extracts a signed 32-bit big-endian integer.
Definition at line 273 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and ReversedNumericData::store_value().
Referenced by FltLocalVertexPool::extract_record(), and IffInputFile::get_be_int32().
|
inline |
Extracts a signed 64-bit big-endian integer.
Definition at line 292 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and ReversedNumericData::store_value().
|
inline |
Extracts an unsigned 16-bit big-endian integer.
Definition at line 311 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and ReversedNumericData::store_value().
Referenced by IffInputFile::get_be_uint16().
|
inline |
Extracts an unsigned 32-bit big-endian integer.
Definition at line 330 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and ReversedNumericData::store_value().
Referenced by FltMaterial::extract_14_record(), and IffInputFile::get_be_uint32().
|
inline |
Extracts an unsigned 64-bit big-endian integer.
Definition at line 349 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and ReversedNumericData::store_value().
|
inline |
Extracts a variable-length binary blob.
Definition at line 406 of file datagramIterator.I.
References extract_bytes(), and get_uint16().
|
inline |
Extracts a variable-length binary blob with a 32-bit size field.
Definition at line 414 of file datagramIterator.I.
References extract_bytes(), and get_uint32().
|
inline |
Extracts a boolean value.
Definition at line 47 of file datagramIterator.I.
References get_uint8().
Referenced by GeomVertexAnimationSpec::fillin(), TextureProperties::fillin(), BamReader::init(), TextureStage::make_TextureStage(), MouseRecorder::play_frame(), SparseArray::read_datagram(), CollisionHandlerGravity::read_datagram(), CollisionHandlerPusher::read_datagram(), and FFTCompressor::read_reals().
|
inlinestatic |
Definition at line 88 of file datagramIterator.h.
|
inline |
Returns the current position within the datagram of the next piece of data to extract.
Definition at line 470 of file datagramIterator.I.
Referenced by BamReader::init(), and GeomVertexArrayData::read_raw_data().
|
inline |
Return the datagram of this iterator.
Definition at line 461 of file datagramIterator.I.
Referenced by FltRecordReader::get_datagram(), GeomVertexArrayData::read_raw_data(), and write().
string DatagramIterator::get_fixed_string | ( | size_t | size | ) |
Extracts a fixed-length string.
However, if a zero byte occurs within the string, it marks the end of the string.
Definition at line 86 of file datagramIterator.cxx.
References Datagram::get_data().
Referenced by FltMaterial::extract_14_record().
|
inline |
Extracts a 32-bit single-precision floating-point number.
Definition at line 201 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and NativeNumericData::store_value().
Referenced by get_stdfloat(), Shader::ShaderPtrData::read_datagram(), PStatCollectorDef::read_datagram(), and PStatFrameData::read_datagram().
|
inline |
Extracts a 64-bit floating-point number.
Definition at line 220 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and NativeNumericData::store_value().
Referenced by TexturePosition::fillin(), get_stdfloat(), CollisionHandlerFloor::read_datagram(), CollisionHandlerGravity::read_datagram(), Shader::ShaderPtrData::read_datagram(), and FFTCompressor::read_header().
|
inline |
Extracts a signed 16-bit integer.
Definition at line 87 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and NativeNumericData::store_value().
Referenced by UserDataAudio::append(), SamplerState::read_datagram(), and PStatCollectorDef::read_datagram().
|
inline |
Extracts a signed 32-bit integer.
Definition at line 106 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and NativeNumericData::store_value().
Referenced by NodePath::decode_from_bam_stream(), PaletteGroups::fillin(), TexturePosition::fillin(), TextureProperties::fillin(), DownloadDb::Db::parse_header(), DownloadDb::Db::parse_record_header(), SparseArray::read_datagram(), Shader::ShaderPtrData::read_datagram(), and FFTCompressor::read_reals().
|
inline |
Extracts a signed 64-bit integer.
Definition at line 125 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and NativeNumericData::store_value().
|
inline |
Extracts a signed 8-bit integer.
Definition at line 55 of file datagramIterator.I.
References Datagram::get_data().
Referenced by HermiteCurveCV::fillin(), IffInputFile::get_int8(), IffInputFile::get_uint8(), and FFTCompressor::read_header().
|
inline |
Returns the remaining bytes in the datagram as a string, but does not extract them from the iterator.
Definition at line 441 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
|
inline |
Return the bytes left in the datagram.
Definition at line 453 of file datagramIterator.I.
References Datagram::get_length().
Referenced by UserDataAudio::append(), FltRecord::check_remaining_size(), PStatClientControlMessage::decode(), RecorderFrame::play_frame(), and PStatFrameData::read_datagram().
|
inline |
Extracts either a 32-bit or a 64-bit floating-point number, according to Datagram::set_stdfloat_double().
Definition at line 241 of file datagramIterator.I.
References get_float32(), get_float64(), and Datagram::get_stdfloat_double().
Referenced by TimedCycle::fillin(), AnimChannelScalarDynamic::fillin(), TransformBlend::fillin(), STTransform::fillin(), SamplerState::read_datagram(), and FFTCompressor::read_reals().
string DatagramIterator::get_string | ( | ) |
Extracts a variable-length string.
Definition at line 25 of file datagramIterator.cxx.
References Datagram::get_data(), and get_uint16().
Referenced by PStatServerControlMessage::decode(), PStatClientControlMessage::decode(), HermiteCurveCV::fillin(), SpeedTreeNode::InstanceList::fillin(), ButtonEvent::read_datagram(), CollisionHandlerEvent::read_datagram(), Shader::ShaderFile::read_datagram(), PStatCollectorDef::read_datagram(), BamReader::read_handle(), and DirectD::wait_for_servers().
string DatagramIterator::get_string32 | ( | ) |
Extracts a variable-length string with a 32-bit length field.
Definition at line 44 of file datagramIterator.cxx.
References Datagram::get_data(), and get_uint32().
|
inline |
Extracts an unsigned 16-bit integer.
Definition at line 144 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and NativeNumericData::store_value().
Referenced by CConnectionRepository::check_datagram(), PStatServerControlMessage::decode(), PStatClientControlMessage::decode(), TimedCycle::fillin(), ButtonEventList::fillin(), GeomVertexAnimationSpec::fillin(), GeomVertexColumn::fillin(), TransformBlend::fillin(), ComputeNode::Dispatcher::CData::fillin(), get_blob(), DatagramUDPHeader::get_datagram_checksum(), DatagramTCPHeader::get_datagram_size(), get_string(), get_wstring(), BamReader::init(), ButtonEvent::read_datagram(), PStatFrameData::read_datagram(), and BamReader::read_handle().
|
inline |
Extracts an unsigned 32-bit integer.
Definition at line 163 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and NativeNumericData::store_value().
Referenced by SpeedTreeNode::InstanceList::fillin(), get_blob32(), DatagramTCPHeader::get_datagram_size(), get_string32(), get_wstring(), DownloadDb::Db::parse_header(), BitArray::read_datagram(), SparseArray::read_datagram(), CollisionHandlerEvent::read_datagram(), Shader::ShaderPtrData::read_datagram(), PStatFrameData::read_datagram(), and GeomVertexArrayData::read_raw_data().
|
inline |
Extracts an unsigned 64-bit integer.
Definition at line 182 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and NativeNumericData::store_value().
Referenced by CConnectionRepository::check_datagram().
|
inline |
Extracts an unsigned 8-bit integer.
Definition at line 71 of file datagramIterator.I.
References Datagram::get_data().
Referenced by CConnectionRepository::check_datagram(), PStatServerControlMessage::decode(), PStatClientControlMessage::decode(), NodePath::decode_from_bam_stream(), GeomVertexAnimationSpec::fillin(), GeomVertexColumn::fillin(), get_bool(), BamReader::init(), ButtonEvent::read_datagram(), BitArray::read_datagram(), Shader::ShaderPtrData::read_datagram(), Shader::ShaderFile::read_datagram(), SamplerState::read_datagram(), and BamReader::read_handle().
wstring DatagramIterator::get_wstring | ( | ) |
Extracts a variable-length wstring (with a 32-bit length field).
Definition at line 103 of file datagramIterator.cxx.
References Datagram::get_length(), get_uint16(), and get_uint32().
string DatagramIterator::get_z_string | ( | ) |
Extracts a variable-length string, as a NULL-terminated string.
Definition at line 63 of file datagramIterator.cxx.
References Datagram::get_data(), and Datagram::get_length().
|
inlinestatic |
Definition at line 91 of file datagramIterator.h.
void DatagramIterator::output | ( | std::ostream & | out | ) | const |
Write a string representation of this instance to <out>.
Definition at line 161 of file datagramIterator.cxx.
|
inline |
Skips over the indicated number of bytes in the datagram.
Definition at line 422 of file datagramIterator.I.
References Datagram::dump_hex(), and Datagram::get_length().
Referenced by FltMaterial::extract_14_record(), and GeomVertexArrayData::read_raw_data().
void DatagramIterator::write | ( | std::ostream & | out, |
unsigned int | indent = 0 ) const |
Write a string representation of this instance to <out>.
Definition at line 171 of file datagramIterator.cxx.
References get_datagram(), Datagram::get_length(), indent(), and Datagram::write().