15 #include "transformTable.h"
16 #include "bamReader.h"
17 #include "bamWriter.h"
39 _is_registered(false),
40 _transforms(copy._transforms)
51 nassertv(!_is_registered);
52 _transforms = copy._transforms;
75 nassertv(!_is_registered);
76 nassertv(n >= 0 && n < (
int)_transforms.size());
77 _transforms[n] = transform;
88 nassertv(!_is_registered);
89 nassertv(n >= 0 && n < (
int)_transforms.size());
90 _transforms.erase(_transforms.begin() + n);
106 nassertr(!_is_registered, -1);
107 int new_index = (int)_transforms.size();
108 _transforms.push_back(transform);
117 void TransformTable::
118 write(ostream &out)
const {
119 for (
size_t i = 0; i < _transforms.size(); ++i) {
120 out << i <<
". " << *_transforms[i] <<
"\n";
129 void TransformTable::
131 nassertv(!_is_registered);
133 Transforms::iterator ti;
134 for (ti = _transforms.begin(); ti != _transforms.end(); ++ti) {
136 bool inserted = transform->_tables.insert(
this).second;
139 _is_registered =
true;
148 void TransformTable::
150 nassertv(_is_registered);
152 Transforms::iterator ti;
153 for (ti = _transforms.begin(); ti != _transforms.end(); ++ti) {
155 transform->_tables.erase(
this);
157 _is_registered =
false;
182 for (Transforms::const_iterator ti = _transforms.begin();
183 ti != _transforms.end();
202 for (Transforms::iterator ti = _transforms.begin();
203 ti != _transforms.end();
225 parse_params(params, scan, manager);
226 object->fillin(scan, manager);
238 void TransformTable::
243 _transforms.reserve(num_transforms);
244 for (
size_t i = 0; i < num_transforms; ++i) {
246 _transforms.push_back(NULL);
259 return new CData(*
this);
268 void TransformTable::CData::
279 void TransformTable::CData::
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
void read_cdata(DatagramIterator &scan, PipelineCyclerBase &cycler)
Reads in the indicated CycleData object.
A single page of data maintained by a PipelineCycler.
Base class for objects that can be written to and read from Bam files.
void write_cdata(Datagram &packet, const PipelineCyclerBase &cycler)
Writes out the indicated CycleData object.
This is the fundamental interface for writing binary objects to a Bam file, to be extracted later by ...
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...
PN_uint16 get_uint16()
Extracts an unsigned 16-bit integer.
static Thread * get_current_thread()
Returns a pointer to the currently-executing Thread object.
virtual void write_datagram(BamWriter *manager, Datagram &dg)
Writes the contents of this object to the datagram for shipping out to a Bam file.
virtual int complete_pointers(TypedWritable **p_list, BamReader *manager)
Receives an array of pointers, one for each time manager->read_pointer() was called in fillin()...
An instance of this class is passed to the Factory when requesting it to do its business and construc...
void register_factory(TypeHandle handle, CreateFunc *func)
Registers a new kind of thing the Factory will be able to create.
void add_uint16(PN_uint16 value)
Adds an unsigned 16-bit integer to the datagram.
static WritableFactory * get_factory()
Returns the global WritableFactory for generating TypedWritable objects.
A thread; that is, a lightweight process.
A class to retrieve the individual data elements previously stored in a Datagram. ...
TypeHandle is the identifier used to differentiate C++ class types.
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
void write_pointer(Datagram &packet, const TypedWritable *dest)
The interface for writing a pointer to another object to a Bam file.
void read_pointer(DatagramIterator &scan)
The interface for reading a pointer to another object from a Bam file.