TypedWritable
-
class TypedWritable
Bases:
TypedObject
Base class for objects that can be written to and read from Bam files.
See also
TypedObject
for detailed instructions.Inheritance diagram
-
static bool decode_raw_from_bam_stream(TypedWritable *&ptr, ReferenceCount *&ref_ptr, vector_uchar data, BamReader *reader = nullptr)
Reads the bytes created by a previous call to
encode_to_bam_stream()
, and extracts the single object on those bytes. Returns true on success, false on error.This variant sets the
TypedWritable
andReferenceCount
pointers separately; both are pointers to the same object. The reference count is not incremented; it is the caller’s responsibility to manage the reference count.Note that this method cannot be used to retrieve objects that do not inherit from
ReferenceCount
, because these objects cannot persist beyond the lifetime of theBamReader
that reads them. To retrieve these objects from a bam stream, you must construct aBamReader
directly.If you happen to know that the particular object in question inherits from
TypedWritableReferenceCount
orPandaNode
, consider calling the variant of decode_from_bam_stream() defined for those methods, which presents a simpler interface.
-
vector_uchar encode_to_bam_stream(void) const
-
bool encode_to_bam_stream(vector_uchar &data, BamWriter *writer = nullptr) const
Converts the
TypedWritable
object into a single stream of data using aBamWriter
, and returns that data as a bytes object. Returns an empty bytes object on failure.This is a convenience method particularly useful for cases when you are only serializing a single object. If you have many objects to process, it is more efficient to use the same
BamWriter
to serialize all of them together.Converts the
TypedWritable
object into a single stream of data using aBamWriter
, and stores that data in the indicated string. Returns true on success, false on failure.This is a convenience method particularly useful for cases when you are only serializing a single object. If you have many objects to process, it is more efficient to use the same
BamWriter
to serialize all of them together.
-
virtual void fillin(DatagramIterator &scan, BamReader *manager)
This internal function is intended to be called by each class’s make_from_bam() method to read in all of the relevant data from the
BamFile
for the new object. It is also called directly by theBamReader
to re-read the data for an object that has been placed on the stream for an update.
-
UpdateSeq get_bam_modified(void) const
Returns the current bam_modified counter. This counter is normally incremented automatically whenever the object is modified.
-
static TypeHandle get_class_type(void)
-
void mark_bam_modified(void)
Increments the bam_modified counter, so that this object will be invalidated and retransmitted on any open bam streams. This should normally not need to be called by user code; it should be called internally when the object has been changed in a way that legitimately requires its retransmission to any connected clients.
-
static bool decode_raw_from_bam_stream(TypedWritable *&ptr, ReferenceCount *&ref_ptr, vector_uchar data, BamReader *reader = nullptr)