suppress create warnings from unknown types

This commit is contained in:
David Rose 2003-04-04 16:46:59 +00:00
parent d3a082ffde
commit 6b03618a46
2 changed files with 29 additions and 4 deletions

View File

@ -29,6 +29,8 @@ WritableFactory *BamReader::_factory = (WritableFactory*)0L;
BamReader *const BamReader::Null = (BamReader*)0L;
WritableFactory *const BamReader::NullFactory = (WritableFactory*)0L;
BamReader::NewTypes BamReader::_new_types;
const int BamReader::_cur_major = _bam_major_ver;
const int BamReader::_cur_minor = _bam_minor_ver;
@ -365,6 +367,7 @@ read_handle(DatagramIterator &scan) {
bam_cat.warning()
<< "Bam file contains objects of unknown type: " << type << "\n";
new_type = true;
_new_types.insert(type);
}
// Now pick up the derivation information.
@ -745,10 +748,25 @@ p_read_object() {
<< "Unable to create an object of type " << type << endl;
} else if (object->get_type() != type) {
bam_cat.warning()
<< "Attempted to create a " << type.get_name() \
<< " but a " << object->get_type() \
<< " was created instead." << endl;
if (_new_types.find(type) != _new_types.end()) {
// This was a type we hadn't heard of before, so it's not
// really surprising we didn't know how to create it.
// Suppress the warning (make it a debug statement instead).
if (bam_cat.is_debug()) {
bam_cat.warning()
<< "Attempted to create a " << type.get_name() \
<< " but a " << object->get_type() \
<< " was created instead." << endl;
}
} else {
// This was a normal type that we should have known how to
// create. Report the error.
bam_cat.warning()
<< "Attempted to create a " << type.get_name() \
<< " but a " << object->get_type() \
<< " was created instead." << endl;
}
} else {
if (bam_cat.is_spam()) {

View File

@ -195,6 +195,13 @@ private:
PTAMap _pta_map;
int _pta_id;
// This is used internally to record all of the new types created
// on-the-fly to satisfy bam requirements. We keep track of this
// just so we can suppress warning messages from attempts to create
// objects of these types.
typedef pset<TypeHandle> NewTypes;
static NewTypes _new_types;
int _file_major, _file_minor;
static const int _cur_major;
static const int _cur_minor;