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) | |
DatagramIterator (const DatagramIterator ©) | |
void | assign (Datagram &datagram, size_t offset=0) |
direct Assignment to a Datagram More... | |
string | extract_bytes (size_t size) |
Extracts the indicated number of bytes in the datagram and returns them as a string. More... | |
size_t | extract_bytes (unsigned char *into, size_t size) |
Extracts the indicated number of bytes in the datagram into the given character buffer. More... | |
PN_float32 | get_be_float32 () |
Extracts a 32-bit big-endian single-precision floating-point number. More... | |
PN_float64 | get_be_float64 () |
Extracts a 64-bit big-endian floating-point number. More... | |
PN_int16 | get_be_int16 () |
Extracts a signed 16-bit big-endian integer. More... | |
PN_int32 | get_be_int32 () |
Extracts a signed 32-bit big-endian integer. More... | |
PN_int64 | get_be_int64 () |
Extracts a signed 64-bit big-endian integer. More... | |
PN_uint16 | get_be_uint16 () |
Extracts an unsigned 16-bit big-endian integer. More... | |
PN_uint32 | get_be_uint32 () |
Extracts an unsigned 32-bit big-endian integer. More... | |
PN_uint64 | get_be_uint64 () |
Extracts an unsigned 64-bit big-endian integer. More... | |
bool | get_bool () |
Extracts a boolean value. More... | |
size_t | get_current_index () const |
Returns the current position within the datagram of the next piece of data to extract. More... | |
const Datagram & | get_datagram () const |
Return the datagram of this iterator. More... | |
string | get_fixed_string (size_t size) |
Extracts a fixed-length string. More... | |
PN_float32 | get_float32 () |
Extracts a 32-bit single-precision floating-point number. More... | |
PN_float64 | get_float64 () |
Extracts a 64-bit floating-point number. More... | |
PN_int16 | get_int16 () |
Extracts a signed 16-bit integer. More... | |
PN_int32 | get_int32 () |
Extracts a signed 32-bit integer. More... | |
PN_int64 | get_int64 () |
Extracts a signed 64-bit integer. More... | |
PN_int8 | get_int8 () |
Extracts a signed 8-bit integer. More... | |
string | get_remaining_bytes () const |
Returns the remaining bytes in the datagram as a string, but does not extract them from the iterator. More... | |
int | get_remaining_size () const |
Return the bytes left in the datagram. More... | |
PN_stdfloat | get_stdfloat () |
Extracts either a 32-bit or a 64-bit floating-point number, according to Datagram::set_stdfloat_double(). More... | |
string | get_string () |
Extracts a variable-length string. More... | |
string | get_string32 () |
Extracts a variable-length string with a 32-bit length field. More... | |
PN_uint16 | get_uint16 () |
Extracts an unsigned 16-bit integer. More... | |
PN_uint32 | get_uint32 () |
Extracts an unsigned 32-bit integer. More... | |
PN_uint64 | get_uint64 () |
Extracts an unsigned 64-bit integer. More... | |
PN_uint8 | get_uint8 () |
Extracts an unsigned 8-bit integer. More... | |
wstring | get_wstring () |
Extracts a variable-length wstring (with a 32-bit length field). More... | |
string | get_z_string () |
Extracts a variable-length string, as a NULL-terminated string. More... | |
void | operator= (const DatagramIterator ©) |
void | output (ostream &out) const |
Write a string representation of this instance to <out>. More... | |
void | skip_bytes (size_t size) |
Skips over the indicated number of bytes in the datagram. More... | |
void | write (ostream &out, unsigned int indent=0) const |
Write a string representation of this instance to <out>. More... | |
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.
Definition at line 30 of file datagramIterator.h.
|
inline |
direct Assignment to a Datagram
Definition at line 65 of file datagramIterator.I.
string DatagramIterator::extract_bytes | ( | size_t | size | ) |
Extracts the indicated number of bytes in the datagram and returns them as a string.
Definition at line 140 of file datagramIterator.cxx.
References Datagram::get_data().
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 163 of file datagramIterator.cxx.
References Datagram::get_data().
|
inline |
Extracts a 32-bit big-endian single-precision floating-point number.
Definition at line 447 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
Referenced by FltMaterial::extract_14_record(), and IffInputFile::get_be_float32().
|
inline |
Extracts a 64-bit big-endian floating-point number.
Definition at line 468 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and ReversedNumericData::store_value().
|
inline |
Extracts a signed 16-bit big-endian integer.
Definition at line 320 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
Referenced by IffInputFile::get_be_int16().
|
inline |
Extracts a signed 32-bit big-endian integer.
Definition at line 341 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
Referenced by IffInputFile::get_be_int32().
|
inline |
Extracts a signed 64-bit big-endian integer.
Definition at line 362 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
|
inline |
Extracts an unsigned 16-bit big-endian integer.
Definition at line 383 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
Referenced by IffInputFile::get_be_uint16().
|
inline |
Extracts an unsigned 32-bit big-endian integer.
Definition at line 404 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
Referenced by FltMaterial::extract_14_record(), and IffInputFile::get_be_uint32().
|
inline |
Extracts an unsigned 64-bit big-endian integer.
Definition at line 425 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
|
inline |
Extracts a boolean value.
Definition at line 88 of file datagramIterator.I.
References get_uint8().
Referenced by GeomVertexAnimationSpec::fillin(), TextureProperties::fillin(), BamReader::init(), TextureStage::make_TextureStage(), MouseRecorder::play_frame(), SparseArray::read_datagram(), and FFTCompressor::read_reals().
|
inline |
Returns the current position within the datagram of the next piece of data to extract.
Definition at line 547 of file datagramIterator.I.
Referenced by GeomVertexArrayData::read_raw_data().
|
inline |
Return the datagram of this iterator.
Definition at line 536 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 96 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 261 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and NativeNumericData::store_value().
Referenced by get_stdfloat(), PStatCollectorDef::read_datagram(), PStatFrameData::read_datagram(), and Shader::ShaderPtrData::read_datagram().
|
inline |
Extracts a 64-bit floating-point number.
Definition at line 282 of file datagramIterator.I.
References Datagram::get_data(), Datagram::get_length(), and NativeNumericData::store_value().
Referenced by TexturePosition::fillin(), get_stdfloat(), Shader::ShaderPtrData::read_datagram(), and FFTCompressor::read_header().
|
inline |
Extracts a signed 16-bit integer.
Definition at line 134 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
Referenced by UserDataAudio::append(), PStatCollectorDef::read_datagram(), ButtonEvent::read_datagram(), and SamplerState::read_datagram().
|
inline |
Extracts a signed 32-bit integer.
Definition at line 155 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
Referenced by NodePath::decode_from_bam_stream(), TexturePosition::fillin(), PaletteGroups::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 176 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
|
inline |
Extracts a signed 8-bit integer.
Definition at line 98 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 511 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
|
inline |
Return the bytes left in the datagram.
Definition at line 526 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 305 of file datagramIterator.I.
References get_float32(), get_float64(), and Datagram::get_stdfloat_double().
Referenced by TimedCycle::fillin(), STTransform::fillin(), AnimChannelScalarDynamic::fillin(), TransformBlend::fillin(), SamplerState::read_datagram(), and FFTCompressor::read_reals().
string DatagramIterator::get_string | ( | ) |
Extracts a variable-length string.
Definition at line 26 of file datagramIterator.cxx.
References Datagram::get_data(), and get_uint16().
Referenced by PStatServerControlMessage::decode(), PStatClientControlMessage::decode(), HermiteCurveCV::fillin(), SpeedTreeNode::InstanceList::fillin(), MayaToEggServer::poll(), PStatCollectorDef::read_datagram(), ButtonEvent::read_datagram(), Shader::ShaderFile::read_datagram(), and BamReader::read_handle().
string DatagramIterator::get_string32 | ( | ) |
Extracts a variable-length string with a 32-bit length field.
Definition at line 48 of file datagramIterator.cxx.
References Datagram::get_data(), and get_uint32().
|
inline |
Extracts an unsigned 16-bit integer.
Definition at line 197 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
Referenced by CConnectionRepository::check_datagram(), PStatServerControlMessage::decode(), PStatClientControlMessage::decode(), TimedCycle::fillin(), ButtonEventList::fillin(), GeomVertexAnimationSpec::fillin(), ComputeNode::Dispatcher::CData::fillin(), GeomVertexColumn::fillin(), TransformBlend::fillin(), DatagramUDPHeader::get_datagram_checksum(), DatagramTCPHeader::get_datagram_size(), get_string(), get_wstring(), BamReader::init(), PStatFrameData::read_datagram(), ButtonEvent::read_datagram(), and BamReader::read_handle().
|
inline |
Extracts an unsigned 32-bit integer.
Definition at line 218 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
Referenced by SpeedTreeNode::InstanceList::fillin(), DatagramTCPHeader::get_datagram_size(), get_string32(), get_wstring(), DownloadDb::Db::parse_header(), BitArray::read_datagram(), SparseArray::read_datagram(), Shader::ShaderPtrData::read_datagram(), and GeomVertexArrayData::read_raw_data().
|
inline |
Extracts an unsigned 64-bit integer.
Definition at line 239 of file datagramIterator.I.
References Datagram::get_data(), and Datagram::get_length().
Referenced by CConnectionRepository::check_datagram().
|
inline |
Extracts an unsigned 8-bit integer.
Definition at line 116 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(), MayaToEggServer::poll(), ButtonEvent::read_datagram(), BitArray::read_datagram(), SamplerState::read_datagram(), Shader::ShaderPtrData::read_datagram(), Shader::ShaderFile::read_datagram(), and BamReader::read_handle().
wstring DatagramIterator::get_wstring | ( | ) |
Extracts a variable-length wstring (with a 32-bit length field).
Definition at line 116 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 70 of file datagramIterator.cxx.
References Datagram::get_data(), and Datagram::get_length().
void DatagramIterator::output | ( | ostream & | out | ) | const |
Write a string representation of this instance to <out>.
Definition at line 182 of file datagramIterator.cxx.
|
inline |
Skips over the indicated number of bytes in the datagram.
Definition at line 490 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 | ( | ostream & | out, |
unsigned int | indent = 0 |
||
) | const |
Write a string representation of this instance to <out>.
Definition at line 195 of file datagramIterator.cxx.
References get_datagram(), Datagram::get_length(), and Datagram::write().