|
@@ -54,7 +54,7 @@ init(void)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (!_source->get_datagram(header)) {
|
|
if (!_source->get_datagram(header)) {
|
|
|
- util_cat->error()
|
|
|
|
|
|
|
+ bam_cat.error()
|
|
|
<< "Unable to read Bam header.\n";
|
|
<< "Unable to read Bam header.\n";
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
@@ -68,16 +68,16 @@ init(void)
|
|
|
// *newer*, we can't safely load the file.
|
|
// *newer*, we can't safely load the file.
|
|
|
if (_file_major != _bam_major_ver || _file_minor > _bam_minor_ver)
|
|
if (_file_major != _bam_major_ver || _file_minor > _bam_minor_ver)
|
|
|
{
|
|
{
|
|
|
- util_cat->error()
|
|
|
|
|
|
|
+ bam_cat.error()
|
|
|
<< "Bam file is version " << _file_major << "." << _file_minor
|
|
<< "Bam file is version " << _file_major << "." << _file_minor
|
|
|
<< ".\n";
|
|
<< ".\n";
|
|
|
|
|
|
|
|
if (_bam_minor_ver == 0) {
|
|
if (_bam_minor_ver == 0) {
|
|
|
- util_cat.error()
|
|
|
|
|
|
|
+ bam_cat.error()
|
|
|
<< "This program can only load version "
|
|
<< "This program can only load version "
|
|
|
<< _bam_major_ver << ".0 bams.\n";
|
|
<< _bam_major_ver << ".0 bams.\n";
|
|
|
} else {
|
|
} else {
|
|
|
- util_cat.error()
|
|
|
|
|
|
|
+ bam_cat.error()
|
|
|
<< "This program can only load version "
|
|
<< "This program can only load version "
|
|
|
<< _bam_major_ver << ".0 through "
|
|
<< _bam_major_ver << ".0 through "
|
|
|
<< _bam_major_ver << "." << _bam_minor_ver << " bams.\n";
|
|
<< _bam_major_ver << "." << _bam_minor_ver << " bams.\n";
|
|
@@ -86,12 +86,12 @@ init(void)
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (util_cat->is_debug()) {
|
|
|
|
|
- util_cat->debug()
|
|
|
|
|
|
|
+ if (bam_cat.is_debug()) {
|
|
|
|
|
+ bam_cat.debug()
|
|
|
<< "Bam file is version " << _file_major << "." << _file_minor
|
|
<< "Bam file is version " << _file_major << "." << _file_minor
|
|
|
<< ".\n";
|
|
<< ".\n";
|
|
|
if (_file_minor != _bam_minor_ver) {
|
|
if (_file_minor != _bam_minor_ver) {
|
|
|
- util_cat.debug()
|
|
|
|
|
|
|
+ bam_cat.debug()
|
|
|
<< "(Current version is " << _bam_major_ver << "." << _bam_minor_ver
|
|
<< "(Current version is " << _bam_major_ver << "." << _bam_minor_ver
|
|
|
<< ".)\n";
|
|
<< ".)\n";
|
|
|
}
|
|
}
|
|
@@ -116,6 +116,10 @@ read_handle(DatagramIterator& scan)
|
|
|
{
|
|
{
|
|
|
//This indicates an object that should have already been read in,
|
|
//This indicates an object that should have already been read in,
|
|
|
//so return TypeHandle::none() to indicate this.
|
|
//so return TypeHandle::none() to indicate this.
|
|
|
|
|
+ if (bam_cat.is_spam()) {
|
|
|
|
|
+ bam_cat.spam()
|
|
|
|
|
+ << "Reading previously read TypeHandle.\n";
|
|
|
|
|
+ }
|
|
|
return TypeHandle::none();
|
|
return TypeHandle::none();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -131,7 +135,7 @@ read_handle(DatagramIterator& scan)
|
|
|
//This is a new type we've never heard of before so register it
|
|
//This is a new type we've never heard of before so register it
|
|
|
//with the type registry
|
|
//with the type registry
|
|
|
type = TypeRegistry::ptr()->register_dynamic_type(name);
|
|
type = TypeRegistry::ptr()->register_dynamic_type(name);
|
|
|
- util_cat.warning()
|
|
|
|
|
|
|
+ bam_cat.warning()
|
|
|
<< "Bam file contains objects of unknown type: " << type << "\n";
|
|
<< "Bam file contains objects of unknown type: " << type << "\n";
|
|
|
new_type = true;
|
|
new_type = true;
|
|
|
}
|
|
}
|
|
@@ -145,7 +149,7 @@ read_handle(DatagramIterator& scan)
|
|
|
TypeRegistry::ptr()->record_derivation(type, parent_type);
|
|
TypeRegistry::ptr()->record_derivation(type, parent_type);
|
|
|
} else {
|
|
} else {
|
|
|
if (type.get_parent_towards(parent_type) != parent_type) {
|
|
if (type.get_parent_towards(parent_type) != parent_type) {
|
|
|
- util_cat.warning()
|
|
|
|
|
|
|
+ bam_cat.warning()
|
|
|
<< "Bam file indicates a derivation of " << type
|
|
<< "Bam file indicates a derivation of " << type
|
|
|
<< " from " << parent_type << " which is no longer true.\n";
|
|
<< " from " << parent_type << " which is no longer true.\n";
|
|
|
}
|
|
}
|
|
@@ -154,6 +158,11 @@ read_handle(DatagramIterator& scan)
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if (bam_cat.is_spam()) {
|
|
|
|
|
+ bam_cat.spam()
|
|
|
|
|
+ << "Reading TypeHandle for " << _index_map[id] << ".\n";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return _index_map[id];
|
|
return _index_map[id];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -182,6 +191,11 @@ read_object(void)
|
|
|
|
|
|
|
|
if (!_source->get_datagram(packet)) {
|
|
if (!_source->get_datagram(packet)) {
|
|
|
// The datagram source is empty.
|
|
// The datagram source is empty.
|
|
|
|
|
+
|
|
|
|
|
+ if (bam_cat.is_debug()) {
|
|
|
|
|
+ bam_cat.debug()
|
|
|
|
|
+ << "Reached end of bam source.\n";
|
|
|
|
|
+ }
|
|
|
return TypedWriteable::Null;
|
|
return TypedWriteable::Null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -219,16 +233,23 @@ read_object(void)
|
|
|
//value otherwise
|
|
//value otherwise
|
|
|
_created_objs[objId];
|
|
_created_objs[objId];
|
|
|
_created_objs[objId] = _factory->make_instance_more_general(type, list);
|
|
_created_objs[objId] = _factory->make_instance_more_general(type, list);
|
|
|
|
|
+
|
|
|
//Just some sanity checks
|
|
//Just some sanity checks
|
|
|
- if (_created_objs[objId] == (TypedWriteable *)NULL)
|
|
|
|
|
- {
|
|
|
|
|
- util_cat->error() << "Failed to create a " << type.get_name() << endl;
|
|
|
|
|
- }
|
|
|
|
|
- else if (_created_objs[objId]->get_type() != type)
|
|
|
|
|
- {
|
|
|
|
|
- util_cat->warning() << "Attempted to create a " << type.get_name() \
|
|
|
|
|
- << " but a " << _created_objs[objId]->get_type().get_name() \
|
|
|
|
|
- << " was created instead." << endl;
|
|
|
|
|
|
|
+ if (_created_objs[objId] == (TypedWriteable *)NULL) {
|
|
|
|
|
+ bam_cat.error()
|
|
|
|
|
+ << "Unable to create an object of type " << type << endl;
|
|
|
|
|
+
|
|
|
|
|
+ } else if (_created_objs[objId]->get_type() != type) {
|
|
|
|
|
+ bam_cat.warning()
|
|
|
|
|
+ << "Attempted to create a " << type.get_name() \
|
|
|
|
|
+ << " but a " << _created_objs[objId]->get_type() \
|
|
|
|
|
+ << " was created instead." << endl;
|
|
|
|
|
+
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (bam_cat.is_spam()) {
|
|
|
|
|
+ bam_cat.spam()
|
|
|
|
|
+ << "Read a " << _created_objs[objId]->get_type() << "\n";
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -299,7 +320,7 @@ register_finalize(TypedWriteable *whom)
|
|
|
{
|
|
{
|
|
|
if (whom == TypedWriteable::Null)
|
|
if (whom == TypedWriteable::Null)
|
|
|
{
|
|
{
|
|
|
- util_cat->error() << "Can't register a null pointer to finalize!" << endl;
|
|
|
|
|
|
|
+ bam_cat.error() << "Can't register a null pointer to finalize!" << endl;
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
_finalize_list.insert(whom);
|
|
_finalize_list.insert(whom);
|
|
@@ -315,7 +336,7 @@ finalize_now(TypedWriteable *whom)
|
|
|
{
|
|
{
|
|
|
if (whom == TypedWriteable::Null)
|
|
if (whom == TypedWriteable::Null)
|
|
|
{
|
|
{
|
|
|
- util_cat->error() << "Can't finalize null pointer!" << endl;
|
|
|
|
|
|
|
+ bam_cat.error() << "Can't finalize null pointer!" << endl;
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if (_finalize_list.find(whom) != _finalize_list.end())
|
|
if (_finalize_list.find(whom) != _finalize_list.end())
|
|
@@ -325,12 +346,29 @@ finalize_now(TypedWriteable *whom)
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
- util_cat->warning() << "Request to finalize object of type "
|
|
|
|
|
|
|
+ bam_cat.warning() << "Request to finalize object of type "
|
|
|
<< whom->get_type().get_name() << " failed"
|
|
<< whom->get_type().get_name() << " failed"
|
|
|
<< endl;
|
|
<< endl;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+////////////////////////////////////////////////////////////////////
|
|
|
|
|
+// Function: BamReader::empty_queue
|
|
|
|
|
+// Access: Private
|
|
|
|
|
+// Description: For every objId in the queue, reads an object
|
|
|
|
|
+// from the datagram source
|
|
|
|
|
+////////////////////////////////////////////////////////////////////
|
|
|
|
|
+void BamReader::
|
|
|
|
|
+empty_queue(void) {
|
|
|
|
|
+ size_t num_reads = _deferred_reads.size();
|
|
|
|
|
+ _deferred_reads.clear();
|
|
|
|
|
+
|
|
|
|
|
+ while (num_reads > 0) {
|
|
|
|
|
+ read_object();
|
|
|
|
|
+ num_reads--;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|
|
|
// Function: BamReader::finalize_this
|
|
// Function: BamReader::finalize_this
|
|
|
// Access: Private
|
|
// Access: Private
|
|
@@ -351,14 +389,19 @@ finalize_this(TypedWriteable *whom)
|
|
|
void BamReader::
|
|
void BamReader::
|
|
|
finalize(void)
|
|
finalize(void)
|
|
|
{
|
|
{
|
|
|
|
|
+ if (bam_cat.is_debug()) {
|
|
|
|
|
+ bam_cat.debug()
|
|
|
|
|
+ << "Finalizing bam source\n";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
Finalize::iterator fi = _finalize_list.begin();
|
|
Finalize::iterator fi = _finalize_list.begin();
|
|
|
while(fi != _finalize_list.end())
|
|
while(fi != _finalize_list.end())
|
|
|
{
|
|
{
|
|
|
if (*fi == TypedWriteable::Null)
|
|
if (*fi == TypedWriteable::Null)
|
|
|
{
|
|
{
|
|
|
- util_cat->error() << "Spun off into the weeds. "
|
|
|
|
|
- << "somehow a null was registered to be "
|
|
|
|
|
- << "finalized." << endl;
|
|
|
|
|
|
|
+ bam_cat.error() << "Spun off into the weeds. "
|
|
|
|
|
+ << "somehow a null was registered to be "
|
|
|
|
|
+ << "finalized." << endl;
|
|
|
_finalize_list.erase(fi);
|
|
_finalize_list.erase(fi);
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
@@ -480,7 +523,7 @@ resolve(void)
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
// nassertv(objReferencesComplete);
|
|
// nassertv(objReferencesComplete);
|
|
|
- util_cat.warning()
|
|
|
|
|
|
|
+ bam_cat.warning()
|
|
|
<< "Unable to complete " << (*whom).first->get_type() << "\n";
|
|
<< "Unable to complete " << (*whom).first->get_type() << "\n";
|
|
|
whom++;
|
|
whom++;
|
|
|
}
|
|
}
|