diff --git a/include/cantera/base/global.h b/include/cantera/base/global.h index 75342b1d8..3a1d5309f 100644 --- a/include/cantera/base/global.h +++ b/include/cantera/base/global.h @@ -177,6 +177,9 @@ void writelogendl(); //! @copydoc Application::Messages::logerror void error(const std::string& msg); +//! @copydoc Application::warn_deprecated +void warn_deprecated(const std::string& method, const std::string& extra=""); + //! @copydoc Application::Messages::setLogger void setLogger(Logger* logwriter); diff --git a/src/base/application.cpp b/src/base/application.cpp index 448a5b0de..a085695cf 100644 --- a/src/base/application.cpp +++ b/src/base/application.cpp @@ -366,6 +366,17 @@ void Application::ApplicationDestroy() } } +void Application::warn_deprecated(const std::string& method, + const std::string& extra) +{ + if (warnings.count(method)) { + return; + } + warnings.insert(method); + writelog("WARNING: '" + method + "' is deprecated. " + extra); + writelogendl(); +} + void Application::thread_complete() { #if defined(THREAD_SAFE_CANTERA) diff --git a/src/base/application.h b/src/base/application.h index 6c74eb709..a6959736e 100644 --- a/src/base/application.h +++ b/src/base/application.h @@ -6,6 +6,7 @@ #include "cantera/base/logger.h" #include +#include #include #include #include @@ -435,6 +436,12 @@ public: pMessenger->logerror(msg); } + //! Print a warning indicating that *method* is deprecated. Additional + //! information (removal version, alternatives) can be specified in + //! *extra*. Deprecation warnings are printed once per method per + //! invocation of the application. + void warn_deprecated(const std::string& method, const std::string& extra=""); + //! @copydoc Messages::setLogger void setLogger(Logger* logwriter) { pMessenger->setLogger(logwriter); @@ -535,6 +542,9 @@ protected: std::string tmp_dir; //! Current vector of xml file trees that have been previously parsed std::map xmlfiles; + //! Vector of deprecation warnings that have been emitted (to suppress duplicates) + std::set warnings; + //! Current pointer to the logwriter //Logger* logwriter; #ifdef WITH_HTML_LOGS diff --git a/src/base/global.cpp b/src/base/global.cpp index 22bb40521..7426e2103 100644 --- a/src/base/global.cpp +++ b/src/base/global.cpp @@ -72,6 +72,11 @@ void error(const std::string& msg) app()->logerror(msg); } +void warn_deprecated(const std::string& method, const std::string& extra) +{ + app()->warn_deprecated(method, extra); +} + // **************** HTML Logging **************** #ifdef WITH_HTML_LOGS