Panda3D
 All Classes Functions Variables Enumerations
Public Member Functions | Static Public Member Functions | List of all members
DatagramIterator Class Reference

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 &copy)
 
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 Datagramget_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 &copy)
 
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 ()
 

Detailed Description

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.

Member Function Documentation

void DatagramIterator::assign ( Datagram datagram,
size_t  offset = 0 
)
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().

PN_float32 DatagramIterator::get_be_float32 ( )
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().

PN_float64 DatagramIterator::get_be_float64 ( )
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().

PN_int16 DatagramIterator::get_be_int16 ( )
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().

PN_int32 DatagramIterator::get_be_int32 ( )
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().

PN_int64 DatagramIterator::get_be_int64 ( )
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().

PN_uint16 DatagramIterator::get_be_uint16 ( )
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().

PN_uint32 DatagramIterator::get_be_uint32 ( )
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().

PN_uint64 DatagramIterator::get_be_uint64 ( )
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().

bool DatagramIterator::get_bool ( )
inline
size_t DatagramIterator::get_current_index ( ) const
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().

const Datagram & DatagramIterator::get_datagram ( ) const
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().

PN_float32 DatagramIterator::get_float32 ( )
inline
PN_float64 DatagramIterator::get_float64 ( )
inline
PN_int16 DatagramIterator::get_int16 ( )
inline
PN_int32 DatagramIterator::get_int32 ( )
inline
PN_int64 DatagramIterator::get_int64 ( )
inline

Extracts a signed 64-bit integer.

Definition at line 176 of file datagramIterator.I.

References Datagram::get_data(), and Datagram::get_length().

PN_int8 DatagramIterator::get_int8 ( )
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().

string DatagramIterator::get_remaining_bytes ( ) const
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().

int DatagramIterator::get_remaining_size ( ) const
inline
PN_stdfloat DatagramIterator::get_stdfloat ( )
inline
string DatagramIterator::get_string ( )
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().

PN_uint16 DatagramIterator::get_uint16 ( )
inline
PN_uint32 DatagramIterator::get_uint32 ( )
inline
PN_uint64 DatagramIterator::get_uint64 ( )
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().

PN_uint8 DatagramIterator::get_uint8 ( )
inline
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.

void DatagramIterator::skip_bytes ( size_t  size)
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().


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