diff --git a/dtool/src/dconfig/dconfig.h b/dtool/src/dconfig/dconfig.h index 1c34823f11..42074b1f3d 100644 --- a/dtool/src/dconfig/dconfig.h +++ b/dtool/src/dconfig/dconfig.h @@ -157,7 +157,7 @@ ConfigTable::Symbol& Config::GetAll(const ConfigString sym, ConfigTable::Symbol& s) { Init(); - ConfigVariableList var(sym, 0, "DConfig"); + ConfigVariableList var(sym, "DConfig"); int num_values = var.get_num_values(); for (int i = 0; i < num_values; i++) { @@ -172,7 +172,7 @@ template bool Config::GetBool(const ConfigString sym, bool def) { Init(); - ConfigVariableBool var(sym, def, 0, "DConfig"); + ConfigVariableBool var(sym, def, "DConfig"); return var.get_value(); } @@ -180,7 +180,7 @@ template int Config::GetInt(const ConfigString sym, int def) { Init(); - ConfigVariableInt var(sym, def, 0, "DConfig"); + ConfigVariableInt var(sym, def, "DConfig"); return var.get_value(); } @@ -188,7 +188,7 @@ template float Config::GetFloat(const ConfigString sym, float def) { Init(); - ConfigVariableDouble var(sym, def, 0, "DConfig"); + ConfigVariableDouble var(sym, def, "DConfig"); return var.get_value(); } @@ -196,7 +196,7 @@ template double Config::GetDouble(const ConfigString sym, double def) { Init(); - ConfigVariableDouble var(sym, def, 0, "DConfig"); + ConfigVariableDouble var(sym, def, "DConfig"); return var.get_value(); } @@ -205,7 +205,7 @@ ConfigString Config::GetString(const ConfigString sym, const ConfigString def) { Init(); - ConfigVariableString var(sym, def, 0, "DConfig"); + ConfigVariableString var(sym, def, "DConfig"); return var.get_value(); } diff --git a/dtool/src/dtoolutil/dSearchPath.cxx b/dtool/src/dtoolutil/dSearchPath.cxx index 0aec8cd60f..76e164bd6e 100644 --- a/dtool/src/dtoolutil/dSearchPath.cxx +++ b/dtool/src/dtoolutil/dSearchPath.cxx @@ -283,19 +283,28 @@ get_directory(int n) const { Filename DSearchPath:: find_file(const Filename &filename) const { if (filename.is_local()) { - Directories::const_iterator di; - for (di = _directories.begin(); di != _directories.end(); ++di) { - Filename match((*di), filename); - if (match.exists()) { - if ((*di) == "." && filename.is_fully_qualified()) { - // A special case for the "." directory: to avoid prefixing - // an endless stream of ./ in front of files, if the - // filename already has a ./ prefixed - // (i.e. is_fully_qualified() is true), we don't - // prefix another one. - return filename; - } else { - return match; + if (_directories.empty()) { + // Let's say an empty search path is the same as a search path + // containing just ".". + if (filename.exists()) { + return filename; + } + + } else { + Directories::const_iterator di; + for (di = _directories.begin(); di != _directories.end(); ++di) { + Filename match((*di), filename); + if (match.exists()) { + if ((*di) == "." && filename.is_fully_qualified()) { + // A special case for the "." directory: to avoid prefixing + // an endless stream of ./ in front of files, if the + // filename already has a ./ prefixed + // (i.e. is_fully_qualified() is true), we don't + // prefix another one. + return filename; + } else { + return match; + } } } } @@ -322,21 +331,30 @@ find_all_files(const Filename &filename, int num_added = 0; if (filename.is_local()) { - Directories::const_iterator di; - for (di = _directories.begin(); di != _directories.end(); ++di) { - Filename match((*di), filename); - if (match.exists()) { - if ((*di) == "." && filename.is_fully_qualified()) { - // A special case for the "." directory: to avoid prefixing - // an endless stream of ./ in front of files, if the - // filename already has a ./ prefixed - // (i.e. is_fully_qualified() is true), we don't - // prefix another one. - results.add_file(filename); - } else { - results.add_file(match); + if (_directories.empty()) { + // Let's say an empty search path is the same as a search path + // containing just ".". + if (filename.exists()) { + results.add_file(filename); + } + + } else { + Directories::const_iterator di; + for (di = _directories.begin(); di != _directories.end(); ++di) { + Filename match((*di), filename); + if (match.exists()) { + if ((*di) == "." && filename.is_fully_qualified()) { + // A special case for the "." directory: to avoid prefixing + // an endless stream of ./ in front of files, if the + // filename already has a ./ prefixed + // (i.e. is_fully_qualified() is true), we don't + // prefix another one. + results.add_file(filename); + } else { + results.add_file(match); + } + num_added++; } - num_added++; } } } diff --git a/dtool/src/interrogate/interrogate_module.cxx b/dtool/src/interrogate/interrogate_module.cxx index 12e5280d1f..ddc77b1bca 100644 --- a/dtool/src/interrogate/interrogate_module.cxx +++ b/dtool/src/interrogate/interrogate_module.cxx @@ -265,5 +265,11 @@ main(int argc, char *argv[]) { } } + if (interrogate_error_flag()) { + nout << "Error reading interrogate data.\n"; + output_code_filename.unlink(); + exit(1); + } + return (0); } diff --git a/dtool/src/interrogatedb/config_interrogatedb.cxx b/dtool/src/interrogatedb/config_interrogatedb.cxx index 87024f50b2..4f7f986f1e 100644 --- a/dtool/src/interrogatedb/config_interrogatedb.cxx +++ b/dtool/src/interrogatedb/config_interrogatedb.cxx @@ -70,6 +70,5 @@ ConfigureFn(config_interrogatedb) { } ConfigVariableSearchPath interrogatedb_path -("interrogatedb-path", 0, - "The search path for interrogate's *.in files."); +("interrogatedb-path", "The search path for interrogate's *.in files."); diff --git a/dtool/src/prc/configVariable.I b/dtool/src/prc/configVariable.I index f6ee7b6489..ff7abe8ac9 100644 --- a/dtool/src/prc/configVariable.I +++ b/dtool/src/prc/configVariable.I @@ -37,8 +37,8 @@ ConfigVariable(const string &name, ConfigVariable::ValueType value_type) : //////////////////////////////////////////////////////////////////// INLINE ConfigVariable:: ConfigVariable(const string &name, ConfigVariable::ValueType value_type, - int flags, const string &description) : - ConfigVariableBase(name, value_type, flags, description) + const string &description, int flags) : + ConfigVariableBase(name, value_type, description, flags) { } diff --git a/dtool/src/prc/configVariable.h b/dtool/src/prc/configVariable.h index 29b8769daa..ab366a9fe7 100644 --- a/dtool/src/prc/configVariable.h +++ b/dtool/src/prc/configVariable.h @@ -39,7 +39,7 @@ class EXPCL_DTOOLCONFIG ConfigVariable : public ConfigVariableBase { protected: INLINE ConfigVariable(const string &name, ValueType type); INLINE ConfigVariable(const string &name, ValueType type, - int flags, const string &description); + const string &description, int flags); PUBLISHED: INLINE ConfigVariable(const string &name); diff --git a/dtool/src/prc/configVariableBase.I b/dtool/src/prc/configVariableBase.I index 83c95481d6..aea916b51d 100644 --- a/dtool/src/prc/configVariableBase.I +++ b/dtool/src/prc/configVariableBase.I @@ -62,6 +62,17 @@ get_value_type() const { return _core->get_value_type(); } +//////////////////////////////////////////////////////////////////// +// Function: ConfigVariableBase::get_description +// Access: Published +// Description: Returns the brief description of this variable, if +// it has been defined. +//////////////////////////////////////////////////////////////////// +INLINE const string &ConfigVariableBase:: +get_description() const { + return _core->get_description(); +} + //////////////////////////////////////////////////////////////////// // Function: ConfigVariableBase::get_flags // Access: Public @@ -129,18 +140,6 @@ is_dynamic() const { return _core->is_dynamic(); } -//////////////////////////////////////////////////////////////////// -// Function: ConfigVariableBase::get_description -// Access: Published -// Description: Returns the one-line description of this variable. -// If the variable has not yet been defined, this will -// be empty. -//////////////////////////////////////////////////////////////////// -INLINE const string &ConfigVariableBase:: -get_description() const { - return _core->get_description(); -} - //////////////////////////////////////////////////////////////////// // Function: ConfigVariableBase::clear_local_value // Access: Published diff --git a/dtool/src/prc/configVariableBase.cxx b/dtool/src/prc/configVariableBase.cxx index f11ce6b2c6..3acc1d0f76 100644 --- a/dtool/src/prc/configVariableBase.cxx +++ b/dtool/src/prc/configVariableBase.cxx @@ -27,7 +27,7 @@ ConfigVariableBase:: ConfigVariableBase(const string &name, ConfigVariableBase::ValueType value_type, - int flags, const string &description) : + const string &description, int flags) : _core(ConfigVariableManager::get_global_ptr()->make_variable(name)) { _core->set_value_type(value_type); diff --git a/dtool/src/prc/configVariableBase.h b/dtool/src/prc/configVariableBase.h index 7a3c174a2f..b64b72e76f 100644 --- a/dtool/src/prc/configVariableBase.h +++ b/dtool/src/prc/configVariableBase.h @@ -42,18 +42,18 @@ class EXPCL_DTOOLCONFIG ConfigVariableBase : public ConfigFlags { protected: INLINE ConfigVariableBase(const string &name, ValueType type); ConfigVariableBase(const string &name, ValueType type, - int flags, const string &description); + const string &description, int flags); INLINE ~ConfigVariableBase(); PUBLISHED: INLINE const string &get_name() const; INLINE ValueType get_value_type() const; + INLINE const string &get_description() const; INLINE int get_flags() const; INLINE bool is_closed() const; INLINE int get_trust_level() const; INLINE bool is_dynamic() const; - INLINE const string &get_description() const; INLINE bool clear_local_value(); INLINE bool has_local_value() const; diff --git a/dtool/src/prc/configVariableBool.I b/dtool/src/prc/configVariableBool.I index 4500b177c4..5c59ab5d2e 100644 --- a/dtool/src/prc/configVariableBool.I +++ b/dtool/src/prc/configVariableBool.I @@ -35,9 +35,9 @@ ConfigVariableBool(const string &name) : // Description: //////////////////////////////////////////////////////////////////// INLINE ConfigVariableBool:: -ConfigVariableBool(const string &name, bool default_value, int flags, - const string &description) : - ConfigVariable(name, VT_bool, flags, description) +ConfigVariableBool(const string &name, bool default_value, + const string &description, int flags) : + ConfigVariable(name, VT_bool, description, flags) { _core->set_default_value(default_value ? "1" : "0"); _core->set_used(); diff --git a/dtool/src/prc/configVariableBool.h b/dtool/src/prc/configVariableBool.h index 2dee06feca..ab23750738 100644 --- a/dtool/src/prc/configVariableBool.h +++ b/dtool/src/prc/configVariableBool.h @@ -31,8 +31,7 @@ class EXPCL_DTOOLCONFIG ConfigVariableBool : public ConfigVariable { PUBLISHED: INLINE ConfigVariableBool(const string &name); INLINE ConfigVariableBool(const string &name, bool default_value, - int flags = 0, - const string &description = string()); + const string &description = string(), int flags = 0); INLINE void operator = (bool value); INLINE operator bool () const; diff --git a/dtool/src/prc/configVariableCore.I b/dtool/src/prc/configVariableCore.I index bef89686fe..d6a27f42a6 100644 --- a/dtool/src/prc/configVariableCore.I +++ b/dtool/src/prc/configVariableCore.I @@ -50,6 +50,17 @@ get_value_type() const { return _value_type; } +//////////////////////////////////////////////////////////////////// +// Function: ConfigVariableCore::get_description +// Access: Public +// Description: Returns the brief description of this variable, if +// it has been defined. +//////////////////////////////////////////////////////////////////// +INLINE const string &ConfigVariableCore:: +get_description() const { + return _description; +} + //////////////////////////////////////////////////////////////////// // Function: ConfigVariableCore::get_flags // Access: Public @@ -117,18 +128,6 @@ is_dynamic() const { return (_flags & F_dynamic) != 0; } -//////////////////////////////////////////////////////////////////// -// Function: ConfigVariableCore::get_description -// Access: Public -// Description: Returns the one-line description of this variable. -// If the variable has not yet been defined, this will -// be empty. -//////////////////////////////////////////////////////////////////// -INLINE const string &ConfigVariableCore:: -get_description() const { - return _description; -} - //////////////////////////////////////////////////////////////////// // Function: ConfigVariableCore::get_default_value // Access: Public diff --git a/dtool/src/prc/configVariableCore.h b/dtool/src/prc/configVariableCore.h index 5c8643f6e1..3bcc982f5f 100644 --- a/dtool/src/prc/configVariableCore.h +++ b/dtool/src/prc/configVariableCore.h @@ -49,11 +49,11 @@ public: INLINE bool is_used() const; INLINE ValueType get_value_type() const; + INLINE const string &get_description() const; INLINE int get_flags() const; INLINE bool is_closed() const; INLINE int get_trust_level() const; INLINE bool is_dynamic() const; - INLINE const string &get_description() const; INLINE const ConfigDeclaration *get_default_value() const; void set_value_type(ValueType value_type); @@ -95,8 +95,8 @@ private: string _name; bool _is_used; ValueType _value_type; - int _flags; string _description; + int _flags; ConfigDeclaration *_default_value; ConfigDeclaration *_local_value; diff --git a/dtool/src/prc/configVariableDouble.cxx b/dtool/src/prc/configVariableDouble.cxx index 8cbf63d1fb..3eb260f5fd 100644 --- a/dtool/src/prc/configVariableDouble.cxx +++ b/dtool/src/prc/configVariableDouble.cxx @@ -24,9 +24,9 @@ // Description: //////////////////////////////////////////////////////////////////// ConfigVariableDouble:: -ConfigVariableDouble(const string &name, double default_value, int flags, - const string &description) : - ConfigVariable(name, ConfigVariableCore::VT_double, flags, description) +ConfigVariableDouble(const string &name, double default_value, + const string &description, int flags) : + ConfigVariable(name, ConfigVariableCore::VT_double, description, flags) { ostringstream strm; strm << default_value; diff --git a/dtool/src/prc/configVariableDouble.h b/dtool/src/prc/configVariableDouble.h index 7c6795118e..74f55ec39f 100644 --- a/dtool/src/prc/configVariableDouble.h +++ b/dtool/src/prc/configVariableDouble.h @@ -31,8 +31,7 @@ class EXPCL_DTOOLCONFIG ConfigVariableDouble : public ConfigVariable { PUBLISHED: INLINE ConfigVariableDouble(const string &name); ConfigVariableDouble(const string &name, double default_value, - int flags = 0, - const string &description = string()); + const string &description = string(), int flags = 0); INLINE void operator = (double value); INLINE operator double () const; diff --git a/dtool/src/prc/configVariableEnum.I b/dtool/src/prc/configVariableEnum.I index 30c3f6354f..fff0830c3c 100644 --- a/dtool/src/prc/configVariableEnum.I +++ b/dtool/src/prc/configVariableEnum.I @@ -24,11 +24,9 @@ //////////////////////////////////////////////////////////////////// template INLINE ConfigVariableEnum:: -ConfigVariableEnum(const string &name, ParseFunc *func, - EnumType default_value, int flags, - const string &description) : - ConfigVariable(name, ConfigVariableCore::VT_enum, flags, description), - _func(func), +ConfigVariableEnum(const string &name, EnumType default_value, + const string &description, int flags) : + ConfigVariable(name, ConfigVariableCore::VT_enum, description, flags), _value_seq(-1), _value(default_value), _got_default_value(true), @@ -163,12 +161,16 @@ set_word(int n, EnumType value) { // Function: ConfigVariableEnum::parse_string // Access: Public, Virtual // Description: Turns the string value into a value of the enumerated -// type by calling the parse function. +// type by invoking its predefined operator >> (istream) +// operator. //////////////////////////////////////////////////////////////////// template INLINE EnumType ConfigVariableEnum:: parse_string(const string &value) const { - return (*_func)(value); + istringstream strm(value); + EnumType result; + strm >> result; + return result; } //////////////////////////////////////////////////////////////////// @@ -176,8 +178,7 @@ parse_string(const string &value) const { // Access: Public, Virtual // Description: The format_enum() method assumes the enumerated type // has a valid operator << (ostream) defined, which -// balances against the parse function passed to the -// constructor. +// balances against the operator >> (istream) operator. //////////////////////////////////////////////////////////////////// template INLINE string ConfigVariableEnum:: diff --git a/dtool/src/prc/configVariableEnum.h b/dtool/src/prc/configVariableEnum.h index e3f110b9f2..e8ca6ec305 100644 --- a/dtool/src/prc/configVariableEnum.h +++ b/dtool/src/prc/configVariableEnum.h @@ -30,21 +30,16 @@ // outside of C++ anyway. // // This variable assumes that the enumerated type in -// question has an output operator defined that does the -// right thing (outputting a sensible string for the -// type). It also requires a function that converts -// from the strings written by the output operator back -// to the type; this function pointer should be passed -// to the constructor. +// question has input and output stream operators +// defined that do the right thing (outputting a +// sensible string for the type, and converting a string +// to the correct value). //////////////////////////////////////////////////////////////////// template class ConfigVariableEnum : public ConfigVariable { public: - typedef EnumType ParseFunc(const string &value); - - ConfigVariableEnum(const string &name, ParseFunc *func, - EnumType default_value, int flags = 0, - const string &description = string()); + ConfigVariableEnum(const string &name, EnumType default_value, + const string &description = string(), int flags = 0); INLINE ~ConfigVariableEnum(); INLINE void operator = (EnumType value); @@ -64,8 +59,6 @@ private: INLINE EnumType parse_string(const string &value) const; INLINE string format_enum(EnumType value) const; - ParseFunc *_func; - int _value_seq; EnumType _value; diff --git a/dtool/src/prc/configVariableInt.cxx b/dtool/src/prc/configVariableInt.cxx index f770a59f17..8ca9d78177 100644 --- a/dtool/src/prc/configVariableInt.cxx +++ b/dtool/src/prc/configVariableInt.cxx @@ -24,9 +24,9 @@ // Description: //////////////////////////////////////////////////////////////////// ConfigVariableInt:: -ConfigVariableInt(const string &name, int default_value, int flags, - const string &description) : - ConfigVariable(name, ConfigVariableCore::VT_int, flags, description) +ConfigVariableInt(const string &name, int default_value, + const string &description, int flags) : + ConfigVariable(name, ConfigVariableCore::VT_int, description, flags) { ostringstream strm; strm << default_value; diff --git a/dtool/src/prc/configVariableInt.h b/dtool/src/prc/configVariableInt.h index ea26036631..3e756fed97 100644 --- a/dtool/src/prc/configVariableInt.h +++ b/dtool/src/prc/configVariableInt.h @@ -31,8 +31,7 @@ class EXPCL_DTOOLCONFIG ConfigVariableInt : public ConfigVariable { PUBLISHED: INLINE ConfigVariableInt(const string &name); ConfigVariableInt(const string &name, int default_value, - int flags = 0, - const string &description = string()); + const string &description = string(), int flags = 0); INLINE void operator = (int value); INLINE operator int () const; diff --git a/dtool/src/prc/configVariableList.cxx b/dtool/src/prc/configVariableList.cxx index 6940179088..627d452285 100644 --- a/dtool/src/prc/configVariableList.cxx +++ b/dtool/src/prc/configVariableList.cxx @@ -25,8 +25,8 @@ //////////////////////////////////////////////////////////////////// ConfigVariableList:: ConfigVariableList(const string &name, - int flags, const string &description) : - ConfigVariableBase(name, VT_list, flags, description) + const string &description, int flags) : + ConfigVariableBase(name, VT_list, description, flags) { // A list variable implicitly defines a default value of the empty // string. This is just to prevent the core variable from diff --git a/dtool/src/prc/configVariableList.h b/dtool/src/prc/configVariableList.h index 8f46f22b25..99a4857618 100644 --- a/dtool/src/prc/configVariableList.h +++ b/dtool/src/prc/configVariableList.h @@ -38,8 +38,8 @@ //////////////////////////////////////////////////////////////////// class EXPCL_DTOOLCONFIG ConfigVariableList : public ConfigVariableBase { PUBLISHED: - ConfigVariableList(const string &name, int flags = 0, - const string &description = string()); + ConfigVariableList(const string &name, + const string &description = string(), int flags = 0); INLINE ~ConfigVariableList(); INLINE int get_num_values() const; diff --git a/dtool/src/prc/configVariableSearchPath.cxx b/dtool/src/prc/configVariableSearchPath.cxx index 5c63ce1ed4..a12a24e3ed 100644 --- a/dtool/src/prc/configVariableSearchPath.cxx +++ b/dtool/src/prc/configVariableSearchPath.cxx @@ -25,8 +25,8 @@ //////////////////////////////////////////////////////////////////// ConfigVariableSearchPath:: ConfigVariableSearchPath(const string &name, - int flags, const string &description) : - ConfigVariableBase(name, VT_search_path, flags, description), + const string &description, int flags) : + ConfigVariableBase(name, VT_search_path, description, flags), _value_seq(-1), _value_stale(true) { @@ -63,9 +63,9 @@ reload_search_path() { _value.clear(); _value.append_path(_prefix); - int num_declarations = _core->get_num_declarations(); - for (int i = 0; i < num_declarations; i++) { - _value.append_directory(_core->get_declaration(i)->get_string_value()); + int num_unique_references = _core->get_num_unique_references(); + for (int i = 0; i < num_unique_references; i++) { + _value.append_directory(_core->get_unique_reference(i)->get_string_value()); } _value.append_path(_postfix); diff --git a/dtool/src/prc/configVariableSearchPath.h b/dtool/src/prc/configVariableSearchPath.h index f0c1cdb8bb..0a659ac548 100644 --- a/dtool/src/prc/configVariableSearchPath.h +++ b/dtool/src/prc/configVariableSearchPath.h @@ -45,8 +45,8 @@ //////////////////////////////////////////////////////////////////// class EXPCL_DTOOLCONFIG ConfigVariableSearchPath : public ConfigVariableBase { PUBLISHED: - ConfigVariableSearchPath(const string &name, int flags = 0, - const string &description = string()); + ConfigVariableSearchPath(const string &name, + const string &description = string(), int flags = 0); INLINE ~ConfigVariableSearchPath(); INLINE operator const DSearchPath & () const; diff --git a/dtool/src/prc/configVariableString.I b/dtool/src/prc/configVariableString.I index 47b49550bc..070e290d86 100644 --- a/dtool/src/prc/configVariableString.I +++ b/dtool/src/prc/configVariableString.I @@ -35,9 +35,9 @@ ConfigVariableString(const string &name) : // Description: //////////////////////////////////////////////////////////////////// INLINE ConfigVariableString:: -ConfigVariableString(const string &name, string default_value, int flags, - const string &description) : - ConfigVariable(name, VT_string, flags, description) +ConfigVariableString(const string &name, string default_value, + const string &description, int flags) : + ConfigVariable(name, VT_string, description, flags) { _core->set_default_value(default_value); _core->set_used(); diff --git a/dtool/src/prc/configVariableString.h b/dtool/src/prc/configVariableString.h index 7fd7da8b07..e848ac9230 100644 --- a/dtool/src/prc/configVariableString.h +++ b/dtool/src/prc/configVariableString.h @@ -32,8 +32,7 @@ class EXPCL_DTOOLCONFIG ConfigVariableString : public ConfigVariable { PUBLISHED: INLINE ConfigVariableString(const string &name); INLINE ConfigVariableString(const string &name, string default_value, - int flags = 0, - const string &description = string()); + const string &description = string(), int flags = 0); INLINE void operator = (const string &value); INLINE operator string () const; diff --git a/dtool/src/prc/notify.cxx b/dtool/src/prc/notify.cxx index 04c595029e..42a385290b 100644 --- a/dtool/src/prc/notify.cxx +++ b/dtool/src/prc/notify.cxx @@ -28,7 +28,7 @@ Notify *Notify::_global_ptr = (Notify *)NULL; static ConfigVariableBool assert_abort -("assert-abort", false, 0, +("assert-abort", false, "Set this true to trigger a core dump and/or stack trace when the first assertion fails"); @@ -528,7 +528,7 @@ config_initialized() { if (_ostream_ptr == &cerr) { ConfigVariableString notify_output - ("notify-output", "", 0, + ("notify-output", "", "The filename to which to write all the output of notify"); if (!notify_output.empty()) { diff --git a/dtool/src/prc/notifyCategory.I b/dtool/src/prc/notifyCategory.I index b17da76be3..880e30fca8 100644 --- a/dtool/src/prc/notifyCategory.I +++ b/dtool/src/prc/notifyCategory.I @@ -207,3 +207,8 @@ INLINE ostream &NotifyCategory:: fatal(bool prefix) const { return out(NS_fatal, prefix); } + +INLINE ostream & +operator << (ostream &out, const NotifyCategory &cat) { + return out << cat.get_fullname(); +} diff --git a/dtool/src/prc/notifyCategory.cxx b/dtool/src/prc/notifyCategory.cxx index 74c4897464..a7d9aa5228 100644 --- a/dtool/src/prc/notifyCategory.cxx +++ b/dtool/src/prc/notifyCategory.cxx @@ -28,7 +28,7 @@ time_t NotifyCategory::_server_delta = 0; static ConfigVariableBool notify_timestamp -("notify-timestamp", false, 0, +("notify-timestamp", false, "Set true to output the date & time with each notify message."); //////////////////////////////////////////////////////////////////// @@ -42,7 +42,8 @@ NotifyCategory(const string &fullname, const string &basename, _fullname(fullname), _basename(basename), _parent(parent), - _severity(get_config_name(), Notify::string_severity, NS_unspecified, + _severity(get_config_name(), NS_unspecified, + "Default severity of this notify category", ConfigVariable::F_dynamic) { if (_parent != (NotifyCategory *)NULL) { diff --git a/dtool/src/prc/notifyCategory.h b/dtool/src/prc/notifyCategory.h index 57c666eedc..38995a9665 100644 --- a/dtool/src/prc/notifyCategory.h +++ b/dtool/src/prc/notifyCategory.h @@ -93,9 +93,7 @@ private: friend class Notify; }; -INLINE ostream &operator << (ostream &out, const NotifyCategory &cat) { - return out << cat.get_fullname(); -} +INLINE ostream &operator << (ostream &out, const NotifyCategory &cat); #include "notifyCategory.I" diff --git a/dtool/src/prc/notifySeverity.cxx b/dtool/src/prc/notifySeverity.cxx index 1de7ab9c26..97646e5d80 100644 --- a/dtool/src/prc/notifySeverity.cxx +++ b/dtool/src/prc/notifySeverity.cxx @@ -17,8 +17,10 @@ //////////////////////////////////////////////////////////////////// #include "notifySeverity.h" +#include "notify.h" -ostream &operator << (ostream &out, NotifySeverity severity) { +ostream & +operator << (ostream &out, NotifySeverity severity) { switch (severity) { case NS_spam: return out << "spam"; @@ -44,3 +46,11 @@ ostream &operator << (ostream &out, NotifySeverity severity) { return out << "**invalid severity**"; } + +istream & +operator >> (istream &in, NotifySeverity &severity) { + string word; + in >> word; + severity = Notify::string_severity(word); + return in; +} diff --git a/dtool/src/prc/notifySeverity.h b/dtool/src/prc/notifySeverity.h index 3602ecbd7b..a5ff242478 100644 --- a/dtool/src/prc/notifySeverity.h +++ b/dtool/src/prc/notifySeverity.h @@ -34,5 +34,7 @@ enum NotifySeverity { END_PUBLISH EXPCL_DTOOLCONFIG ostream &operator << (ostream &out, NotifySeverity severity); +EXPCL_DTOOLCONFIG istream &operator >> (istream &in, NotifySeverity &severity); + #endif