diff --git a/include/cantera/base/global.h b/include/cantera/base/global.h index f186f5163..1f2e70ec2 100644 --- a/include/cantera/base/global.h +++ b/include/cantera/base/global.h @@ -187,6 +187,22 @@ void warn_deprecated(const std::string& method, const std::string& extra=""); //! @copydoc Application::suppress_deprecation_warnings void suppress_deprecation_warnings(); +//! helper function passing user warning to global handler +void _warn_user(const std::string& method, const std::string& extra); + +/*! + * Print a user warning raised from *method*. + * + * @param method method name + * @param msg C format string for the following arguments + * @param args arguments used to interpolate the format string + */ +template +void warn_user(const std::string& method, const std::string& msg, + const Args&... args) { + _warn_user(method, fmt::format(msg, args...)); +} + //! @copydoc Application::make_deprecation_warnings_fatal void make_deprecation_warnings_fatal(); diff --git a/src/base/application.cpp b/src/base/application.cpp index b40ac25d4..24f5823d1 100644 --- a/src/base/application.cpp +++ b/src/base/application.cpp @@ -170,7 +170,14 @@ void Application::warn_deprecated(const std::string& method, return; } warnings.insert(method); - writelog("WARNING: '" + method + "' is deprecated. " + extra); + writelog("DeprecationWarning: '" + method + "': " + extra); + writelogendl(); +} + +void Application::warn_user(const std::string& method, + const std::string& extra) +{ + writelog("UserWarning: '" + method + "': " + extra); writelogendl(); } diff --git a/src/base/application.h b/src/base/application.h index 62d87b77b..aefa7f9d0 100644 --- a/src/base/application.h +++ b/src/base/application.h @@ -347,6 +347,10 @@ public: m_fatal_deprecation_warnings = true; } + //! Print a user warning arising during usage of *method*. Additional + //! information can be specified in *extra*. + void warn_user(const std::string& method, const std::string& extra=""); + //! Globally disable printing of warnings about problematic thermo data, //! e.g. NASA polynomials with discontinuities at the midpoint temperature. void suppress_thermo_warnings(bool suppress=true) { diff --git a/src/base/global.cpp b/src/base/global.cpp index d4ba8235d..cbf762033 100644 --- a/src/base/global.cpp +++ b/src/base/global.cpp @@ -56,6 +56,11 @@ void warn_deprecated(const std::string& method, const std::string& extra) app()->warn_deprecated(method, extra); } +void _warn_user(const std::string& method, const std::string& extra) +{ + app()->warn_user(method, extra); +} + void suppress_deprecation_warnings() { app()->suppress_deprecation_warnings();