mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 18:31:55 -04:00
tweaks for publish
This commit is contained in:
parent
798348ea12
commit
53a7e319d8
@ -93,6 +93,20 @@ main(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!file.all_classes_valid() && !dump_brief) {
|
||||||
|
cerr << "File is incomplete. The following classes are undefined:\n";
|
||||||
|
|
||||||
|
int num_classes = file.get_num_classes();
|
||||||
|
for (int i = 0; i < num_classes; i++) {
|
||||||
|
DCClass *dclass = file.get_class(i);
|
||||||
|
if (dclass->is_bogus_class()) {
|
||||||
|
cerr << " " << dclass->get_name() << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
if (dump_verbose || dump_brief) {
|
if (dump_verbose || dump_brief) {
|
||||||
if (!file.write(cout, dump_brief)) {
|
if (!file.write(cout, dump_brief)) {
|
||||||
return (1);
|
return (1);
|
||||||
|
@ -161,6 +161,20 @@ get_inherited_field(int n) const {
|
|||||||
return get_field(n);
|
return get_field(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: DCClass::is_bogus_class
|
||||||
|
// Access: Public
|
||||||
|
// Description: Returns true if the class has been flagged as a bogus
|
||||||
|
// class. This is set for classes that are generated by
|
||||||
|
// the parser as placeholder for missing classes, as
|
||||||
|
// when reading a partial file; it should not occur in a
|
||||||
|
// normal valid dc file.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
bool DCClass::
|
||||||
|
is_bogus_class() const {
|
||||||
|
return _bogus_class;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_PYTHON
|
#ifdef HAVE_PYTHON
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: DCClass::set_class_def
|
// Function: DCClass::set_class_def
|
||||||
@ -511,7 +525,10 @@ ai_format_generate(PyObject *distobj, int do_id,
|
|||||||
// Description:
|
// Description:
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
DCClass::
|
DCClass::
|
||||||
DCClass(const string &name) : _name(name) {
|
DCClass(const string &name, bool bogus_class) :
|
||||||
|
_bogus_class(bogus_class),
|
||||||
|
_name(name)
|
||||||
|
{
|
||||||
#ifdef HAVE_PYTHON
|
#ifdef HAVE_PYTHON
|
||||||
_class_def = NULL;
|
_class_def = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
@ -44,6 +44,8 @@ PUBLISHED:
|
|||||||
int get_num_inherited_fields() const;
|
int get_num_inherited_fields() const;
|
||||||
DCField *get_inherited_field(int n) const;
|
DCField *get_inherited_field(int n) const;
|
||||||
|
|
||||||
|
bool is_bogus_class() const;
|
||||||
|
|
||||||
#ifdef HAVE_PYTHON
|
#ifdef HAVE_PYTHON
|
||||||
void set_class_def(PyObject *class_def);
|
void set_class_def(PyObject *class_def);
|
||||||
PyObject *get_class_def() const;
|
PyObject *get_class_def() const;
|
||||||
@ -70,7 +72,7 @@ PUBLISHED:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DCClass(const string &name);
|
DCClass(const string &name, bool bogus_class = false);
|
||||||
~DCClass();
|
~DCClass();
|
||||||
|
|
||||||
void write(ostream &out, bool brief, int indent_level) const;
|
void write(ostream &out, bool brief, int indent_level) const;
|
||||||
@ -83,6 +85,7 @@ private:
|
|||||||
|
|
||||||
// These members define the primary interface to the distributed
|
// These members define the primary interface to the distributed
|
||||||
// class as read from the file.
|
// class as read from the file.
|
||||||
|
bool _bogus_class;
|
||||||
int _number;
|
int _number;
|
||||||
string _name;
|
string _name;
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
DCFile::
|
DCFile::
|
||||||
DCFile() {
|
DCFile() {
|
||||||
|
_all_classes_valid = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
@ -232,7 +233,9 @@ write(ostream &out, bool brief) const {
|
|||||||
|
|
||||||
Classes::const_iterator ci;
|
Classes::const_iterator ci;
|
||||||
for (ci = _classes.begin(); ci != _classes.end(); ++ci) {
|
for (ci = _classes.begin(); ci != _classes.end(); ++ci) {
|
||||||
|
if (!(*ci)->is_bogus_class()) {
|
||||||
(*ci)->write(out, brief, 0);
|
(*ci)->write(out, brief, 0);
|
||||||
|
}
|
||||||
out << "\n";
|
out << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,6 +281,19 @@ get_class_by_name(const string &name) {
|
|||||||
return (DCClass *)NULL;
|
return (DCClass *)NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: DCFile::all_classes_valid
|
||||||
|
// Access: Published
|
||||||
|
// Description: Returns true if all of the classes read from the DC
|
||||||
|
// file were defined and valid, or false if any of them
|
||||||
|
// were undefined ("bogus classes"). If this is true,
|
||||||
|
// we might have read a partial file.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
bool DCFile::
|
||||||
|
all_classes_valid() const {
|
||||||
|
return _all_classes_valid;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: DCFile::get_num_import_modules
|
// Function: DCFile::get_num_import_modules
|
||||||
// Access: Published
|
// Access: Published
|
||||||
@ -379,6 +395,11 @@ add_class(DCClass *dclass) {
|
|||||||
|
|
||||||
dclass->_number = get_num_classes();
|
dclass->_number = get_num_classes();
|
||||||
_classes.push_back(dclass);
|
_classes.push_back(dclass);
|
||||||
|
|
||||||
|
if (dclass->is_bogus_class()) {
|
||||||
|
_all_classes_valid = false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,6 +50,8 @@ PUBLISHED:
|
|||||||
DCClass *get_class(int n);
|
DCClass *get_class(int n);
|
||||||
DCClass *get_class_by_name(const string &name);
|
DCClass *get_class_by_name(const string &name);
|
||||||
|
|
||||||
|
bool all_classes_valid() const;
|
||||||
|
|
||||||
int get_num_import_modules() const;
|
int get_num_import_modules() const;
|
||||||
string get_import_module(int n) const;
|
string get_import_module(int n) const;
|
||||||
int get_num_import_symbols(int n) const;
|
int get_num_import_symbols(int n) const;
|
||||||
@ -79,6 +81,8 @@ public:
|
|||||||
typedef pvector<Import> Imports;
|
typedef pvector<Import> Imports;
|
||||||
Imports _imports;
|
Imports _imports;
|
||||||
|
|
||||||
|
bool _all_classes_valid;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// This map is built up during parsing for the convenience of the parser.
|
// This map is built up during parsing for the convenience of the parser.
|
||||||
typedef pmap<string, DCClass *> ClassesByName;
|
typedef pmap<string, DCClass *> ClassesByName;
|
||||||
|
@ -112,8 +112,7 @@ dclass_name:
|
|||||||
DCFile::ClassesByName::const_iterator ni;
|
DCFile::ClassesByName::const_iterator ni;
|
||||||
ni = dc_file->_classes_by_name.find($1);
|
ni = dc_file->_classes_by_name.find($1);
|
||||||
if (ni == dc_file->_classes_by_name.end()) {
|
if (ni == dc_file->_classes_by_name.end()) {
|
||||||
dcyywarning("Unknown class: " + $1);
|
$$ = new DCClass($1, true);
|
||||||
$$ = new DCClass($1);
|
|
||||||
dc_file->add_class($$);
|
dc_file->add_class($$);
|
||||||
} else {
|
} else {
|
||||||
$$ = (*ni).second;
|
$$ = (*ni).second;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user