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

Inheritance diagram of TypedWritable

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 and ReferenceCount 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 the BamReader that reads them. To retrieve these objects from a bam stream, you must construct a BamReader directly.

If you happen to know that the particular object in question inherits from TypedWritableReferenceCount or PandaNode, 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 a BamWriter, 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 a BamWriter, 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 the BamReader 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.