diff --git a/.gitmodules b/.gitmodules index 39ac29ed6afd0e4865fef71904e6d65b7209da30..6ab722e418f1fe14e6cecd62a8aa69366b8941ae 100644 --- a/.gitmodules +++ b/.gitmodules @@ -46,3 +46,6 @@ [submodule "ThirdParty/json-cmake"] path = ThirdParty/json-cmake url = https://github.com/ufz/json-cmake.git +[submodule "ThirdParty/spdlog"] + path = ThirdParty/spdlog + url = https://github.com/gabime/spdlog.git diff --git a/Applications/ApplicationsLib/CMakeLists.txt b/Applications/ApplicationsLib/CMakeLists.txt index b20709fdb1124f8d0a62acc65729cf8d524c5faf..dd3feb419ba09ecd7b051efd7f62f0f16b8753e6 100644 --- a/Applications/ApplicationsLib/CMakeLists.txt +++ b/Applications/ApplicationsLib/CMakeLists.txt @@ -6,12 +6,13 @@ set(LIB_SOURCES ${SOURCES_APPLICATIONSLIB}) ogs_add_library(ApplicationsLib ${LIB_SOURCES}) target_link_libraries(ApplicationsLib - PUBLIC BaseLib GeoLib NumLib Processes logog + PUBLIC BaseLib GeoLib NumLib Processes PRIVATE MathLib MeshLib MeshGeoToolsLib ParameterLib - ProcessLib) + ProcessLib + spdlog::spdlog) # Set cpp definitions if the cmake option is enabled for the given process. foreach(process ${ProcessesList}) diff --git a/Applications/ApplicationsLib/LogogSetup.h b/Applications/ApplicationsLib/LogogSetup.h deleted file mode 100644 index c4812fd0bd6aeaa9a00b668642afce5fa56d84f2..0000000000000000000000000000000000000000 --- a/Applications/ApplicationsLib/LogogSetup.h +++ /dev/null @@ -1,83 +0,0 @@ -/** - * \copyright - * Copyright (c) 2012-2020, OpenGeoSys Community (http://www.opengeosys.org) - * Distributed under a Modified BSD License. - * See accompanying file LICENSE.txt or - * http://www.opengeosys.org/project/license - * - */ - -#pragma once - -#include <map> -#include <memory> -#include <string> - -#include <logog/include/logog.hpp> - -#include "BaseLib/LogogSimpleFormatter.h" - -namespace ApplicationsLib -{ - -/// Initialization and shutting down of the logog library. -class LogogSetup final -{ -public: - - LogogSetup() - { - LOGOG_INITIALIZE(); - logog_cout = std::make_unique<logog::Cout>(); - setFormatter(std::make_unique<BaseLib::LogogSimpleFormatter>()); - } - - ~LogogSetup() - { - // Objects have to be deleted before shutdown - fmt.reset(nullptr); - logog_cout.reset(nullptr); - LOGOG_SHUTDOWN(); - } - - void setFormatter(std::unique_ptr<logog::Formatter>&& formatter) - { - fmt = std::move(formatter); - logog_cout->SetFormatter(*fmt); - } - - void setLevel(LOGOG_LEVEL_TYPE level) - { - logog::SetDefaultLevel(level); - } - - void setLevel(std::string const & level) - { - std::map<std::string, LOGOG_LEVEL_TYPE> foo = - { - { "none", LOGOG_LEVEL_NONE }, - { "emergency", LOGOG_LEVEL_EMERGENCY }, - { "alert", LOGOG_LEVEL_ALERT}, - { "critical", LOGOG_LEVEL_CRITICAL }, - { "error", LOGOG_LEVEL_ERROR }, - { "warn", LOGOG_LEVEL_WARN }, - { "info", LOGOG_LEVEL_INFO }, - { "debug", LOGOG_LEVEL_DEBUG }, - { "all", LOGOG_LEVEL_ALL } - }; - - - LOGOG_LEVEL_TYPE level_type = LOGOG_LEVEL_ALL; - if(foo.find(level) != foo.end()) - level_type = foo[level]; - else - WARN("'%s' is not a valid log level! 'all' is used instead.", level.c_str()); - setLevel(level_type); - } - -private: - std::unique_ptr<logog::Formatter> fmt; - std::unique_ptr<logog::Cout> logog_cout; -}; - -} // namespace ApplicationsLib diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp index b4323809ba4ee2b78caf464aac3db0b266733d2c..252444ea3e2cff9ca4a42a2fc9f6a04580d90bc1 100644 --- a/Applications/ApplicationsLib/ProjectData.cpp +++ b/Applications/ApplicationsLib/ProjectData.cpp @@ -15,7 +15,7 @@ #include <algorithm> #include <cctype> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <set> #ifdef OGS_USE_PYTHON @@ -25,7 +25,7 @@ #include "BaseLib/Algorithm.h" #include "BaseLib/ConfigTree.h" #include "BaseLib/FileTools.h" - +#include "BaseLib/StringTools.h" #include "GeoLib/GEOObjects.h" #include "MaterialLib/MPL/CreateMedium.h" #include "MathLib/Curve/CreatePiecewiseLinearCurve.h" @@ -33,7 +33,6 @@ #include "MeshGeoToolsLib/CreateSearchLength.h" #include "MeshGeoToolsLib/SearchLength.h" #include "MeshLib/Mesh.h" - #include "NumLib/ODESolver/ConvergenceCriterion.h" #include "ProcessLib/CreateJacobianAssembler.h" #include "ProcessLib/DeactivatedSubdomain.h" @@ -120,7 +119,7 @@ namespace { void readGeometry(std::string const& fname, GeoLib::GEOObjects& geo_objects) { - DBUG("Reading geometry file '%s'.", fname.c_str()); + DBUG("Reading geometry file '{:s}'.", fname.c_str()); GeoLib::IO::BoostXmlGmlInterface gml_reader(geo_objects); gml_reader.readFile(fname); } @@ -131,13 +130,13 @@ std::unique_ptr<MeshLib::Mesh> readSingleMesh( { std::string const mesh_file = BaseLib::copyPathToFileName( mesh_config_parameter.getValue<std::string>(), project_directory); - DBUG("Reading mesh file '%s'.", mesh_file.c_str()); + DBUG("Reading mesh file '{:s}'.", mesh_file.c_str()); auto mesh = std::unique_ptr<MeshLib::Mesh>( MeshLib::IO::readMeshFromFile(mesh_file)); if (!mesh) { - OGS_FATAL("Could not read mesh from '%s' file. No mesh added.", + OGS_FATAL("Could not read mesh from '{:s}' file. No mesh added.", mesh_file.c_str()); } @@ -230,8 +229,8 @@ boost::optional<ParameterLib::CoordinateSystem> parseLocalCoordinateSystem( if (dimension != 2 && dimension != 3) { OGS_FATAL( - "Basis vector parameter '%s' must have two or three components, " - "but it has %d.", + "Basis vector parameter '{:s}' must have two or three components, " + "but it has {:d}.", basis_vector_0.name.c_str(), dimension); } @@ -316,7 +315,7 @@ ProjectData::ProjectData(BaseLib::ConfigTree const& project_config, if (!_local_coordinate_system) { OGS_FATAL( - "The parameter '%s' is using the local coordinate system " + "The parameter '{:s}' is using the local coordinate system " "but no local coordinate system was provided.", parameter->name.c_str()); } @@ -379,7 +378,7 @@ void ProjectData::parseProcessVariables( _parameters}; if (!names.insert(pv.getName()).second) { - OGS_FATAL("A process variable with name `%s' already exists.", + OGS_FATAL("A process variable with name `{:s}' already exists.", pv.getName().c_str()); } @@ -404,7 +403,7 @@ std::vector<std::string> ProjectData::parseParameters( ParameterLib::createParameter(parameter_config, _mesh_vec, _curves); if (!names.insert(p->name).second) { - OGS_FATAL("A parameter with name `%s' already exists.", + OGS_FATAL("A parameter with name `{:s}' already exists.", p->name.c_str()); } @@ -468,7 +467,7 @@ void ProjectData::parseMedia( it != end(m_id)) { OGS_FATAL( - "Could not parse material ID's from '%s'. Please " + "Could not parse material ID's from '{:s}'. Please " "separate multiple material ID's by comma only. " "Invalid character: '%c'", m_id.c_str(), *it); @@ -482,7 +481,7 @@ void ProjectData::parseMedia( { OGS_FATAL( "Multiple media were specified for the same material id " - "'%d'. " + "'{:d}'. " "Keep in mind, that if no material id is specified, it is " "assumed to be 0 by default.", id); @@ -770,7 +769,7 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config, default: OGS_FATAL( "SMALL_DEFORMATION_NONLOCAL process does not support " - "given dimension %d", + "given dimension {:d}", _mesh_vec[0]->getDimension()); } } @@ -956,7 +955,7 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config, else #endif { - OGS_FATAL("Unknown process type: %s", type.c_str()); + OGS_FATAL("Unknown process type: {:s}", type.c_str()); } if (BaseLib::containsIf( @@ -965,7 +964,7 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config, return p->name == name; })) { - OGS_FATAL("The process name '%s' is not unique.", name.c_str()); + OGS_FATAL("The process name '{:s}' is not unique.", name.c_str()); } _processes.push_back(std::move(process)); } diff --git a/Applications/ApplicationsLib/TestDefinition.cpp b/Applications/ApplicationsLib/TestDefinition.cpp index 36586d543e4851f4cca99f748e2068a3b53c9e45..a7fcdc14147b184f1f0c4b680d27648dfa70c52f 100644 --- a/Applications/ApplicationsLib/TestDefinition.cpp +++ b/Applications/ApplicationsLib/TestDefinition.cpp @@ -35,19 +35,20 @@ bool isConvertibleToDouble(std::string const& s) } catch (...) { - OGS_FATAL("The given string '%s' is not convertible to double.", + OGS_FATAL("The given string '{:s}' is not convertible to double.", s.c_str()); } if (pos != s.size()) { OGS_FATAL( - "Only %d characters were used for double conversion of string '%s'", + "Only {:d} characters were used for double conversion of string " + "'{:s}'", pos, s.c_str()); } if (std::isnan(value)) { - OGS_FATAL("The given string '%s' results in a NaN value.", s.c_str()); + OGS_FATAL("The given string '{:s}' results in a NaN value.", s.c_str()); } return true; } @@ -67,7 +68,7 @@ std::string findVtkdiff() std::getenv("VTKDIFF_EXE")) { std::string const vtkdiff_exe{vtkdiff_exe_environment_variable}; - DBUG("VTKDIFF_EXE set to %s.", vtkdiff_exe.c_str()); + DBUG("VTKDIFF_EXE set to {:s}.", vtkdiff_exe.c_str()); // // Sanity checks. @@ -79,7 +80,7 @@ std::string findVtkdiff() { OGS_FATAL( "The VTKDIFF_EXE environment variable does not point to " - "'vtkdiff'. VTKDIFF_EXE='%s'", + "'vtkdiff'. VTKDIFF_EXE='{:s}'", vtkdiff_exe.c_str()); } } @@ -88,7 +89,7 @@ std::string findVtkdiff() { OGS_FATAL( "The VTKDIFF_EXE points to a non-existing file. " - "VTKDIFF_EXE='%s'", + "VTKDIFF_EXE='{:s}'", vtkdiff_exe.c_str()); } } @@ -110,8 +111,9 @@ std::string findVtkdiff() return vtkdiff_exe; } WARN( - "Calling %s from the VTKDIFF_EXE environment variable didn't work " - "as expected. Return value was %d.", + "Calling {:s} from the VTKDIFF_EXE environment variable didn't " + "work " + "as expected. Return value was {:d}.", vtkdiff_exe.c_str(), return_value); } @@ -160,7 +162,7 @@ TestDefinition::TestDefinition(BaseLib::ConfigTree const& config_tree, std::string const& field_name = //! \ogs_file_param{prj__test_definition__vtkdiff__field} vtkdiff_config.getConfigParameter<std::string>("field"); - DBUG("vtkdiff will compare field '%s'.", field_name.c_str()); + DBUG("vtkdiff will compare field '{:s}'.", field_name.c_str()); #ifdef USE_PETSC int rank; @@ -192,7 +194,7 @@ TestDefinition::TestDefinition(BaseLib::ConfigTree const& config_tree, !isConvertibleToDouble(absolute_tolerance)) { OGS_FATAL( - "The absolute tolerance value '%s' is not convertible to " + "The absolute tolerance value '{:s}' is not convertible to " "double.", absolute_tolerance.c_str()); } @@ -207,7 +209,7 @@ TestDefinition::TestDefinition(BaseLib::ConfigTree const& config_tree, !isConvertibleToDouble(relative_tolerance)) { OGS_FATAL( - "The relative tolerance value '%s' is not convertible to " + "The relative tolerance value '{:s}' is not convertible to " "double.", relative_tolerance.c_str()); } @@ -222,7 +224,7 @@ TestDefinition::TestDefinition(BaseLib::ConfigTree const& config_tree, safeString(field_name) + " " + safeString(reference_filename) + " " + safeString(output_filename) + " " + absolute_tolerance_parameter + " " + relative_tolerance_parameter; - INFO("Will run '%s'", command_line.c_str()); + INFO("Will run '{:s}'", command_line.c_str()); _command_lines.emplace_back(std::move(command_line)); } } @@ -236,7 +238,7 @@ bool TestDefinition::runTests() const int const return_value = std::system(command_line.c_str()); if (return_value != 0) { - WARN("Return value %d was returned by '%s'.", + WARN("Return value {:d} was returned by '{:s}'.", return_value, command_line.c_str()); } return return_value; diff --git a/Applications/CLI/ogs.cpp b/Applications/CLI/ogs.cpp index a77d5d08599b35023ed74a3c445c214264380b15..5d8fff6658a191ebdee644512fc7efe210204979 100644 --- a/Applications/CLI/ogs.cpp +++ b/Applications/CLI/ogs.cpp @@ -10,7 +10,9 @@ * */ +#include <spdlog/spdlog.h> #include <tclap/CmdLine.h> + #include <chrono> #ifndef _WIN32 @@ -31,10 +33,8 @@ #include "BaseLib/DateTools.h" #include "BaseLib/FileTools.h" #include "BaseLib/RunTime.h" -#include "BaseLib/TemplateLogogFormatterSuppressedGCC.h" #include "Applications/ApplicationsLib/LinearSolverLibrarySetup.h" -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/ApplicationsLib/ProjectData.h" #include "Applications/ApplicationsLib/TestDefinition.h" #include "Applications/InSituLib/Adaptor.h" @@ -123,11 +123,15 @@ int main(int argc, char* argv[]) std::cout.setf(std::ios::unitbuf); } - ApplicationsLib::LogogSetup logog_setup; - logog_setup.setLevel(log_level_arg.getValue()); + BaseLib::setConsoleLogLevel(log_level_arg.getValue()); + spdlog::set_pattern("%^%l:%$ %v"); + spdlog::set_error_handler([](const std::string& msg) { + std::cerr << "spdlog error: " << msg << std::endl; + OGS_FATAL("spdlog logger error occured."); + }); - INFO("This is OpenGeoSys-6 version %s.", - GitInfoLib::GitInfo::ogs_version.c_str()); + INFO("This is OpenGeoSys-6 version {:s}.", + GitInfoLib::GitInfo::ogs_version); #ifndef _WIN32 // On windows this command line option is not present. // Enable floating point exceptions @@ -151,7 +155,7 @@ int main(int argc, char* argv[]) { auto const start_time = std::chrono::system_clock::now(); auto const time_str = BaseLib::formatDate(start_time); - INFO("OGS started on %s.", time_str.c_str()); + INFO("OGS started on {:s}.", time_str); } std::unique_ptr<ApplicationsLib::TestDefinition> test_definition; @@ -169,10 +173,11 @@ int main(int argc, char* argv[]) controller->Initialize(&argc, &argv, 1); vtkMPIController::SetGlobalController(controller); - logog_setup.setFormatter( - std::make_unique<BaseLib::TemplateLogogFormatterSuppressedGCC< - TOPIC_LEVEL_FLAG | TOPIC_FILE_NAME_FLAG | - TOPIC_LINE_NUMBER_FLAG>>()); + { // Can be called only after MPI_INIT. + int mpi_rank; + MPI_Comm_rank(PETSC_COMM_WORLD, &mpi_rank); + spdlog::set_pattern(fmt::format("[{}] %^%l:%$ %v", mpi_rank)); + } #endif run_time.start(); @@ -242,7 +247,7 @@ int main(int argc, char* argv[]) if (isInsituConfigured) InSituLib::Finalize(); #endif - INFO("[time] Execution took %g s.", run_time.elapsed()); + INFO("[time] Execution took {:g} s.", run_time.elapsed()); #if defined(USE_PETSC) controller->Finalize(1); @@ -264,7 +269,7 @@ int main(int argc, char* argv[]) { auto const end_time = std::chrono::system_clock::now(); auto const time_str = BaseLib::formatDate(end_time); - INFO("OGS terminated on %s.", time_str.c_str()); + INFO("OGS terminated on {:s}.", time_str); } if (ogs_status == EXIT_FAILURE) diff --git a/Applications/CLI/ogs_embedded_python.cpp b/Applications/CLI/ogs_embedded_python.cpp index 2bb020fa9083af2259c61dba817247d3bafad8a4..08ad7b5df0acc645511440c27752c3a56c5964d8 100644 --- a/Applications/CLI/ogs_embedded_python.cpp +++ b/Applications/CLI/ogs_embedded_python.cpp @@ -11,7 +11,7 @@ #include <pybind11/embed.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryConditionModule.h" #include "ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionModule.h" diff --git a/Applications/DataExplorer/DataExplorer.cmake b/Applications/DataExplorer/DataExplorer.cmake index e67925f37bc30495f26245a795161e82aeac6416..5feab093766b872cca73695316aacdd9dbe60bd0 100644 --- a/Applications/DataExplorer/DataExplorer.cmake +++ b/Applications/DataExplorer/DataExplorer.cmake @@ -49,7 +49,7 @@ target_link_libraries(DataExplorer Qt5::Widgets Qt5::Xml Qt5::Network - logog + spdlog::spdlog ${VTK_LIBRARIES} ) diff --git a/Applications/DataExplorer/DataView/CMakeLists.txt b/Applications/DataExplorer/DataView/CMakeLists.txt index 8b65bdcea6c985712abdb95146aeb2e721f0f9d7..2849e9b86e0a9e7f144786406ded75aad5955752 100644 --- a/Applications/DataExplorer/DataView/CMakeLists.txt +++ b/Applications/DataExplorer/DataView/CMakeLists.txt @@ -135,7 +135,7 @@ target_link_libraries(QtDataView QtDiagramView QtStratView DataHolderLib - logog + spdlog::spdlog Qt5::Core Qt5::Gui) diff --git a/Applications/DataExplorer/DataView/DataExplorerSettingsDialog.cpp b/Applications/DataExplorer/DataView/DataExplorerSettingsDialog.cpp index 0b694027c1fac28f7ff1f9cf3868439c872e026c..135088a8892ba17d16765896e9cc70dfcc80dceb 100644 --- a/Applications/DataExplorer/DataView/DataExplorerSettingsDialog.cpp +++ b/Applications/DataExplorer/DataView/DataExplorerSettingsDialog.cpp @@ -17,7 +17,7 @@ #include <QFileDialog> #include <QSettings> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "OGSError.h" diff --git a/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt b/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt index 96c1a84c45a68522800006986dbcbbc68c3bc59d..7264261894395b2a491efc67f073a3bfec1a5476 100644 --- a/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt +++ b/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt @@ -37,7 +37,7 @@ target_link_libraries(QtDiagramView QtBase DataHolderLib Qt5::Gui - logog) + spdlog::spdlog) add_autogen_include(QtDiagramView) diff --git a/Applications/DataExplorer/DataView/DiagramView/DiagramList.cpp b/Applications/DataExplorer/DataView/DiagramView/DiagramList.cpp index e3231e598ee2225013e288a5cc7519e7025224c8..4ca3bbd21df8f2e86b792644c3e19c8f5f22691c 100644 --- a/Applications/DataExplorer/DataView/DiagramView/DiagramList.cpp +++ b/Applications/DataExplorer/DataView/DiagramView/DiagramList.cpp @@ -15,7 +15,7 @@ #include "DiagramList.h" #include "GetDateTime.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "DateTools.h" #include "StringTools.h" @@ -220,7 +220,8 @@ int DiagramList::readList(const QString &path, std::vector<DiagramList*> &lists) } else { - WARN("DiagramList::readList(): Unexpected format in line %d.", line_count); + WARN("DiagramList::readList(): Unexpected format in line {:d}.", + line_count); file.close(); return 0; } diff --git a/Applications/DataExplorer/DataView/DirectConditionGenerator.cpp b/Applications/DataExplorer/DataView/DirectConditionGenerator.cpp index da46c1e378f61dd0b6ac2fdffe9dfd5563597ce5..1607922052d4c29860da79d867a7ebcace70e1e7 100644 --- a/Applications/DataExplorer/DataView/DirectConditionGenerator.cpp +++ b/Applications/DataExplorer/DataView/DirectConditionGenerator.cpp @@ -15,7 +15,7 @@ #include <fstream> #include <memory> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "DirectConditionGenerator.h" @@ -104,7 +104,7 @@ const std::vector< std::pair<std::size_t,double> >& DirectConditionGenerator::di } catch (std::runtime_error const& e) { - WARN("%s", e.what()); + WARN("{:s}", e.what()); return _direct_values; } diff --git a/Applications/DataExplorer/DataView/GEOModels.cpp b/Applications/DataExplorer/DataView/GEOModels.cpp index dabe3c4101a999b2c71a995e679264a3c19f88d0..77dca677f6b3963899bdcc00e501ca9a1b5d8b74 100644 --- a/Applications/DataExplorer/DataView/GEOModels.cpp +++ b/Applications/DataExplorer/DataView/GEOModels.cpp @@ -15,7 +15,7 @@ // ** INCLUDES ** #include "GEOModels.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "Applications/FileIO/Legacy/createSurface.h" #include "GeoTreeModel.h" @@ -70,7 +70,7 @@ void GEOModels::updateGeometry(const std::string &geo_name) } } else - ERR("GEOModels::updateGeometry() - Geometry '%s' not found.", + ERR("GEOModels::updateGeometry() - Geometry '{:s}' not found.", geo_name.c_str()); } @@ -250,7 +250,7 @@ void GEOModels::addNameForElement(std::string const& geometry_name, _geo_objects.getSurfaceVecObj(geometry_name)->setNameForElement(id, new_name); } else - ERR("GEOModels::addNameForElement() - Unknown GEOTYPE %s.", + ERR("GEOModels::addNameForElement() - Unknown GEOTYPE {:s}.", GeoLib::convertGeoTypeToString(object_type).c_str()); } @@ -290,6 +290,6 @@ void GEOModels::addNameForObjectPoints(const std::string &geometry_name, } } else - ERR("GEOModels::addNameForObjectPoints() - Unknown GEOTYPE %s.", + ERR("GEOModels::addNameForObjectPoints() - Unknown GEOTYPE {:s}.", GeoLib::convertGeoTypeToString(object_type).c_str()); } diff --git a/Applications/DataExplorer/DataView/GeoOnMeshMappingDialog.cpp b/Applications/DataExplorer/DataView/GeoOnMeshMappingDialog.cpp index f6f59149c3ec400ae24c6d7aaafd92a39931022e..0b0a506ab74ba2f43ecea2b7ba72df0293d2b1fa 100644 --- a/Applications/DataExplorer/DataView/GeoOnMeshMappingDialog.cpp +++ b/Applications/DataExplorer/DataView/GeoOnMeshMappingDialog.cpp @@ -15,7 +15,7 @@ #include "GeoOnMeshMappingDialog.h" #include "Mesh.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "OGSError.h" diff --git a/Applications/DataExplorer/DataView/GeoTreeModel.cpp b/Applications/DataExplorer/DataView/GeoTreeModel.cpp index 5ca4c7b664f89db4172a144e28554137324d0cae..f22a2418fb290fc335e8861b872a75616f802f9c 100644 --- a/Applications/DataExplorer/DataView/GeoTreeModel.cpp +++ b/Applications/DataExplorer/DataView/GeoTreeModel.cpp @@ -12,7 +12,7 @@ * */ -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoObjectListItem.h" #include "GeoTreeItem.h" @@ -78,8 +78,8 @@ void GeoTreeModel::addPointList(QString geoName, GeoLib::PointVec const& pointVe ->setData(4, QString::fromStdString(pnt->first))); } - INFO("Geometry '%s' built. %d points added.", geoName.toStdString().c_str(), - nPoints); + INFO("Geometry '{:s}' built. {:d} points added.", + geoName.toStdString().c_str(), nPoints); endResetModel(); } @@ -101,7 +101,7 @@ void GeoTreeModel::addPolylineList(QString geoName, GeoLib::PolylineVec const& p if (geo == nullptr) { ERR("GeoTreeModel::addPolylineList(): No corresponding geometry for " - "'%s' found.", + "'{:s}' found.", geoName.toStdString().c_str()); return; } @@ -182,7 +182,7 @@ void GeoTreeModel::addChildren(GeoObjectListItem* plyList, ->setData(1, QString::fromStdString(pnt->first))); } - INFO("%d polylines added.", end_index - start_index); + INFO("{:d} polylines added.", end_index - start_index); } void GeoTreeModel::addSurfaceList(QString geoName, GeoLib::SurfaceVec const& surfaceVec) @@ -202,7 +202,7 @@ void GeoTreeModel::addSurfaceList(QString geoName, GeoLib::SurfaceVec const& sur if (geo == nullptr) { ERR("GeoTreeModel::addSurfaceList(): No corresponding geometry for " - "'%s' found.", + "'{:s}' found.", geoName.toStdString().c_str()); return; } @@ -297,7 +297,7 @@ void GeoTreeModel::addChildren(GeoObjectListItem* sfcList, ->setData(1, QString::fromStdString(pnt->first))); } - INFO("%d surfaces added.", end_index - start_index); + INFO("{:d} surfaces added.", end_index - start_index); } void GeoTreeModel::renameGeometry(std::string const& old_name, @@ -316,7 +316,7 @@ void GeoTreeModel::renameGeometry(std::string const& old_name, { if (new_name == tree_item_entry->data(0).toString().toStdString()) { - INFO("Found tree_item_entry with name '%s'.", new_name.c_str()); + INFO("Found tree_item_entry with name '{:s}'.", new_name.c_str()); } } } diff --git a/Applications/DataExplorer/DataView/MeshAnalysisDialog.cpp b/Applications/DataExplorer/DataView/MeshAnalysisDialog.cpp index 63df6becc07df1ae6af13cef2010192588f88efe..0df2ceb519e605a3114f0993e3828d887913b9d3 100644 --- a/Applications/DataExplorer/DataView/MeshAnalysisDialog.cpp +++ b/Applications/DataExplorer/DataView/MeshAnalysisDialog.cpp @@ -20,7 +20,7 @@ #include "StrictDoubleValidator.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" MeshAnalysisDialog::MeshAnalysisDialog( std::vector<std::unique_ptr<MeshLib::Mesh>> const& mesh_vec, diff --git a/Applications/DataExplorer/DataView/MeshLayerEditDialog.cpp b/Applications/DataExplorer/DataView/MeshLayerEditDialog.cpp index 823d56ca7339359142fe20fe18973e77c9f6436c..f147ec266babc82c2dc669c123517be8f941ccd6 100644 --- a/Applications/DataExplorer/DataView/MeshLayerEditDialog.cpp +++ b/Applications/DataExplorer/DataView/MeshLayerEditDialog.cpp @@ -15,7 +15,7 @@ #include "MeshGenerators/LayeredVolume.h" #include "MeshLayerEditDialog.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "OGSError.h" #include "StringTools.h" @@ -209,7 +209,7 @@ MeshLib::Mesh* MeshLayerEditDialog::createPrismMesh() auto const rasters = FileIO::readRasters(raster_paths); if (rasters && mapper.createLayers(*_msh, *rasters, minimum_thickness)) { - INFO("Mesh construction time: %d ms.", myTimer0.elapsed()); + INFO("Mesh construction time: {:d} ms.", myTimer0.elapsed()); return mapper.getMesh("SubsurfaceMesh").release(); } return nullptr; @@ -220,7 +220,7 @@ MeshLib::Mesh* MeshLayerEditDialog::createPrismMesh() { layer_thickness.push_back(this->_edits[i]->text().toFloat()); } - INFO("Mesh construction time: %d ms.", myTimer0.elapsed()); + INFO("Mesh construction time: {:d} ms.", myTimer0.elapsed()); return MeshLib::MeshLayerMapper::createStaticLayers(*_msh, layer_thickness); } @@ -279,7 +279,7 @@ MeshLib::Mesh* MeshLayerEditDialog::createTetMesh() FileIO::TetGenInterface tetgen_interface; tetgen_interface.writeTetGenSmesh(filename.toStdString(), *tg_mesh, tg_attr); } - INFO("Mesh construction time: %d ms.", myTimer0.elapsed()); + INFO("Mesh construction time: {:d} ms.", myTimer0.elapsed()); return tg_mesh; } diff --git a/Applications/DataExplorer/DataView/MeshModel.cpp b/Applications/DataExplorer/DataView/MeshModel.cpp index 85ec9a95656b66d3bcfce14a1d18b00fdf4801b9..6aeaf947a437cc74b3b7f2a0cf1d4836274bdc51 100644 --- a/Applications/DataExplorer/DataView/MeshModel.cpp +++ b/Applications/DataExplorer/DataView/MeshModel.cpp @@ -14,10 +14,10 @@ #include "MeshModel.h" +#include <vtkUnstructuredGridAlgorithm.h> #include <QFileInfo> #include <QString> -#include <vtkUnstructuredGridAlgorithm.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "Applications/DataHolderLib/Project.h" #include "BaseLib/StringTools.h" @@ -65,7 +65,7 @@ void MeshModel::addMeshObject(const MeshLib::Mesh* mesh) { beginResetModel(); - INFO("name: %s", mesh->getName().c_str()); + INFO("name: {:s}", mesh->getName().c_str()); QVariant const display_name (QString::fromStdString(mesh->getName())); QList<QVariant> meshData; meshData << display_name << "" << ""; @@ -115,7 +115,8 @@ const MeshLib::Mesh* MeshModel::getMesh(const std::string &name) const } } - INFO("MeshModel::getMesh(): No entry found with name \"%s\".", name.c_str()); + INFO("MeshModel::getMesh(): No entry found with name \"{:s}\".", + name.c_str()); return nullptr; } @@ -148,7 +149,8 @@ bool MeshModel::removeMesh(const std::string &name) } } - INFO("MeshModel::removeMesh(): No entry found with name \"%s\".", name.c_str()); + INFO("MeshModel::removeMesh(): No entry found with name \"{:s}\".", + name.c_str()); return false; } @@ -214,6 +216,7 @@ vtkUnstructuredGridAlgorithm* MeshModel::vtkSource(const std::string &name) cons } } - INFO("MeshModel::vtkSource(): No entry found with name \"%s\".", name.c_str()); + INFO("MeshModel::vtkSource(): No entry found with name \"{:s}\".", + name.c_str()); return nullptr; } diff --git a/Applications/DataExplorer/DataView/ProcessModel.cpp b/Applications/DataExplorer/DataView/ProcessModel.cpp index eff66c7cc90c037219a9b449e9b0d998fc93e723..2a5738fbbb908dbe8365a205661319c6ff37e75f 100644 --- a/Applications/DataExplorer/DataView/ProcessModel.cpp +++ b/Applications/DataExplorer/DataView/ProcessModel.cpp @@ -10,17 +10,15 @@ #include "ProcessModel.h" -// ThirdParty/logog -#include <logog/include/logog.hpp> - #include <vtkPolyDataAlgorithm.h> + #include <QFileInfo> #include "Applications/DataHolderLib/FemCondition.h" +#include "BaseLib/Logging.h" +#include "CondItem.h" #include "GeoLib/GEOObjects.h" #include "GeoLib/GeoObject.h" - -#include "CondItem.h" #include "GeoType.h" #include "ProcessVarItem.h" diff --git a/Applications/DataExplorer/DataView/SaveMeshDialog.cpp b/Applications/DataExplorer/DataView/SaveMeshDialog.cpp index 3710d19a12401e9f941ab5b17d6d8e850a6b9c6f..345d9b5c6f220e64ef3b1adcfb6fa9368447e6b1 100644 --- a/Applications/DataExplorer/DataView/SaveMeshDialog.cpp +++ b/Applications/DataExplorer/DataView/SaveMeshDialog.cpp @@ -17,7 +17,7 @@ #include <QFileDialog> #include <QSettings> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/IO/VtkIO/VtuInterface.h" #include "MeshLib/IO/Legacy/MeshIO.h" diff --git a/Applications/DataExplorer/DataView/StationTreeModel.cpp b/Applications/DataExplorer/DataView/StationTreeModel.cpp index 8e34aa7e6bc4c11299ec664ef0abb0e66d579d5f..dd7a40ab23d26650c818fd07570ef315d7e9354b 100644 --- a/Applications/DataExplorer/DataView/StationTreeModel.cpp +++ b/Applications/DataExplorer/DataView/StationTreeModel.cpp @@ -14,7 +14,7 @@ #include "StationTreeModel.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseItem.h" #include "OGSError.h" diff --git a/Applications/DataExplorer/VtkVis/CMakeLists.txt b/Applications/DataExplorer/VtkVis/CMakeLists.txt index 57815c579026788f6c8b77726da7ac8058dc5ca3..2f94c39172d349627749bfc162afd3bbd73fc688 100644 --- a/Applications/DataExplorer/VtkVis/CMakeLists.txt +++ b/Applications/DataExplorer/VtkVis/CMakeLists.txt @@ -142,7 +142,7 @@ target_link_libraries(VtkVis DataHolderLib QtBase vtkIOImage - PRIVATE MathLib ApplicationsFileIO Qt5::Gui logog) + PRIVATE MathLib ApplicationsFileIO Qt5::Gui spdlog::spdlog) if(OGS_USE_NETCDF) target_link_libraries(VtkVis diff --git a/Applications/DataExplorer/VtkVis/VtkAddFilterDialog.cpp b/Applications/DataExplorer/VtkVis/VtkAddFilterDialog.cpp index 94e96ef77c8a5b8cae7d0e9be57023bc3f4150ca..6a39bc2d8cd63bcb6eb6d9ded30d0422450ae92b 100644 --- a/Applications/DataExplorer/VtkVis/VtkAddFilterDialog.cpp +++ b/Applications/DataExplorer/VtkVis/VtkAddFilterDialog.cpp @@ -15,7 +15,7 @@ // ** INCLUDES ** #include "VtkAddFilterDialog.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "VtkCompositeFilter.h" #include "VtkFilterFactory.h" @@ -113,7 +113,8 @@ void VtkAddFilterDialog::on_buttonBox_accepted() } else { - ERR("VtkFilterFactory cannot create %s.", filterName.toStdString().c_str()); + ERR("VtkFilterFactory cannot create {:s}.", + filterName.toStdString().c_str()); return; } } diff --git a/Applications/DataExplorer/VtkVis/VtkAlgorithmProperties.cpp b/Applications/DataExplorer/VtkVis/VtkAlgorithmProperties.cpp index 2c0818643c13a486f3d1215e4638c04cc74b24a7..30641b492d636ac72305bd1c87d62d21ecda881d 100644 --- a/Applications/DataExplorer/VtkVis/VtkAlgorithmProperties.cpp +++ b/Applications/DataExplorer/VtkVis/VtkAlgorithmProperties.cpp @@ -15,7 +15,7 @@ // ** INCLUDES ** #include "VtkAlgorithmProperties.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <vtkProperty.h> #include <vtkTexture.h> @@ -111,7 +111,7 @@ QVariant VtkAlgorithmProperties::GetUserProperty(QString name) const return this->_algorithmUserProperties->value(name); } - ERR("Not a valid property: %s", name.toStdString().c_str()); + ERR("Not a valid property: {:s}", name.toStdString().c_str()); return QVariant(); } @@ -122,7 +122,7 @@ QList<QVariant> VtkAlgorithmProperties::GetUserVectorProperty(QString name) cons return this->_algorithmUserVectorProperties->value(name); } - ERR("Not a valid property: %s", name.toStdString().c_str()); + ERR("Not a valid property: {:s}", name.toStdString().c_str()); return QList<QVariant>(); } diff --git a/Applications/DataExplorer/VtkVis/VtkAppendArrayFilter.cpp b/Applications/DataExplorer/VtkVis/VtkAppendArrayFilter.cpp index 66d693f2fa9c1f7c9cfb149c6fbb17da040fa7ad..8375577e77ded122bf3b0bc3fd80a3bba383037d 100644 --- a/Applications/DataExplorer/VtkVis/VtkAppendArrayFilter.cpp +++ b/Applications/DataExplorer/VtkVis/VtkAppendArrayFilter.cpp @@ -15,7 +15,7 @@ // ** VTK INCLUDES ** #include "VtkAppendArrayFilter.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <vtkCellData.h> #include <vtkDoubleArray.h> diff --git a/Applications/DataExplorer/VtkVis/VtkColorByHeightFilter.cpp b/Applications/DataExplorer/VtkVis/VtkColorByHeightFilter.cpp index b64d733785f58bcf8eac51876d9b2a0d68f116ee..fc47e8a1858bba88ae5b0a27bfa55dcbeefa73a8 100644 --- a/Applications/DataExplorer/VtkVis/VtkColorByHeightFilter.cpp +++ b/Applications/DataExplorer/VtkVis/VtkColorByHeightFilter.cpp @@ -15,7 +15,7 @@ // ** VTK INCLUDES ** #include "VtkColorByHeightFilter.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "VtkColorLookupTable.h" diff --git a/Applications/DataExplorer/VtkVis/VtkColorLookupTable.cpp b/Applications/DataExplorer/VtkVis/VtkColorLookupTable.cpp index 8c7a1230691c9f2fc08a75c4d099b95796e1cdd0..00e7535337dd741238d9c4a799e44f7e2a29cf71 100644 --- a/Applications/DataExplorer/VtkVis/VtkColorLookupTable.cpp +++ b/Applications/DataExplorer/VtkVis/VtkColorLookupTable.cpp @@ -17,7 +17,7 @@ #include <cmath> #include <sstream> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <vtkObjectFactory.h> @@ -149,7 +149,7 @@ void VtkColorLookupTable::writeToFile(const std::string &filename) } strout << " done." << std::endl; - INFO("%s", strout.str().c_str()); + INFO("{:s}", strout.str().c_str()); out.close(); } diff --git a/Applications/DataExplorer/VtkVis/VtkCompositeTextureOnSurfaceFilter.cpp b/Applications/DataExplorer/VtkVis/VtkCompositeTextureOnSurfaceFilter.cpp index 5076fc6b71dba9f2465a1cbc6bd1ca33fd1ded63..4106499b54cac0b8941571c9b22656fc806ac446 100644 --- a/Applications/DataExplorer/VtkVis/VtkCompositeTextureOnSurfaceFilter.cpp +++ b/Applications/DataExplorer/VtkVis/VtkCompositeTextureOnSurfaceFilter.cpp @@ -15,7 +15,7 @@ // ** INCLUDES ** #include "VtkCompositeTextureOnSurfaceFilter.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "VtkTextureOnSurfaceFilter.h" #include <vtkDataSetSurfaceFilter.h> diff --git a/Applications/DataExplorer/VtkVis/VtkCompositeThresholdFilter.cpp b/Applications/DataExplorer/VtkVis/VtkCompositeThresholdFilter.cpp index ede58aae2f04cea5174a6414f95ee1002ab98df2..3e8815af673ac524a8c8ed10cfc00002ee2ab930 100644 --- a/Applications/DataExplorer/VtkVis/VtkCompositeThresholdFilter.cpp +++ b/Applications/DataExplorer/VtkVis/VtkCompositeThresholdFilter.cpp @@ -15,7 +15,7 @@ // ** INCLUDES ** #include "VtkCompositeThresholdFilter.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <vtkCellData.h> #include <vtkThreshold.h> diff --git a/Applications/DataExplorer/VtkVis/VtkCustomInteractorStyle.cpp b/Applications/DataExplorer/VtkVis/VtkCustomInteractorStyle.cpp index d522b0b7fae4ebc09086e7c8e36f9d0e34a764d9..0b0ebbb79621d2445dabd29e03006117be748714 100644 --- a/Applications/DataExplorer/VtkVis/VtkCustomInteractorStyle.cpp +++ b/Applications/DataExplorer/VtkVis/VtkCustomInteractorStyle.cpp @@ -15,7 +15,7 @@ // ** INCLUDES ** #include "VtkCustomInteractorStyle.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <vtkActor.h> #include <vtkAlgorithmOutput.h> @@ -154,11 +154,12 @@ void VtkCustomInteractorStyle::OnLeftButtonDown() picker->Pick(pos[0], pos[1], 0, this->GetDefaultRenderer()); double* worldPosition = picker->GetPickPosition(); - INFO("Cell id is: %d", picker->GetCellId()); + INFO("Cell id is: {:d}", picker->GetCellId()); if(picker->GetCellId() != -1) { - INFO("Pick position is: %f %f %f", worldPosition[0], worldPosition[1], worldPosition[2]); + INFO("Pick position is: {:f} {:f} {:f}", worldPosition[0], + worldPosition[1], worldPosition[2]); vtkSmartPointer<vtkIdTypeArray> ids = vtkSmartPointer<vtkIdTypeArray>::New(); @@ -186,8 +187,10 @@ void VtkCustomInteractorStyle::OnLeftButtonDown() vtkSmartPointer<vtkUnstructuredGrid>::New(); selected->ShallowCopy(extractSelection->GetOutput()); - INFO("There are %d points in the selection.", selected->GetNumberOfPoints()); - INFO("There are %d cells in the selection.", selected->GetNumberOfCells()); + INFO("There are {:d} points in the selection.", + selected->GetNumberOfPoints()); + INFO("There are {:d} cells in the selection.", + selected->GetNumberOfCells()); // check if the underlying object is a mesh and if so, send a signal to the element model for display of information about the picked element. vtkAlgorithm* data_set = picker->GetActor()->GetMapper()->GetInputConnection(0, 0)->GetProducer()->GetInputConnection(0,0)->GetProducer(); @@ -243,7 +246,7 @@ void VtkCustomInteractorStyle::OnRightButtonDown() picker->Pick(pos[0], pos[1], 0, this->GetDefaultRenderer()); double* worldPosition = picker->GetPickPosition(); - INFO("Cell id is: %d", picker->GetCellId()); + INFO("Cell id is: {:d}", picker->GetCellId()); if(picker->GetCellId() != -1) { diff --git a/Applications/DataExplorer/VtkVis/VtkPickCallback.cpp b/Applications/DataExplorer/VtkVis/VtkPickCallback.cpp index 3286f3ef4179ef7d517b3572f680c976687f381d..983cefe1f47e2ee8ceed97ee913401cafcf4d20d 100644 --- a/Applications/DataExplorer/VtkVis/VtkPickCallback.cpp +++ b/Applications/DataExplorer/VtkVis/VtkPickCallback.cpp @@ -18,7 +18,7 @@ #include <vtkActor.h> #include <vtkCellPicker.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" VtkPickCallback* VtkPickCallback::New() { @@ -43,8 +43,8 @@ void VtkPickCallback::Execute(vtkObject* caller, } double* pos = picker->GetPickPosition(); - INFO("Picked cell id is: %d", picker->GetCellId()); - INFO("Picked position is: %f %f %f", pos[0], pos[1], pos[2]); + INFO("Picked cell id is: {:d}", picker->GetCellId()); + INFO("Picked position is: {:f} {:f} {:f}", pos[0], pos[1], pos[2]); } } diff --git a/Applications/DataExplorer/VtkVis/VtkPointsSource.cpp b/Applications/DataExplorer/VtkVis/VtkPointsSource.cpp index 4639b11fbd0e4f1adf7c84f718a20b7faeb3b4d7..58c1d36230ff1e56a4d257ffc27653fb46cc45bb 100644 --- a/Applications/DataExplorer/VtkVis/VtkPointsSource.cpp +++ b/Applications/DataExplorer/VtkVis/VtkPointsSource.cpp @@ -14,7 +14,7 @@ #include "VtkPointsSource.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <vtkCellArray.h> #include <vtkInformation.h> diff --git a/Applications/DataExplorer/VtkVis/VtkPolylinesSource.cpp b/Applications/DataExplorer/VtkVis/VtkPolylinesSource.cpp index 7f58d565497728306833fa8cc66074742e8eea57..e6159db1ef4fd097c651a2905689b6e8621f4558 100644 --- a/Applications/DataExplorer/VtkVis/VtkPolylinesSource.cpp +++ b/Applications/DataExplorer/VtkVis/VtkPolylinesSource.cpp @@ -15,7 +15,7 @@ // ** INCLUDES ** #include "VtkPolylinesSource.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <vtkCellArray.h> #include <vtkCellData.h> diff --git a/Applications/DataExplorer/VtkVis/VtkRaster.cpp b/Applications/DataExplorer/VtkVis/VtkRaster.cpp index ec3d8f4436dade6e6149bf8785af84b7acb88c2c..592cea37641c7981d956bf5cdc3e2aa074451f79 100644 --- a/Applications/DataExplorer/VtkVis/VtkRaster.cpp +++ b/Applications/DataExplorer/VtkVis/VtkRaster.cpp @@ -33,10 +33,11 @@ #include "xtiffio.h" #endif -#include <logog/include/logog.hpp> #include <memory> #include "Applications/FileIO/AsciiRasterInterface.h" +#include "BaseLib/FileTools.h" +#include "BaseLib/Logging.h" #include "BaseLib/StringTools.h" #include "GeoLib/Raster.h" @@ -143,7 +144,10 @@ vtkImageAlgorithm* VtkRaster::loadImageFromTIFF(const std::string& fileName, ++nImages; } while (TIFFReadDirectory(tiff)); if (nImages > 1) - INFO("VtkRaster::loadImageFromTIFF() - File contains %d images. This method is not tested for this case.", nImages); + INFO( + "VtkRaster::loadImageFromTIFF() - File contains {:d} " + "images. This method is not tested for this case.", + nImages); // get image size TIFFGetField(tiff, TIFFTAG_IMAGEWIDTH, &imgWidth); @@ -340,7 +344,7 @@ bool VtkRaster::readWorldFile(std::string const& filename, std::ifstream in(world_file.c_str()); if (!in.is_open()) { - ERR("VtkRaster::readWorldFile(): Could not open file %s.", + ERR("VtkRaster::readWorldFile(): Could not open file {:s}.", filename.c_str()); return false; } @@ -365,8 +369,8 @@ bool VtkRaster::readWorldFile(std::string const& filename, double const delta_y = BaseLib::str2number<double>(line); if (delta_x != -delta_y) WARN( - "Anisotropic pixel size detected (%f vs %f). An isotropic " - "spacing of %f is assumed, be aware results may be wrong.", + "Anisotropic pixel size detected ({:f} vs {:f}). An isotropic " + "spacing of {:f} is assumed, be aware results may be wrong.", delta_x, delta_y, delta_x); // x-translation if (!std::getline(in, line)) diff --git a/Applications/DataExplorer/VtkVis/VtkStationSource.cpp b/Applications/DataExplorer/VtkVis/VtkStationSource.cpp index ed63ad7babcfa546e08ceae4e4a71daaf4f00a79..0324a0ba4f722d8ff9ff03a22102c5df4a3f793e 100644 --- a/Applications/DataExplorer/VtkVis/VtkStationSource.cpp +++ b/Applications/DataExplorer/VtkVis/VtkStationSource.cpp @@ -15,7 +15,7 @@ // ** VTK INCLUDES ** #include "VtkStationSource.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "StationBorehole.h" @@ -235,7 +235,7 @@ std::size_t VtkStationSource::GetIndexByName( std::string const& name ) } vtkIdType new_index = (_id_map.empty()) ? 0 : (max_key+1); - INFO("Key '%s' has been assigned index %d.", name.c_str(), new_index); + INFO("Key '{:s}' has been assigned index {:d}.", name.c_str(), new_index); _id_map.insert(std::pair<std::string, vtkIdType>(name, new_index)); return new_index; } diff --git a/Applications/DataExplorer/VtkVis/VtkTextureOnSurfaceFilter.cpp b/Applications/DataExplorer/VtkVis/VtkTextureOnSurfaceFilter.cpp index 3ec3ed4039c3faa071d4e0695894cd9f24f802db..e7bc83ba2e3c3cbf55a3ccf66ccad4b81905b610 100644 --- a/Applications/DataExplorer/VtkVis/VtkTextureOnSurfaceFilter.cpp +++ b/Applications/DataExplorer/VtkVis/VtkTextureOnSurfaceFilter.cpp @@ -15,7 +15,7 @@ // ** INCLUDES ** #include "VtkTextureOnSurfaceFilter.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <vtkCellData.h> #include <vtkFloatArray.h> diff --git a/Applications/DataExplorer/VtkVis/VtkVisImageItem.cpp b/Applications/DataExplorer/VtkVis/VtkVisImageItem.cpp index a0af1abf756f3cf598d420debb923d91dba0f6e3..0d3259e58ef3f13415dfcf3de34d8c90e7322aef 100644 --- a/Applications/DataExplorer/VtkVis/VtkVisImageItem.cpp +++ b/Applications/DataExplorer/VtkVis/VtkVisImageItem.cpp @@ -15,7 +15,7 @@ // ** INCLUDES ** #include "VtkVisImageItem.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileTools.h" diff --git a/Applications/DataExplorer/VtkVis/VtkVisPipeline.cpp b/Applications/DataExplorer/VtkVis/VtkVisPipeline.cpp index 1ed5f98cf0c900349cf44e740358f6d8e04e7899..ff323044c9fff31a15ee3ceeb3deb3f02cde652d 100644 --- a/Applications/DataExplorer/VtkVis/VtkVisPipeline.cpp +++ b/Applications/DataExplorer/VtkVis/VtkVisPipeline.cpp @@ -42,8 +42,7 @@ #include <QString> #include <QTime> - -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MathLib/InterpolationAlgorithms/LinearIntervalInterpolation.h" #include "MeshLib/Mesh.h" @@ -179,7 +178,7 @@ void VtkVisPipeline::loadFromFile(QString filename) #ifndef NDEBUG QTime myTimer; myTimer.start(); - INFO("VTK Read: %s.", filename.toStdString().c_str()); + INFO("VTK Read: {:s}.", filename.toStdString().c_str()); #endif if (filename.size() > 0) @@ -245,7 +244,7 @@ void VtkVisPipeline::loadFromFile(QString filename) } #ifndef NDEBUG - INFO("%d ms", myTimer.elapsed()); + INFO("{:d} ms", myTimer.elapsed()); #endif } @@ -468,14 +467,14 @@ void VtkVisPipeline::listArrays(vtkDataSet* dataSet) if (dataSet) { vtkPointData* pointData = dataSet->GetPointData(); - INFO(" #point data arrays: %d", pointData->GetNumberOfArrays()); + INFO(" #point data arrays: {:d}", pointData->GetNumberOfArrays()); for (int i = 0; i < pointData->GetNumberOfArrays(); i++) - INFO(" Name: %s", pointData->GetArrayName(i)); + INFO(" Name: {:s}", pointData->GetArrayName(i)); vtkCellData* cellData = dataSet->GetCellData(); - INFO(" #cell data arrays: %d", cellData->GetNumberOfArrays()); + INFO(" #cell data arrays: {:d}", cellData->GetNumberOfArrays()); for (int i = 0; i < cellData->GetNumberOfArrays(); i++) - INFO(" Name: %s", cellData->GetArrayName(i)); + INFO(" Name: {:s}", cellData->GetArrayName(i)); } else ERR("VtkVisPipeline::listArrays(): not a valid vtkDataSet."); diff --git a/Applications/DataExplorer/VtkVis/VtkVisPointSetItem.cpp b/Applications/DataExplorer/VtkVis/VtkVisPointSetItem.cpp index 9f818c9953943d726b05cd8334474c3644a751ac..46ad898ef7ae3115e4a04eebf4e4d681be87e3b2 100644 --- a/Applications/DataExplorer/VtkVis/VtkVisPointSetItem.cpp +++ b/Applications/DataExplorer/VtkVis/VtkVisPointSetItem.cpp @@ -22,7 +22,7 @@ #include <QSettings> #include <QStringList> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileTools.h" diff --git a/Applications/DataExplorer/VtkVis/VtkVisTabWidget.cpp b/Applications/DataExplorer/VtkVis/VtkVisTabWidget.cpp index ec6eee9911219ba172927b01bbf0c66c9e0135ff..6cdb96a410b84d62fc3d75089a0126220fb1e0d3 100644 --- a/Applications/DataExplorer/VtkVis/VtkVisTabWidget.cpp +++ b/Applications/DataExplorer/VtkVis/VtkVisTabWidget.cpp @@ -22,7 +22,7 @@ #include "VtkVisImageItem.h" #include "VtkVisPipelineItem.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <vtkActor.h> #include <vtkImageChangeInformation.h> diff --git a/Applications/DataExplorer/main.cpp b/Applications/DataExplorer/main.cpp index 512f4a9075a77ff559a93570488761d256bb7cde..6e96e570563966ce3a90cbd95ead434f2db6fd1c 100644 --- a/Applications/DataExplorer/main.cpp +++ b/Applications/DataExplorer/main.cpp @@ -3,8 +3,8 @@ #include <QApplication> #include <QSurfaceFormat> #include <QVTKOpenGLWidget.h> -#include <logog/include/logog.hpp> #include <memory> +#include "BaseLib/Logging.h" #ifdef VTKFBXCONVERTER_FOUND #include <fbxsdk.h> @@ -16,7 +16,7 @@ FbxScene* lScene = nullptr; #include <vtkSmartPointer.h> #include "InfoLib/GitInfo.h" -#include "BaseLib/LogogSimpleFormatter.h" +#include "BaseLib/Logging.h" #include "VtkVis/VtkConsoleOutputWindow.h" int main(int argc, char* argv[]) @@ -31,10 +31,6 @@ int main(int argc, char* argv[]) auto myOutputWindow = vtkSmartPointer<VtkConsoleOutputWindow>::New(); vtkOutputWindow::SetInstance(myOutputWindow); - LOGOG_INITIALIZE(); - auto* logogCout = new logog::Cout; - auto* formatter = new BaseLib::LogogSimpleFormatter; - logogCout->SetFormatter(*formatter); QApplication a(argc, argv); QApplication::setApplicationName("OpenGeoSys - Data Explorer"); QApplication::setApplicationVersion(QString::fromStdString( @@ -51,9 +47,6 @@ int main(int argc, char* argv[]) } w->show(); int returncode = QApplication::exec(); - delete formatter; - delete logogCout; - LOGOG_SHUTDOWN(); #ifdef VTKFBXCONVERTER_FOUND DestroySdkObjects(lSdkManager, true); #endif diff --git a/Applications/DataExplorer/mainwindow.cpp b/Applications/DataExplorer/mainwindow.cpp index 73b630a784b49e4e16de63ed46cd166e37d16be6..d609239d3910c049e457edf29c28613c8812c8c5 100644 --- a/Applications/DataExplorer/mainwindow.cpp +++ b/Applications/DataExplorer/mainwindow.cpp @@ -14,7 +14,7 @@ #include "mainwindow.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" // Qt includes #include <QDate> @@ -593,7 +593,7 @@ void MainWindow::loadFile(ImportFileType::type t, const QString &fileName) std::unique_ptr<MeshLib::Mesh> mesh( MeshLib::IO::readMeshFromFile(fileName.toStdString())); #ifndef NDEBUG - INFO("Mesh loading time: %d ms.", myTimer0.elapsed()); + INFO("Mesh loading time: {:d} ms.", myTimer0.elapsed()); myTimer1.start(); #endif if (mesh) @@ -605,7 +605,7 @@ void MainWindow::loadFile(ImportFileType::type t, const QString &fileName) OGSError::box("Failed to load mesh file."); } #ifndef NDEBUG - INFO("Mesh model setup time: %d ms.", myTimer1.elapsed()); + INFO("Mesh model setup time: {:d} ms.", myTimer1.elapsed()); #endif } @@ -1130,7 +1130,7 @@ void MainWindow::callGMSH(std::vector<std::string> & selectedGeometries, remove_command = "del "; #endif remove_command += fileName.toStdString(); - INFO("remove command: %s", remove_command.c_str()); + INFO("remove command: {:s}", remove_command.c_str()); auto const return_value = system(remove_command.c_str()); if (return_value != 0) { diff --git a/Applications/DataHolderLib/CMakeLists.txt b/Applications/DataHolderLib/CMakeLists.txt index 606d95218fd52ad88ebef6f397bb3cd84236127a..fc8691ffd085a555c45553be64a367aad3a3d2b4 100644 --- a/Applications/DataHolderLib/CMakeLists.txt +++ b/Applications/DataHolderLib/CMakeLists.txt @@ -4,4 +4,7 @@ get_source_files(SOURCES_DataHolderLib) # Library ogs_add_library(DataHolderLib ${SOURCES_DataHolderLib}) -target_link_libraries(DataHolderLib PUBLIC GeoLib MeshLib PRIVATE BaseLib logog) +target_link_libraries( + DataHolderLib + PUBLIC GeoLib MeshLib + PRIVATE BaseLib spdlog::spdlog) diff --git a/Applications/DataHolderLib/Color.cpp b/Applications/DataHolderLib/Color.cpp index 6a7cc3f7ba470eda8ccb0482ac961f683403dec1..7feeba80fa3dceba2f1ef1202d242baa2f736142 100644 --- a/Applications/DataHolderLib/Color.cpp +++ b/Applications/DataHolderLib/Color.cpp @@ -14,7 +14,7 @@ #include "Color.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" namespace DataHolderLib { @@ -36,7 +36,7 @@ Color getColor(const std::string& id, std::map<std::string, Color>& colors) if (it == end(colors)) { - WARN("Key '%s' not found in color lookup table.", id.c_str()); + WARN("Key '{:s}' not found in color lookup table.", id.c_str()); it = colors.insert({id, getRandomColor()}).first; } diff --git a/Applications/DataHolderLib/Project.cpp b/Applications/DataHolderLib/Project.cpp index 097367bea3919b0085cbf13a76c89080edc18ae8..a090d0e2be5147bb9f007ac25f6eb493e0d5b706 100644 --- a/Applications/DataHolderLib/Project.cpp +++ b/Applications/DataHolderLib/Project.cpp @@ -11,7 +11,7 @@ #include "Project.h" #include <algorithm> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Algorithm.h" #include "BaseLib/FileTools.h" diff --git a/Applications/FileIO/AsciiRasterInterface.cpp b/Applications/FileIO/AsciiRasterInterface.cpp index 295263ee3a85645ce1880fb554952968015ba198..7dbf9aff0e226e188092f8333c4b644f517dd4b5 100644 --- a/Applications/FileIO/AsciiRasterInterface.cpp +++ b/Applications/FileIO/AsciiRasterInterface.cpp @@ -13,8 +13,8 @@ #include "AsciiRasterInterface.h" -#include <logog/include/logog.hpp> #include <boost/optional.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -44,7 +44,8 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromASCFile(std::string const& fn std::ifstream in(fname.c_str()); if (!in.is_open()) { - WARN("Raster::getRasterFromASCFile(): Could not open file %s.", fname.c_str()); + WARN("Raster::getRasterFromASCFile(): Could not open file {:s}.", + fname.c_str()); return nullptr; } @@ -68,7 +69,7 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromASCFile(std::string const& fn delete [] values; return raster; } - WARN("Raster::getRasterFromASCFile(): Could not read header of file %s", + WARN("Raster::getRasterFromASCFile(): Could not read header of file {:s}", fname.c_str()); return nullptr; } @@ -159,7 +160,8 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromSurferFile(std::string const& std::ifstream in(fname.c_str()); if (!in.is_open()) { - ERR("Raster::getRasterFromSurferFile() - Could not open file %s", fname.c_str()); + ERR("Raster::getRasterFromSurferFile() - Could not open file {:s}", + fname.c_str()); return nullptr; } @@ -191,7 +193,7 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromSurferFile(std::string const& delete [] values; return raster; } - ERR("Raster::getRasterFromASCFile() - could not read header of file %s", + ERR("Raster::getRasterFromASCFile() - could not read header of file {:s}", fname.c_str()); return nullptr; } diff --git a/Applications/FileIO/CMakeLists.txt b/Applications/FileIO/CMakeLists.txt index 995e3fa864fadf73ae16e8dd475a77e5e1ef4be2..d3d3d45f5511005cbde6857fdd37803bbe62edad 100644 --- a/Applications/FileIO/CMakeLists.txt +++ b/Applications/FileIO/CMakeLists.txt @@ -29,8 +29,7 @@ target_link_libraries(ApplicationsFileIO DataHolderLib GeoLib MathLib - logog - PRIVATE MeshLib GitInfoLib std::filesystem) + PRIVATE MeshLib GitInfoLib std::filesystem spdlog::spdlog) if(OGS_BUILD_GUI) # Needed for the XmlPrjInterface, which links the DE/Base/OGSError.h. diff --git a/Applications/FileIO/CsvInterface.cpp b/Applications/FileIO/CsvInterface.cpp index 92c8c20f57997f1771c517a2c6a84eb76b29dbf4..f81125650e504b117f9c49a1a0459d334119e868 100644 --- a/Applications/FileIO/CsvInterface.cpp +++ b/Applications/FileIO/CsvInterface.cpp @@ -29,7 +29,7 @@ std::vector<std::string> CsvInterface::getColumnNames(std::string const& fname, if (!in.is_open()) { - ERR("CsvInterface::readPoints(): Could not open file %s.", + ERR("CsvInterface::readPoints(): Could not open file {:s}.", fname.c_str()); return std::vector<std::string>(); } @@ -65,7 +65,8 @@ int CsvInterface::readPoints(std::string const& fname, char delim, std::ifstream in(fname.c_str()); if (!in.is_open()) { - ERR ("CsvInterface::readPoints(): Could not open file %s.", fname.c_str()); + ERR("CsvInterface::readPoints(): Could not open file {:s}.", + fname.c_str()); return -1; } @@ -82,7 +83,9 @@ int CsvInterface::readPoints(std::string const& fname, char delim, if (fields.size() < 3) { - ERR ("Line %d contains not enough columns of data. Skipping line...", line_count); + ERR("Line {:d} contains not enough columns of data. Skipping " + "line...", + line_count); error_count++; continue; } @@ -94,7 +97,8 @@ int CsvInterface::readPoints(std::string const& fname, char delim, point[2] = std::stod(*(++it)); points.push_back(new GeoLib::Point(point[0], point[1], point[2])); } catch (const std::invalid_argument&) { - ERR ("Error converting data to coordinates in line %d.", line_count); + ERR("Error converting data to coordinates in line {:d}.", + line_count); } } return error_count; @@ -110,7 +114,8 @@ int CsvInterface::readPoints(std::string const& fname, char delim, std::array<std::string, 3> const column_names = {{x_column_name, y_column_name, z_column_name}}; if (!in.is_open()) { - ERR ("CsvInterface::readPoints(): Could not open file %s.", fname.c_str()); + ERR("CsvInterface::readPoints(): Could not open file {:s}.", + fname.c_str()); return -1; } @@ -126,7 +131,7 @@ int CsvInterface::readPoints(std::string const& fname, char delim, { if (column_idx[i] == std::numeric_limits<std::size_t>::max()) { - ERR("Column '%s' not found in file header.", + ERR("Column '{:s}' not found in file header.", column_names[i].c_str()); return -1; } @@ -144,7 +149,8 @@ int CsvInterface::readPoints(std::string const& fname, char delim, std::ifstream in(fname.c_str()); if (!in.is_open()) { - ERR ("CsvInterface::readPoints(): Could not open file %s.", fname.c_str()); + ERR("CsvInterface::readPoints(): Could not open file {:s}.", + fname.c_str()); return -1; } @@ -181,7 +187,9 @@ int CsvInterface::readPoints(std::ifstream &in, char delim, if (fields.size() < column_idx[order[2]]+1) { - ERR ("Line %d contains not enough columns of data. Skipping line...", line_count); + ERR("Line {:d} contains not enough columns of data. Skipping " + "line...", + line_count); error_count++; continue; } @@ -197,7 +205,8 @@ int CsvInterface::readPoints(std::ifstream &in, char delim, point[order[2]] = (column_idx[1] == column_idx[2]) ? 0 : std::stod(*it); points.push_back(new GeoLib::Point(point[0], point[1], point[2])); } catch (const std::invalid_argument&) { - ERR ("Error converting data to coordinates in line %d.", line_count); + ERR("Error converting data to coordinates in line {:d}.", + line_count); error_count++; } } diff --git a/Applications/FileIO/CsvInterface.h b/Applications/FileIO/CsvInterface.h index 43e2e14578280b40f0fb88558965473191fc18a9..069942d74aef039ab48ae0cb04191c424aa3ab57 100644 --- a/Applications/FileIO/CsvInterface.h +++ b/Applications/FileIO/CsvInterface.h @@ -13,8 +13,8 @@ #pragma once -#include <logog/include/logog.hpp> #include <boost/any.hpp> +#include "BaseLib/Logging.h" #include <array> #include <fstream> @@ -74,7 +74,9 @@ public: std::size_t const vec_size (getVectorSize(0)); if (vec_size != vec.size()) { - ERR ("Vector size does not match existing data (should be %d).", vec_size); + ERR("Vector size does not match existing data (should be " + "{:d}).", + vec_size); return false; } } @@ -153,7 +155,8 @@ public: { std::ifstream in(fname.c_str()); if (!in.is_open()) { - ERR ("CsvInterface::readColumn(): Could not open file %s.", fname.c_str()); + ERR("CsvInterface::readColumn(): Could not open file {:s}.", + fname.c_str()); return -1; } @@ -162,7 +165,7 @@ public: std::size_t const column_idx = CsvInterface::findColumn(line, delim, column_name); if (column_idx == std::numeric_limits<std::size_t>::max()) { - ERR("Column '%s' not found in file header.", column_name.c_str()); + ERR("Column '{:s}' not found in file header.", column_name.c_str()); return -1; } return readColumn<T>(in, delim, data_array, column_idx); @@ -175,7 +178,8 @@ public: { std::ifstream in(fname.c_str()); if (!in.is_open()) { - ERR ("CsvInterface::readColumn(): Could not open file %s.", fname.c_str()); + ERR("CsvInterface::readColumn(): Could not open file {:s}.", + fname.c_str()); return -1; } return readColumn<T>(in, delim, data_array, column_idx); @@ -204,7 +208,9 @@ private: if (fields.size() < column_idx+1) { - ERR ("Line %d contains not enough columns of data. Skipping line...", line_count); + ERR("Line {:d} contains not enough columns of data. Skipping " + "line...", + line_count); error_count++; continue; } @@ -215,7 +221,7 @@ private: T value; if (!(stream >> value)) { - ERR("Error reading value in line %d.", line_count); + ERR("Error reading value in line {:d}.", line_count); error_count++; continue; } diff --git a/Applications/FileIO/FEFLOW/FEFLOWGeoInterface.cpp b/Applications/FileIO/FEFLOW/FEFLOWGeoInterface.cpp index 2026465ca1459c45c73dea0cf24b2d6aece4abdc..9c5174961fcab355aaedb207ebc2767680ad6caf 100644 --- a/Applications/FileIO/FEFLOW/FEFLOWGeoInterface.cpp +++ b/Applications/FileIO/FEFLOW/FEFLOWGeoInterface.cpp @@ -17,7 +17,7 @@ #include <QString> #include <QtXml/QDomDocument> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -34,7 +34,7 @@ void FEFLOWGeoInterface::readFEFLOWFile(const std::string& filename, std::ifstream in(filename.c_str()); if (!in) { - ERR("FEFLOWGeoInterface::readFEFLOWFile(): Could not open file %s.", + ERR("FEFLOWGeoInterface::readFEFLOWFile(): Could not open file {:s}.", filename.c_str()); return; } diff --git a/Applications/FileIO/FEFLOW/FEFLOWMeshInterface.cpp b/Applications/FileIO/FEFLOW/FEFLOWMeshInterface.cpp index 7adfd15467b1498190184fdbd896c5763799806b..273c94078a3ae8c674e436c85dbc4db5bd66dd9c 100644 --- a/Applications/FileIO/FEFLOW/FEFLOWMeshInterface.cpp +++ b/Applications/FileIO/FEFLOW/FEFLOWMeshInterface.cpp @@ -13,7 +13,7 @@ #include <boost/algorithm/string/trim.hpp> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -33,7 +33,7 @@ MeshLib::Mesh* FEFLOWMeshInterface::readFEFLOWFile(const std::string& filename) std::ifstream in(filename.c_str()); if (!in) { - ERR("FEFLOWMeshInterface::readFEFLOWFile(): Could not open file %s.", + ERR("FEFLOWMeshInterface::readFEFLOWFile(): Could not open file {:s}.", filename.c_str()); return nullptr; } @@ -131,7 +131,7 @@ MeshLib::Mesh* FEFLOWMeshInterface::readFEFLOWFile(const std::string& filename) if (eleType == MeshLib::MeshElemType::INVALID) { ERR("FEFLOWInterface::readFEFLOWFile(): Unsupported element " - "type with the number of node = %d and dim = %d", + "type with the number of node = {:d} and dim = {:d}", fem_dim.n_nodes_of_element, fem_class.dimension); std::for_each(vec_nodes.begin(), vec_nodes.end(), [](MeshLib::Node* nod) @@ -276,7 +276,7 @@ void FEFLOWMeshInterface::readNodeCoordinates( // read the line containing the coordinates as string if (!std::getline(in, line_string)) { - ERR("Could not read the node '%u'.", k); + ERR("Could not read the node '{:d}'.", k); for (auto* n : vec_nodes) { delete n; @@ -290,7 +290,7 @@ void FEFLOWMeshInterface::readNodeCoordinates( { if (!(line_stream >> (*vec_nodes[k])[i])) { - ERR("Could not parse coordinate %u of node '%u'.", i, k); + ERR("Could not parse coordinate {:d} of node '{:d}'.", i, k); for (auto* n : vec_nodes) { delete n; @@ -299,7 +299,7 @@ void FEFLOWMeshInterface::readNodeCoordinates( } if (!(line_stream >> dummy_char) && i < 2) // read comma { - ERR("Could not parse node '%u'.", k); + ERR("Could not parse node '{:d}'.", k); for (auto* n : vec_nodes) { delete n; @@ -691,7 +691,7 @@ void FEFLOWMeshInterface::readELEMENTALSETS( set_name = line_string.substr(0, pos); ids = line_string.substr(pos + 1); } - INFO("Found an element group - %s", set_name.data()); + INFO("Found an element group - {:s}", set_name.data()); str_idList += compressSpaces(ids); } else diff --git a/Applications/FileIO/GMSInterface.cpp b/Applications/FileIO/GMSInterface.cpp index 1ddb17a718db4cfb260e807ee623a18f6fad3532..cb9a9e165fab5ea2feab00f88c135f0dc6d411b5 100644 --- a/Applications/FileIO/GMSInterface.cpp +++ b/Applications/FileIO/GMSInterface.cpp @@ -19,9 +19,9 @@ #include <fstream> #include <list> -#include <logog/include/logog.hpp> #include "BaseLib/FileTools.h" +#include "BaseLib/Logging.h" #include "BaseLib/StringTools.h" #include "GeoLib/StationBorehole.h" #include "MeshLib/Elements/Prism.h" @@ -50,7 +50,7 @@ int GMSInterface::readBoreholesFromGMS(std::vector<GeoLib::Point*>* boreholes, std::ifstream in(filename.c_str()); if (!in.is_open()) { - ERR("GMSInterface::readBoreholeFromGMS(): Could not open file %s.", + ERR("GMSInterface::readBoreholeFromGMS(): Could not open file {:s}.", filename.c_str()); return 0; } @@ -92,7 +92,7 @@ int GMSInterface::readBoreholesFromGMS(std::vector<GeoLib::Point*>* boreholes, else WARN( "GMSInterface::readBoreholeFromGMS(): Skipped layer " - "'%s' in borehole '%s' because of thickness 0.0.", + "'{:s}' in borehole '{:s}' because of thickness 0.0.", sName.c_str(), cName.c_str()); } else // add new borehole @@ -186,7 +186,7 @@ MeshLib::Mesh* GMSInterface::readGMS3DMMesh(const std::string& filename) std::ifstream in(filename.c_str()); if (!in.is_open()) { - ERR("GMSInterface::readGMS3DMMesh(): Could not open file %s.", + ERR("GMSInterface::readGMS3DMMesh(): Could not open file {:s}.", filename.c_str()); return nullptr; } @@ -282,7 +282,7 @@ MeshLib::Mesh* GMSInterface::readGMS3DMMesh(const std::string& filename) else // default { WARN( - "GMSInterface::readGMS3DMMesh() - Element type '%s' not " + "GMSInterface::readGMS3DMMesh() - Element type '{:s}' not " "recognised.", element_id.c_str()); return nullptr; diff --git a/Applications/FileIO/Gmsh/GMSHAdaptiveMeshDensity.cpp b/Applications/FileIO/Gmsh/GMSHAdaptiveMeshDensity.cpp index 605ccce75e20f0f7dccc3befb9dc6ec64b115113..4e5e43dbe54be306bd2684558a737d2824c6358b 100644 --- a/Applications/FileIO/Gmsh/GMSHAdaptiveMeshDensity.cpp +++ b/Applications/FileIO/Gmsh/GMSHAdaptiveMeshDensity.cpp @@ -15,7 +15,7 @@ #include <list> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoLib/Point.h" #include "GeoLib/Polygon.h" @@ -86,7 +86,10 @@ void GMSHAdaptiveMeshDensity::addPoints(std::vector<GeoLib::Point const*> const& { // *** QuadTree - insert points const std::size_t n_pnts(pnts.size()); - DBUG("GMSHAdaptiveMeshDensity::addPoints(): Inserting %d points into quadtree.", n_pnts); + DBUG( + "GMSHAdaptiveMeshDensity::addPoints(): Inserting {:d} points into " + "quadtree.", + n_pnts); for (std::size_t k(0); k < n_pnts; k++) { _quad_tree->addPoint(pnts[k]); diff --git a/Applications/FileIO/Gmsh/GMSHInterface.cpp b/Applications/FileIO/Gmsh/GMSHInterface.cpp index 987835480b28411eef57fc2460502c89fe4c7ca1..a2a8c3126f3ecec814ed0835ff03f03908be0328 100644 --- a/Applications/FileIO/Gmsh/GMSHInterface.cpp +++ b/Applications/FileIO/Gmsh/GMSHInterface.cpp @@ -11,7 +11,7 @@ #include <memory> #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" @@ -150,12 +150,12 @@ int GMSHInterface::writeGMSHInputFile(std::ostream& out) } DBUG( "GMSHInterface::writeGMSHInputFile(): Computed topological hierarchy - " - "detected %d polygons.", + "detected {:d} polygons.", _polygon_tree_list.size()); GeoLib::createPolygonTrees<GMSH::GMSHPolygonTree>(_polygon_tree_list); DBUG( "GMSHInterface::writeGMSHInputFile(): Computed topological hierarchy - " - "calculated %d polygon trees.", + "calculated {:d} polygon trees.", _polygon_tree_list.size()); // *** Mark in each polygon tree the segments shared by two polygons. diff --git a/Applications/FileIO/Gmsh/GmshReader.cpp b/Applications/FileIO/Gmsh/GmshReader.cpp index 41b6398e1654adbe38a39817db689d0cc2ed65ee..8d415c5e8d473da07a8739a95ea0c6c7f3b66b30 100644 --- a/Applications/FileIO/Gmsh/GmshReader.cpp +++ b/Applications/FileIO/Gmsh/GmshReader.cpp @@ -39,7 +39,7 @@ bool isGMSHMeshFile(const std::string& fname) std::ifstream input(fname.c_str()); if (!input) { - ERR("isGMSHMeshFile(): Could not open file %s.", fname.c_str()); + ERR("isGMSHMeshFile(): Could not open file {:s}.", fname.c_str()); return false; } @@ -50,7 +50,7 @@ bool isGMSHMeshFile(const std::string& fname) std::string version; getline(input, version); getline(input, version); - INFO("isGMSHMeshFile(): Found GMSH mesh file version: %s.", + INFO("isGMSHMeshFile(): Found GMSH mesh file version: {:s}.", version.c_str()); input.close(); return true; @@ -156,7 +156,7 @@ std::pair<MeshLib::Element*, int> readElement( in >> dummy; // skip rest of line break; default: - WARN("readGMSHMesh(): Unknown element type %d.", type); + WARN("readGMSHMesh(): Unknown element type {:d}.", type); break; } return std::make_pair(nullptr, -1); @@ -168,7 +168,7 @@ MeshLib::Mesh* readGMSHMesh(std::string const& fname) std::ifstream in(fname.c_str(), std::ios::in); if (!in.is_open()) { - WARN ("readGMSHMesh() - Could not open file %s.", fname.c_str()); + WARN("readGMSHMesh() - Could not open file {:s}.", fname.c_str()); return nullptr; } @@ -183,7 +183,8 @@ MeshLib::Mesh* readGMSHMesh(std::string const& fname) getline(in, line); // version-number file-type data-size if (line.substr(0, 3) != "2.2") { - WARN("Wrong gmsh file format version '%s'.", line.substr(0,3).c_str()); + WARN("Wrong gmsh file format version '{:s}'.", + line.substr(0, 3).c_str()); return nullptr; } @@ -281,8 +282,8 @@ MeshLib::Mesh* readGMSHMesh(std::string const& fname) MeshLib::ElementValueModification::condense(*mesh); INFO("\t... finished."); - INFO("Nr. Nodes: %d.", nodes.size()); - INFO("Nr. Elements: %d.", elements.size()); + INFO("Nr. Nodes: {:d}.", nodes.size()); + INFO("Nr. Elements: {:d}.", elements.size()); return mesh; } diff --git a/Applications/FileIO/GocadIO/CoordinateSystem.cpp b/Applications/FileIO/GocadIO/CoordinateSystem.cpp index 2bdfe1e2834a2390486803e15b188d9e97f800f0..b314c28ee5dad00d381ce31aa1d493f95451c40b 100644 --- a/Applications/FileIO/GocadIO/CoordinateSystem.cpp +++ b/Applications/FileIO/GocadIO/CoordinateSystem.cpp @@ -7,13 +7,13 @@ * http://www.opengeosys.org/LICENSE.txt */ -#include <iostream> +#include "CoordinateSystem.h" -#include <logog/include/logog.hpp> -#include <boost/tokenizer.hpp> #include <boost/algorithm/string/trim.hpp> +#include <boost/tokenizer.hpp> +#include <iostream> -#include "CoordinateSystem.h" +#include "BaseLib/Logging.h" namespace FileIO { @@ -100,7 +100,8 @@ bool CoordinateSystem::parse(std::istream& in) return true; } else - WARN("CoordinateSystem::parse() - Unknown keyword found: %s", line.c_str()); + WARN("CoordinateSystem::parse() - Unknown keyword found: {:s}", + line.c_str()); } ERR ("Error: Unexpected end of file."); return false; diff --git a/Applications/FileIO/GocadIO/GenerateFaceSetMeshes.cpp b/Applications/FileIO/GocadIO/GenerateFaceSetMeshes.cpp index 77ca064e968ba2929187c20ffc248777ff21db7d..f69ae0feed64334434a3c2e761c6592c876aad43 100644 --- a/Applications/FileIO/GocadIO/GenerateFaceSetMeshes.cpp +++ b/Applications/FileIO/GocadIO/GenerateFaceSetMeshes.cpp @@ -26,12 +26,12 @@ void generateFaceSets(GocadSGridReader const& reader, std::string const& path) { continue; } - INFO("Face set mesh created. #nodes: %d, #elements: %d", + INFO("Face set mesh created. #nodes: {:d}, #elements: {:d}", face_set->getNumberOfNodes(), face_set->getNumberOfElements()); std::string const mesh_out_fname(path + face_set->getName() + ".vtu"); - INFO("Writing face set mesh to '%s'.", mesh_out_fname.c_str()); + INFO("Writing face set mesh to '{:s}'.", mesh_out_fname.c_str()); MeshLib::IO::writeMeshToFile(*face_set, mesh_out_fname); } } diff --git a/Applications/FileIO/GocadIO/GocadAsciiReader.cpp b/Applications/FileIO/GocadIO/GocadAsciiReader.cpp index 9a74dcff8dd0f8d0065fc55027552acf366ea787..7dc709fcf57007b824f2fe42a55cba1704e4963d 100644 --- a/Applications/FileIO/GocadIO/GocadAsciiReader.cpp +++ b/Applications/FileIO/GocadIO/GocadAsciiReader.cpp @@ -9,12 +9,11 @@ #include "GocadAsciiReader.h" -#include <logog/include/logog.hpp> - #include <iosfwd> #include "Applications/FileIO/GocadIO/CoordinateSystem.h" #include "BaseLib/FileTools.h" +#include "BaseLib/Logging.h" #include "BaseLib/StringTools.h" #include "MeshLib/Elements/Line.h" #include "MeshLib/Elements/Tri.h" @@ -90,7 +89,7 @@ bool skipToEND(std::ifstream& in) return true; } } - ERR("%s", eof_error.c_str()); + ERR("{:s}", eof_error.c_str()); return false; } @@ -151,7 +150,7 @@ bool parseHeader(std::ifstream& in, std::string& mesh_name) } // ignore all other header parameters } - ERR("%s", eof_error.c_str()); + ERR("{:s}", eof_error.c_str()); return false; } @@ -167,7 +166,7 @@ bool parsePropertyClass(std::ifstream& in) return true; } } - ERR("%s", eof_error.c_str()); + ERR("{:s}", eof_error.c_str()); return false; } @@ -221,8 +220,8 @@ bool parseProperties(std::ifstream& in, if (names.size() != prop_size.size()) { - ERR("Error: Number of PROPERTY-names (%d) does not match " - "number of ESIZES (%d)", + ERR("Error: Number of PROPERTY-names ({:d}) does not match " + "number of ESIZES ({:d})", names.size(), prop_size.size()); return false; } @@ -238,7 +237,7 @@ bool parseProperties(std::ifstream& in, // Remember current position in case the properties black ends now. pos = in.tellg(); } - ERR("%s", eof_error.c_str()); + ERR("{:s}", eof_error.c_str()); return false; } @@ -284,7 +283,7 @@ bool parseNodes(std::ifstream& in, if (!(line.substr(0, 4) == "VRTX" || line.substr(0, 5) == "PVRTX" || line.substr(0, 4) == "ATOM")) { - WARN("GocadAsciiReader::parseNodes() - Unknown keyword found: %s", + WARN("GocadAsciiReader::parseNodes() - Unknown keyword found: {:s}", line.c_str()); continue; } @@ -322,7 +321,7 @@ bool parseNodes(std::ifstream& in, node_id_map[nodes.back()->getID()] = nodes.size() - 1; pos = in.tellg(); } - ERR("%s", eof_error.c_str()); + ERR("{:s}", eof_error.c_str()); return false; } @@ -361,8 +360,8 @@ bool parseLineSegments(std::ifstream& in, auto const it = node_id_map.find(data[i]); if (it == node_id_map.end() || it->second >= nodes.size()) { - ERR("Error: Node ID (%d) out of range (0, %d).", data[i], - nodes.back()->getID()); + ERR("Error: Node ID ({:d}) out of range (0, {:d}).", + data[i], nodes.back()->getID()); return false; } elem_nodes[i] = nodes[it->second]; @@ -377,7 +376,7 @@ bool parseLineSegments(std::ifstream& in, } pos = in.tellg(); } - ERR("%s", eof_error.c_str()); + ERR("{:s}", eof_error.c_str()); return false; } @@ -410,10 +409,10 @@ bool parseLine(std::ifstream& in, { return true; } - WARN("GocadAsciiReader::parseLine() - Unknown keyword found: %s", + WARN("GocadAsciiReader::parseLine() - Unknown keyword found: {:s}", line.c_str()); } - ERR("%s", eof_error.c_str()); + ERR("{:s}", eof_error.c_str()); return false; } @@ -452,8 +451,8 @@ bool parseElements(std::ifstream& in, auto const it = node_id_map.find(data[i]); if (it == node_id_map.end() || it->second >= nodes.size()) { - ERR("Error: Node ID (%d) out of range (0, %d).", data[i], - nodes.back()->getID()); + ERR("Error: Node ID ({:d}) out of range (0, {:d}).", + data[i], nodes.back()->getID()); return false; } elem_nodes[i] = nodes[it->second]; @@ -468,7 +467,7 @@ bool parseElements(std::ifstream& in, } pos = in.tellg(); } - ERR("%s", eof_error.c_str()); + ERR("{:s}", eof_error.c_str()); return false; } @@ -511,11 +510,13 @@ bool parseSurface(std::ifstream& in, } else { - WARN("GocadAsciiReader::parseSurface() - Unknown keyword found: %s", - line.c_str()); + WARN( + "GocadAsciiReader::parseSurface() - Unknown keyword found: " + "{:s}", + line.c_str()); } } - ERR("%s", eof_error.c_str()); + ERR("{:s}", eof_error.c_str()); return false; } @@ -528,7 +529,7 @@ MeshLib::Mesh* createMesh(std::ifstream& in, DataType type, std::vector<MeshLib::Node*> nodes; std::vector<MeshLib::Element*> elems; std::map<std::size_t, std::size_t> node_id_map; - INFO("Parsing %s %s.", dataType2ShortString(type).c_str(), + INFO("Parsing {:s} {:s}.", dataType2ShortString(type).c_str(), mesh_name.c_str()); bool return_val; return_val = parser(in, nodes, elems, node_id_map, mesh_prop); @@ -537,7 +538,7 @@ MeshLib::Mesh* createMesh(std::ifstream& in, DataType type, { return new MeshLib::Mesh(mesh_name, nodes, elems, mesh_prop); } - ERR("Error parsing %s %s.", dataType2ShortString(type).c_str(), + ERR("Error parsing {:s} {:s}.", dataType2ShortString(type).c_str(), mesh_name.c_str()); clearData(nodes, elems); return nullptr; @@ -605,11 +606,11 @@ MeshLib::Mesh* readData(std::ifstream& in, } else { - WARN("GocadAsciiReader::readData() - Unknown keyword found: %s", + WARN("GocadAsciiReader::readData() - Unknown keyword found: {:s}", line.c_str()); } } - ERR("%s", eof_error.c_str()); + ERR("{:s}", eof_error.c_str()); return nullptr; } @@ -620,7 +621,7 @@ bool readFile(std::string const& file_name, std::ifstream in(file_name.c_str()); if (!in.is_open()) { - ERR("GocadAsciiReader::readFile(): Could not open file %s.", + ERR("GocadAsciiReader::readFile(): Could not open file {:s}.", file_name.c_str()); return false; } @@ -638,7 +639,8 @@ bool readFile(std::string const& file_name, { if (!skipToEND(in)) { - ERR("Parsing of type %s is not implemented. Skipping section.", + ERR("Parsing of type {:s} is not implemented. Skipping " + "section.", dataType2String(type).c_str()); return false; } diff --git a/Applications/FileIO/GocadIO/GocadNode.h b/Applications/FileIO/GocadIO/GocadNode.h index 993f57d7f94e6e204c06fc6e3202075f2bd92b04..556495ae386d450b1600db6d4fb2ab1d126697af 100644 --- a/Applications/FileIO/GocadIO/GocadNode.h +++ b/Applications/FileIO/GocadIO/GocadNode.h @@ -60,8 +60,9 @@ public: FaceDirection::W); break; default: - OGS_FATAL("GocadNode::setFaceSet(): unknown face indicator %d.", - face_indicator); + OGS_FATAL( + "GocadNode::setFaceSet(): unknown face indicator {:d}.", + face_indicator); } } @@ -93,7 +94,8 @@ public: if (it == _face_directions.end()) { OGS_FATAL( - "GocadNode %d: Could not found face indicator for face set %d", + "GocadNode {:d}: Could not found face indicator for face set " + "{:d}", _id, face_set_number); } return it->second; diff --git a/Applications/FileIO/GocadIO/GocadSGridReader.cpp b/Applications/FileIO/GocadIO/GocadSGridReader.cpp index f3a38a70163c7c2129f7b0c3df622887c9cc364e..b7787bc7d28bd0aabfc55124604c200a24b6e6d4 100644 --- a/Applications/FileIO/GocadIO/GocadSGridReader.cpp +++ b/Applications/FileIO/GocadIO/GocadSGridReader.cpp @@ -10,13 +10,13 @@ #include "GocadSGridReader.h" #include <algorithm> +#include <boost/tokenizer.hpp> #include <cstddef> #include <fstream> #include <iostream> #include <sstream> -#include <boost/tokenizer.hpp> - +#include "BaseLib/FileTools.h" #include "MeshLib/Elements/Hex.h" #include "MeshLib/Elements/Quad.h" #include "MeshLib/Mesh.h" @@ -38,7 +38,7 @@ GocadSGridReader::GocadSGridReader(std::string const& fname) std::ifstream in(_fname.c_str()); if (!in) { - ERR("Could not open '%s'.", _fname.c_str()); + ERR("Could not open '{:s}'.", _fname.c_str()); in.close(); return; } @@ -108,7 +108,7 @@ GocadSGridReader::GocadSGridReader(std::string const& fname) std::size_t bit_length = std::atoi(it->c_str()); if (regions.size() != bit_length) { - ERR("%d regions read but %d expected.\n", regions.size(), + ERR("{:d} regions read but {:d} expected.\n", regions.size(), bit_length); throw std::runtime_error( "Number of read regions differs from expected.\n"); @@ -131,20 +131,20 @@ GocadSGridReader::GocadSGridReader(std::string const& fname) regions_ss << regions.size() << " regions read:\n"; std::copy(regions.begin(), regions.end(), std::ostream_iterator<Gocad::Region>(regions_ss, "\t")); - DBUG("%s", regions_ss.str().c_str()); + DBUG("{:s}", regions_ss.str().c_str()); std::stringstream layers_ss; layers_ss << layers.size() << " layers read:\n"; std::copy(layers.begin(), layers.end(), std::ostream_iterator<Gocad::Layer>(layers_ss, "\n")); - DBUG("%s", layers_ss.str().c_str()); + DBUG("{:s}", layers_ss.str().c_str()); std::stringstream properties_ss; properties_ss << "meta data for " << _property_meta_data_vecs.size() << " properties read:\n"; std::copy(_property_meta_data_vecs.begin(), _property_meta_data_vecs.end(), std::ostream_iterator<Gocad::Property>(properties_ss, "\n")); - DBUG("%s", properties_ss.str().c_str()); + DBUG("{:s}", properties_ss.str().c_str()); #endif // if not done already read the points @@ -204,14 +204,14 @@ void GocadSGridReader::addGocadPropertiesToMesh(MeshLib::Mesh& mesh) const continue; } - DBUG("Adding Gocad property '%s' with %d values.", name.c_str(), + DBUG("Adding Gocad property '{:s}' with {:d} values.", name.c_str(), prop->_property_data.size()); auto pv = MeshLib::getOrCreateMeshProperty<double>( mesh, name, MeshLib::MeshItemType::Cell, 1); if (pv == nullptr) { - ERR("Could not create mesh property '%s'.", name.c_str()); + ERR("Could not create mesh property '{:s}'.", name.c_str()); continue; } @@ -262,9 +262,11 @@ void GocadSGridReader::parseDims(std::string const& line) std::stringstream ssz(*it, std::stringstream::in | std::stringstream::out); ssz >> z_dim; _index_calculator = Gocad::IndexCalculator(x_dim, y_dim, z_dim); - DBUG("x_dim = %d, y_dim = %d, z_dim = %d => #nodes = %d, #cells = %d", - x_dim, y_dim, z_dim, _index_calculator._n_nodes, - _index_calculator._n_cells); + DBUG( + "x_dim = {:d}, y_dim = {:d}, z_dim = {:d} => #nodes = {:d}, #cells = " + "{:d}", + x_dim, y_dim, z_dim, _index_calculator._n_nodes, + _index_calculator._n_cells); } void GocadSGridReader::parseFileName(std::string const& line, @@ -302,7 +304,7 @@ void GocadSGridReader::parseFaceSet(std::string& line, std::istream& in) // Check first word is FACE_SET if (*it != std::string("FACE_SET")) { - ERR("Expected FACE_SET keyword but '%s' found.", it->c_str()); + ERR("Expected FACE_SET keyword but '{:s}' found.", it->c_str()); throw std::runtime_error( "In GocadSGridReader::parseFaceSet() expected FACE_SET keyword not " "found."); @@ -333,7 +335,8 @@ void GocadSGridReader::parseFaceSet(std::string& line, std::istream& in) if (id >= _index_calculator._n_nodes) { - ERR("Face set id %d is greater than the number of nodes (%d).", + ERR("Face set id {:d} is greater than the number of nodes " + "({:d}).", id, _index_calculator._n_nodes); } else @@ -343,11 +346,11 @@ void GocadSGridReader::parseFaceSet(std::string& line, std::istream& in) std::array<std::size_t, 3> const c( _index_calculator.getCoordsForID(id)); if (c[0] >= _index_calculator._x_dim - 1) - ERR("****** i coord %d to big for id %d.", c[0], id); + ERR("****** i coord {:d} to big for id {:d}.", c[0], id); if (c[1] >= _index_calculator._y_dim - 1) - ERR("****** j coord %d to big for id %d.", c[1], id); + ERR("****** j coord {:d} to big for id {:d}.", c[1], id); if (c[2] >= _index_calculator._z_dim - 1) - ERR("****** k coord %d to big for id %d.", c[2], id); + ERR("****** k coord {:d} to big for id {:d}.", c[2], id); std::size_t const cell_id( _index_calculator.getCellIdx(c[0], c[1], c[2])); face_set_property._property_data[cell_id] = @@ -359,8 +362,8 @@ void GocadSGridReader::parseFaceSet(std::string& line, std::istream& in) if (face_set_id_cnt != n_of_face_set_ids) { - ERR("Expected %d number of face set ids, read %d.", n_of_face_set_ids, - face_set_id_cnt); + ERR("Expected {:d} number of face set ids, read {:d}.", + n_of_face_set_ids, face_set_id_cnt); throw std::runtime_error( "Expected number of face set points does not match number of read " "points."); @@ -400,7 +403,7 @@ void GocadSGridReader::readNodesBinary() std::ifstream in(_pnts_fname.c_str(), std::ios::binary); if (!in) { - ERR("Could not open points file '%s'.", _pnts_fname.c_str()); + ERR("Could not open points file '{:s}'.", _pnts_fname.c_str()); throw std::runtime_error("Could not open points file."); } @@ -432,7 +435,8 @@ void GocadSGridReader::readNodesBinary() k++; } if (k != n * 3 && !in.eof()) - ERR("Read different number of points. Expected %d floats, got %d.\n", + ERR("Read different number of points. Expected {:d} floats, got " + "{:d}.\n", n * 3, k); } @@ -441,7 +445,7 @@ void GocadSGridReader::mapRegionFlagsToCellProperties( { DBUG( "GocadSGridReader::mapRegionFlagsToCellProperties region_flags.size: " - "%d", + "{:d}", rf.size()); Gocad::Property region_flags; @@ -491,14 +495,14 @@ void GocadSGridReader::readElementPropertiesBinary() std::string const& fname(prop_it->_property_data_fname); if (prop_it->_property_data_fname.empty()) { - WARN("Empty filename for property %s.", + WARN("Empty filename for property {:s}.", prop_it->_property_name.c_str()); continue; } std::vector<float> float_properties = BaseLib::readBinaryArray<float>(fname, _index_calculator._n_cells); DBUG( - "GocadSGridReader::readElementPropertiesBinary(): Read %d float " + "GocadSGridReader::readElementPropertiesBinary(): Read {:d} float " "properties from binary file.", _index_calculator._n_cells); @@ -512,7 +516,7 @@ void GocadSGridReader::readElementPropertiesBinary() prop_it->_property_data.begin()); if (prop_it->_property_data.empty()) { - ERR("Reading of element properties file '%s' failed.", + ERR("Reading of element properties file '{:s}' failed.", fname.c_str()); } } @@ -525,7 +529,7 @@ std::vector<Bitset> GocadSGridReader::readRegionFlagsBinary() const std::ifstream in(_region_flags_fname.c_str()); if (!in) { - ERR("readRegionFlagsBinary(): Could not open file '%s' for input.\n", + ERR("readRegionFlagsBinary(): Could not open file '{:s}' for input.\n", _region_flags_fname.c_str()); in.close(); return result; @@ -540,7 +544,8 @@ std::vector<Bitset> GocadSGridReader::readRegionFlagsBinary() const result[k++] = readBits(in, regions.size()); } if (k != n && !in.eof()) - ERR("Read different number of values. Expected %d, got %d.\n", n, k); + ERR("Read different number of values. Expected {:d}, got {:d}.\n", n, + k); return result; } @@ -580,7 +585,7 @@ void GocadSGridReader::readSplitInformation() std::ifstream in(_fname.c_str()); if (!in) { - ERR("Could not open '%s'.", _fname.c_str()); + ERR("Could not open '{:s}'.", _fname.c_str()); in.close(); return; } @@ -820,7 +825,7 @@ void GocadSGridReader::addFaceSetQuad( *_nodes[_index_calculator({c[0], c[1] + 1, c[2]})]); break; default: - ERR("Could not create face for node with id %d.", id); + ERR("Could not create face for node with id {:d}.", id); } std::copy(begin(quad_nodes), end(quad_nodes), back_inserter(face_set_nodes)); diff --git a/Applications/FileIO/GocadIO/GocadSGridReader.h b/Applications/FileIO/GocadIO/GocadSGridReader.h index 62d1245d2c065edbaac0704f004218e90060ed29..abef20ff1a5d6be801693569562a5ad1ef1f8a4b 100644 --- a/Applications/FileIO/GocadIO/GocadSGridReader.h +++ b/Applications/FileIO/GocadIO/GocadSGridReader.h @@ -9,22 +9,20 @@ #pragma once +#include <spdlog/spdlog.h> + +#include <boost/dynamic_bitset.hpp> #include <cstddef> #include <limits> #include <numeric> #include <string> #include <vector> -#include <boost/dynamic_bitset.hpp> - -#include <logog/include/logog.hpp> - -#include "MeshLib/Elements/Element.h" - #include "CoordinateSystem.h" #include "GocadNode.h" #include "IndexCalculator.h" #include "Layer.h" +#include "MeshLib/Elements/Element.h" #include "Property.h" #include "Region.h" diff --git a/Applications/FileIO/GocadIO/IndexCalculator.h b/Applications/FileIO/GocadIO/IndexCalculator.h index 5b4140d34dd22ff0d8152ddef473496afcf5c715..d663b2b368e213b820a283b8da48c0a0cec1da7b 100644 --- a/Applications/FileIO/GocadIO/IndexCalculator.h +++ b/Applications/FileIO/GocadIO/IndexCalculator.h @@ -9,13 +9,13 @@ #pragma once +#include <spdlog/spdlog.h> + #include <array> #include <cstddef> #include <limits> #include <numeric> -#include <logog/include/logog.hpp> - namespace FileIO { namespace Gocad @@ -61,8 +61,8 @@ public: { ERR("GocadSGridReader::IndexCalculator::getCellIdx(): At least " "one grid coordinate to big."); - ERR("\t Given: (%d, %d, %d), max allowed cell grid coords: " - "(%d, %d, %d).", + ERR("\t Given: ({:d}, {:d}, {:d}), max allowed cell grid coords: " + "({:d}, {:d}, {:d}).", u, v, w, _x_dim - 1, _y_dim - 1, _z_dim - 1); return std::numeric_limits<std::size_t>::max(); } diff --git a/Applications/FileIO/GocadIO/Layer.cpp b/Applications/FileIO/GocadIO/Layer.cpp index e17e31730302736f2d42a1341ab1a6bc7c53769e..8ebed256ecb537b3082093c60ca27589d535101c 100644 --- a/Applications/FileIO/GocadIO/Layer.cpp +++ b/Applications/FileIO/GocadIO/Layer.cpp @@ -7,13 +7,13 @@ * http://www.opengeosys.org/LICENSE.txt */ +#include "Layer.h" + #include <algorithm> #include <iterator> #include <sstream> -#include <logog/include/logog.hpp> - -#include "Layer.h" +#include "BaseLib/Logging.h" namespace FileIO { @@ -35,7 +35,7 @@ Layer parseLayer(std::string const& line, std::vector<Gocad::Region> const& regi // Check first word is MODEL_LAYER. if (*it != std::string("MODEL_LAYER")) { - ERR("Expected MODEL_LAYER keyword but '%s' found.\n", it->c_str()); + ERR("Expected MODEL_LAYER keyword but '{:s}' found.\n", it->c_str()); throw std::runtime_error( "In parseRegion() expected MODEL_LAYER keyword not found.\n"); } diff --git a/Applications/FileIO/GocadIO/Layer.h b/Applications/FileIO/GocadIO/Layer.h index cf3b166fbb0663355a150982fbe9a58ce7544a14..2979d93c438a4e5dbc781578ca121c27de45bb74 100644 --- a/Applications/FileIO/GocadIO/Layer.h +++ b/Applications/FileIO/GocadIO/Layer.h @@ -9,6 +9,7 @@ #pragma once +#include <algorithm> #include <string> #include <vector> diff --git a/Applications/FileIO/GocadIO/Property.cpp b/Applications/FileIO/GocadIO/Property.cpp index f6e47450b050b017fbc969f7dca87dd9695d6300..7a24c0d5dda715151c32dcf8faba80b4dab807d3 100644 --- a/Applications/FileIO/GocadIO/Property.cpp +++ b/Applications/FileIO/GocadIO/Property.cpp @@ -39,7 +39,7 @@ Property parseGocadPropertyMetaData(std::string& line, std::istream& in, // PROPERTY id "property_name" if (*tok_it != "PROPERTY") { - ERR("Expected PROPERTY keyword but '%s' found.", tok_it->c_str()); + ERR("Expected PROPERTY keyword but '{:s}' found.", tok_it->c_str()); throw std::runtime_error( "In parseGocadPropertyMetaData() expected PROPERTY keyword not " "found."); @@ -115,7 +115,7 @@ Property parseGocadPropertyMetaData(std::string& line, std::istream& in, tok_it++; if (*tok_it != "QUANTITY" && *tok_it != "ENUM") { - ERR("Expected keywords QUANTITY or ENUM, but found '%s'.", + ERR("Expected keywords QUANTITY or ENUM, but found '{:s}'.", tok_it->c_str()); throw std::runtime_error( "parseGocadPropertyMetaData(): Expected keywords QUANTITY " diff --git a/Applications/FileIO/GocadIO/Property.h b/Applications/FileIO/GocadIO/Property.h index c3c45ce37da77b09cf3a8303f0f97867e6f7d69f..ad65f327c61838ea074f3ba11e5d25a23f4a7428 100644 --- a/Applications/FileIO/GocadIO/Property.h +++ b/Applications/FileIO/GocadIO/Property.h @@ -12,7 +12,7 @@ #include <cstddef> #include <string> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" namespace FileIO { @@ -32,7 +32,7 @@ struct Property final { if (_property_id != std::stoul(id_string)) { - ERR("Expected property id %d but found %d.", + ERR("Expected property id {:d} but found {:d}.", _property_id, std::stoul(id_string)); return false; diff --git a/Applications/FileIO/GocadIO/Region.cpp b/Applications/FileIO/GocadIO/Region.cpp index 59631d28210e96c8a5e3dc4577ea0ee86875cabc..cbddb750865b972320d7c5ed620c8cc4b4da911a 100644 --- a/Applications/FileIO/GocadIO/Region.cpp +++ b/Applications/FileIO/GocadIO/Region.cpp @@ -7,12 +7,12 @@ * http://www.opengeosys.org/LICENSE.txt */ +#include "Region.h" + #include <iterator> #include <sstream> -#include <logog/include/logog.hpp> - -#include "Region.h" +#include "BaseLib/Logging.h" namespace FileIO { @@ -31,7 +31,7 @@ Region parseRegion(std::string const& line) // Check first word is REGION or MODEL_REGION. if (*it != std::string("REGION") && *it != std::string("MODEL_REGION")) { - ERR("Expected REGION or MODEL_REGION keyword but '%s' found.\n", + ERR("Expected REGION or MODEL_REGION keyword but '{:s}' found.\n", it->c_str()); throw std::runtime_error( "In parseRegion() expected REGION or MODEL_REGION keyword not " diff --git a/Applications/FileIO/Legacy/OGSIOVer4.cpp b/Applications/FileIO/Legacy/OGSIOVer4.cpp index da5e7a32276819cd4a6a2fcecfe45a8152db7f28..16022edd32a8e81e1da589b97ce9280f905fe88e 100644 --- a/Applications/FileIO/Legacy/OGSIOVer4.cpp +++ b/Applications/FileIO/Legacy/OGSIOVer4.cpp @@ -18,7 +18,7 @@ #include <limits> #include <sstream> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "Applications/FileIO/Legacy/createSurface.h" @@ -101,7 +101,10 @@ std::string readPoints(std::istream &in, std::vector<GeoLib::Point*>* pnt_vec, std::size_t id_pos (line.find("$ID")); if (id_pos != std::string::npos) - WARN("readPoints(): found tag $ID - please use tag $NAME for reading point names in point %d.", cnt); + WARN( + "readPoints(): found tag $ID - please use tag $NAME for " + "reading point names in point {:d}.", + cnt); cnt++; } getline(in, line); @@ -120,7 +123,8 @@ void readPolylinePointVector(const std::string &fname, // open file std::ifstream in((path + fname).c_str()); if (!in) { - WARN("readPolylinePointVector(): error opening stream from %s", fname.c_str()); + WARN("readPolylinePointVector(): error opening stream from {:s}", + fname.c_str()); errors.push_back ("[readPolylinePointVector] error opening stream from " + fname); return; } @@ -410,7 +414,10 @@ std::string readSurface(std::istream& in, } else { - WARN("readSurface(): cannot create surface %s from polyline %d since polyline is not closed.", name.c_str(), ply_id); + WARN( + "readSurface(): cannot create surface {:s} from polyline " + "{:d} since polyline is not closed.", + name.c_str(), ply_id); } } } @@ -481,10 +488,10 @@ bool readGLIFileV4(const std::string& fname, std::vector<std::string>& errors, std::string const& gmsh_path) { - INFO("GeoLib::readGLIFile(): open stream from file %s.", fname.c_str()); + INFO("GeoLib::readGLIFile(): open stream from file {:s}.", fname.c_str()); std::ifstream in(fname.c_str()); if (!in) { - WARN("GeoLib::readGLIFile(): could not open file %s.", fname.c_str()); + WARN("GeoLib::readGLIFile(): could not open file {:s}.", fname.c_str()); errors.push_back("[readGLIFileV4] error opening stream from " + fname); return false; } @@ -505,7 +512,7 @@ bool readGLIFileV4(const std::string& fname, auto pnt_vec = std::make_unique<std::vector<GeoLib::Point*>>(); INFO("GeoLib::readGLIFile(): read points from stream."); tag = readPoints(in, pnt_vec.get(), zero_based_idx, pnt_id_names_map.get()); - INFO("GeoLib::readGLIFile(): \t ok, %d points read.", pnt_vec->size()); + INFO("GeoLib::readGLIFile(): \t ok, {:d} points read.", pnt_vec->size()); unique_name = BaseLib::extractBaseName(fname); if (!pnt_vec->empty()) @@ -530,7 +537,8 @@ bool readGLIFileV4(const std::string& fname, tag = readPolylines(in, ply_vec.get(), *ply_names, *geo_pnt_vec, zero_based_idx, geo.getPointVecObj(unique_name)->getIDMap(), path, errors); - INFO("GeoLib::readGLIFile(): \t ok, %d polylines read.", ply_vec->size()); + INFO("GeoLib::readGLIFile(): \t ok, {:d} polylines read.", + ply_vec->size()); } else INFO("GeoLib::readGLIFile(): tag #POLYLINE not found."); @@ -560,7 +568,8 @@ bool readGLIFileV4(const std::string& fname, readSurfaces(in, *sfc_vec, *sfc_names, *geo.getPolylineVec(unique_name), ply_names_copy, point_vec, path, errors, geo, unique_name, gmsh_path); - INFO("GeoLib::readGLIFile(): \tok, %d surfaces read.", sfc_vec->size()); + INFO("GeoLib::readGLIFile(): \tok, {:d} surfaces read.", + sfc_vec->size()); } else { @@ -611,7 +620,8 @@ void writeGLIFileV4 (const std::string& fname, std::ofstream os (fname.c_str()); if (pnts) { const std::size_t n_pnts(pnts->size()); - INFO("GeoLib::writeGLIFileV4(): writing %d points to file %s.", n_pnts, fname.c_str()); + INFO("GeoLib::writeGLIFileV4(): writing {:d} points to file {:s}.", + n_pnts, fname.c_str()); os << "#POINTS" << "\n"; os.precision(std::numeric_limits<double>::digits10); for (std::size_t k(0); k < n_pnts; k++) { @@ -628,8 +638,8 @@ void writeGLIFileV4 (const std::string& fname, if (plys_vec) { const std::vector<GeoLib::Polyline*>* plys (plys_vec->getVector()); - INFO("GeoLib::writeGLIFileV4(): %d polylines to file %s.", - plys->size (), fname.c_str()); + INFO("GeoLib::writeGLIFileV4(): {:d} polylines to file {:s}.", + plys->size(), fname.c_str()); for (auto ply : *plys) { os << "#POLYLINE" << "\n"; @@ -691,7 +701,7 @@ void writeAllDataToGLIFileV4 (const std::string& fname, const GeoLib::GEOObjects } } - INFO("GeoLib::writeAllDataToGLIFileV4(): wrote %d points.", pnts_offset); + INFO("GeoLib::writeAllDataToGLIFileV4(): wrote {:d} points.", pnts_offset); // writing all stations std::vector<std::string> stn_names; diff --git a/Applications/FileIO/Legacy/createSurface.cpp b/Applications/FileIO/Legacy/createSurface.cpp index 69698a3cc65347632082a5220b1f3220f88c292a..ff5b4f858dbeaab535d20ccddf070987c5637645 100644 --- a/Applications/FileIO/Legacy/createSurface.cpp +++ b/Applications/FileIO/Legacy/createSurface.cpp @@ -12,7 +12,7 @@ #include <list> #include <memory> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "createSurface.h" #include "filesystem.h" @@ -95,8 +95,8 @@ bool createSurface(GeoLib::Polyline const& ply, int const gmsh_return_value = std::system(gmsh_command.c_str()); if (gmsh_return_value != 0) { - WARN("Call to '%s' returned non-zero value %d.", gmsh_command.c_str(), - gmsh_return_value); + WARN("Call to '{:s}' returned non-zero value {:d}.", + gmsh_command.c_str(), gmsh_return_value); } auto surface_mesh = FileIO::GMSH::readGMSHMesh(msh_file.string()); diff --git a/Applications/FileIO/PetrelInterface.cpp b/Applications/FileIO/PetrelInterface.cpp index 4fe4c66d0ce87c864c8a99241bb429012062b330..89007cf36bf450c61738395042bbf7a57752b0e3 100644 --- a/Applications/FileIO/PetrelInterface.cpp +++ b/Applications/FileIO/PetrelInterface.cpp @@ -19,7 +19,7 @@ #include <fstream> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/StringTools.h" #include "GeoLib/StationBorehole.h" @@ -45,8 +45,10 @@ PetrelInterface::PetrelInterface(std::list<std::string> &sfc_fnames, in.close(); } else - WARN("PetrelInterface::PetrelInterface(): \tCould not open file %s.", - it->c_str()); + WARN( + "PetrelInterface::PetrelInterface(): \tCould not open file " + "{:s}.", + it->c_str()); } for (std::list<std::string>::const_iterator it(well_path_fnames.begin()); it @@ -61,7 +63,10 @@ PetrelInterface::PetrelInterface(std::list<std::string> &sfc_fnames, in.close(); } else - WARN("PetrelInterface::PetrelInterface(): \tCould not open well path file %s.", it->c_str()); + WARN( + "PetrelInterface::PetrelInterface(): \tCould not open well " + "path file {:s}.", + it->c_str()); } // store data in GEOObject @@ -122,7 +127,7 @@ void PetrelInterface::readPetrelSurface(std::istream &in) } else WARN( "PetrelInterface::readPetrelSurface(): problem reading petrel " - "points from line\n'%s'.", + "points from line\n'{:s}'.", line.c_str()); } @@ -141,7 +146,8 @@ void PetrelInterface::readPetrelWellTrace(std::istream &in) std::list<std::string> str_list(BaseLib::splitString(line, ' ')); std::list<std::string>::const_iterator it(str_list.begin()); while (it != str_list.end()) { - INFO("PetrelInterface::readPetrelWellTrace(): well name: %s.", it->c_str()); + INFO("PetrelInterface::readPetrelWellTrace(): well name: {:s}.", + it->c_str()); ++it; } @@ -151,7 +157,10 @@ void PetrelInterface::readPetrelWellTrace(std::istream &in) str_list = BaseLib::splitString(line, ' '); it = str_list.begin(); while (it != str_list.end()) { - INFO("PetrelInterface::readPetrelWellTrace(): well head x coord: %s.", it->c_str()); + INFO( + "PetrelInterface::readPetrelWellTrace(): well head x coord: " + "{:s}.", + it->c_str()); ++it; } it = (str_list.end())--; @@ -165,7 +174,10 @@ void PetrelInterface::readPetrelWellTrace(std::istream &in) str_list = BaseLib::splitString(line, ' '); it = str_list.begin(); while (it != str_list.end()) { - INFO("PetrelInterface::readPetrelWellTrace(): well head y coord: %s.", it->c_str()); + INFO( + "PetrelInterface::readPetrelWellTrace(): well head y coord: " + "{:s}.", + it->c_str()); ++it; } it = (str_list.end())--; @@ -178,14 +190,15 @@ void PetrelInterface::readPetrelWellTrace(std::istream &in) str_list = BaseLib::splitString(line, ' '); it = str_list.begin(); while (it != str_list.end()) { - INFO("PetrelInterface::readPetrelWellTrace(): well kb entry: %s.", it->c_str()); + INFO("PetrelInterface::readPetrelWellTrace(): well kb entry: {:s}.", + it->c_str()); ++it; } it = (str_list.end())--; --it; double well_kb(strtod((*it).c_str(), &buf)); - INFO("PetrelInterface::readPetrelWellTrace(): %f, %f, %f.", + INFO("PetrelInterface::readPetrelWellTrace(): {:f}, {:f}, {:f}.", well_head_x, well_head_y, well_kb); @@ -218,7 +231,10 @@ void PetrelInterface::readPetrelWellTraceData(std::istream &in) std::list<std::string> str_list = BaseLib::splitString(line, ' '); auto it = str_list.begin(); while (it != str_list.end()) { - INFO("PetrelInterface::readPetrelWellTraceData(): column information: %s.", it->c_str()); + INFO( + "PetrelInterface::readPetrelWellTraceData(): column information: " + "{:s}.", + it->c_str()); ++it; } diff --git a/Applications/FileIO/SHPInterface.cpp b/Applications/FileIO/SHPInterface.cpp index 60ccc0f8ce106958ee608039142cf9b598eda7b5..0cccda5eeb41732b44a3459a7fd397d86b3da617 100644 --- a/Applications/FileIO/SHPInterface.cpp +++ b/Applications/FileIO/SHPInterface.cpp @@ -17,7 +17,7 @@ #include "SHPInterface.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "Applications/FileIO/Legacy/createSurface.h" @@ -294,7 +294,7 @@ bool SHPInterface::write2dMeshToSHP(const std::string &file_name, const MeshLib: } } DBFClose(hDBF); - INFO("Shape export of 2D mesh '%s' finished.", mesh.getName().c_str()); + INFO("Shape export of 2D mesh '{:s}' finished.", mesh.getName().c_str()); return true; } diff --git a/Applications/FileIO/SWMM/SWMMInterface.cpp b/Applications/FileIO/SWMM/SWMMInterface.cpp index 6fd25330cf6e0662bd052cd4e5b33ebe32017862..d5eb64e5368e89d14ffe124a6f2f5a51460e2e3c 100644 --- a/Applications/FileIO/SWMM/SWMMInterface.cpp +++ b/Applications/FileIO/SWMM/SWMMInterface.cpp @@ -129,14 +129,16 @@ bool SwmmInterface::isSwmmInputFile(std::string const& inp_file_name) { if (!boost::iequals(BaseLib::getFileExtension(inp_file_name), "inp")) { - ERR ("SWMMInterface: %s is not a SWMM input file.", inp_file_name.c_str()); + ERR("SWMMInterface: {:s} is not a SWMM input file.", + inp_file_name.c_str()); return false; } std::ifstream in ( inp_file_name.c_str() ); if (!in.is_open()) { - ERR ("SWMMInterface: Could not open input file %s.", inp_file_name.c_str()); + ERR("SWMMInterface: Could not open input file {:s}.", + inp_file_name.c_str()); return false; } @@ -159,8 +161,8 @@ bool SwmmInterface::isSwmmInputFile(std::string const& inp_file_name) header_found = true; else { - INFO ("SWMMInterface: input file type %s not recognised.", - BaseLib::getFileExtension(inp_file_name).c_str()); + INFO("SWMMInterface: input file type {:s} not recognised.", + BaseLib::getFileExtension(inp_file_name).c_str()); return false; } } @@ -289,7 +291,9 @@ bool SwmmInterface::addPointElevation(std::ifstream &in, auto const it = name_id_map.find(current_name); if (it == name_id_map.end()) { - ERR ("SwmmInterface::addPointElevation(): Name %s not found in coordinates map.", current_name.c_str()); + ERR("SwmmInterface::addPointElevation(): Name {:s} not found in " + "coordinates map.", + current_name.c_str()); return false; } std::size_t const id = it->second; @@ -323,7 +327,9 @@ bool SwmmInterface::readLinksAsPolylines(std::ifstream &in, auto const i_it = point_names.find(inlet); if (i_it == point_names.end()) { - ERR ("SwmmInterface::readLineElements(): Inlet node %s not found in coordinates map.", inlet.c_str()); + ERR("SwmmInterface::readLineElements(): Inlet node {:s} not found " + "in coordinates map.", + inlet.c_str()); return false; } @@ -331,7 +337,9 @@ bool SwmmInterface::readLinksAsPolylines(std::ifstream &in, auto const o_it = point_names.find(outlet); if (o_it == point_names.end()) { - ERR ("SwmmInterface::readLineElements(): Outlet node %s not found in coordinates map.", outlet.c_str()); + ERR("SwmmInterface::readLineElements(): Outlet node {:s} not found " + "in coordinates map.", + outlet.c_str()); return false; } GeoLib::Polyline* ply = new GeoLib::Polyline(points); @@ -363,7 +371,8 @@ bool SwmmInterface::convertSwmmInputToGeometry(std::string const& inp_file_name, std::ifstream in ( inp_file_name.c_str() ); if (!in.is_open()) { - ERR ("SWMMInterface: Could not open input file %s.", inp_file_name.c_str()); + ERR("SWMMInterface: Could not open input file {:s}.", + inp_file_name.c_str()); return false; } @@ -518,7 +527,9 @@ bool SwmmInterface::readNodeData(std::ifstream &in, std::vector<MeshLib::Node*> auto const it = name_id_map.find(current_name); if (it == name_id_map.end()) { - ERR ("SwmmInterface::readNodeData(): Name %s not found in coordinates map.", current_name.c_str()); + ERR("SwmmInterface::readNodeData(): Name {:s} not found in " + "coordinates map.", + current_name.c_str()); return false; } std::size_t const id = it->second; @@ -556,7 +567,9 @@ bool SwmmInterface::readLineElements(std::ifstream &in, std::vector<MeshLib::Ele auto const i_it = name_id_map.find(inlet); if (i_it == name_id_map.end()) { - ERR ("SwmmInterface::readLineElements(): Inlet node %s not found in coordinates map.", inlet.c_str()); + ERR("SwmmInterface::readLineElements(): Inlet node {:s} not found " + "in coordinates map.", + inlet.c_str()); return false; } @@ -564,7 +577,9 @@ bool SwmmInterface::readLineElements(std::ifstream &in, std::vector<MeshLib::Ele auto const o_it = name_id_map.find(outlet); if (o_it == name_id_map.end()) { - ERR ("SwmmInterface::readLineElements(): Outlet node %s not found in coordinates map.", outlet.c_str()); + ERR("SwmmInterface::readLineElements(): Outlet node {:s} not found " + "in coordinates map.", + outlet.c_str()); return false; } @@ -607,7 +622,7 @@ bool SwmmInterface::readSubcatchments(std::ifstream &in, std::map< std::string, } if (sc.rain_gauge == std::numeric_limits<std::size_t>::max()) { - ERR("Rain gauge for subcatchment '%s' not found.", + ERR("Rain gauge for subcatchment '{:s}' not found.", split_str[0].c_str()); return false; } @@ -615,7 +630,7 @@ bool SwmmInterface::readSubcatchments(std::ifstream &in, std::map< std::string, auto const it = name_id_map.find(split_str[2]); if (it == name_id_map.end()) { - ERR("Outlet node for subcatchment '%s' not found.", + ERR("Outlet node for subcatchment '{:s}' not found.", split_str[0].c_str()); return false; } @@ -642,7 +657,8 @@ bool SwmmInterface::readSwmmInputToLineMesh() std::ifstream in ( inp_file_name.c_str() ); if (!in.is_open()) { - ERR ("SWMMInterface: Could not open input file %s.", inp_file_name.c_str()); + ERR("SWMMInterface: Could not open input file {:s}.", + inp_file_name.c_str()); return false; } @@ -830,7 +846,8 @@ bool SwmmInterface::matchSubcatchmentsWithPolygons(std::vector<GeoLib::Polyline* } if (found == false) { - ERR("No match in subcatcments for outline '%s'.", names[i].c_str()); + ERR("No match in subcatcments for outline '{:s}'.", + names[i].c_str()); return false; } } @@ -965,13 +982,17 @@ bool SwmmInterface::addResultsToMesh(MeshLib::Mesh &mesh, SwmmObject const swmm_ if (swmm_type == SwmmObject::NODE && data.size() != mesh.getNumberOfNodes()) { - ERR ("Number of mesh nodes (%d) does not match length of array (%d).", mesh.getNumberOfNodes(), data.size()); + ERR("Number of mesh nodes ({:d}) does not match length of array " + "({:d}).", + mesh.getNumberOfNodes(), data.size()); return false; } if (swmm_type == SwmmObject::LINK && data.size() != mesh.getNumberOfElements()) { - ERR ("Number of mesh elements (%d) does not match length of array (%d).", mesh.getNumberOfElements(), data.size()); + ERR("Number of mesh elements ({:d}) does not match length of array " + "({:d}).", + mesh.getNumberOfElements(), data.size()); return false; } @@ -982,7 +1003,7 @@ bool SwmmInterface::addResultsToMesh(MeshLib::Mesh &mesh, SwmmObject const swmm_ MeshLib::getOrCreateMeshProperty<double>(mesh, vec_name, item_type, 1); if (!prop) { - ERR("Error fetching array '%s'.", vec_name.c_str()); + ERR("Error fetching array '{:s}'.", vec_name.c_str()); return false; } std::copy(data.cbegin(), data.cend(), prop->begin()); @@ -998,7 +1019,8 @@ std::vector<double> SwmmInterface::getArrayAtTimeStep(SwmmObject obj_type, std:: if (time_step >= SWMM_Nperiods) { - ERR ("Time step %d not available, file contains only %d periods.", time_step, SWMM_Nperiods); + ERR("Time step {:d} not available, file contains only {:d} periods.", + time_step, SWMM_Nperiods); return data; } @@ -1044,7 +1066,7 @@ std::vector<double> SwmmInterface::getArrayAtTimeStep(SwmmObject obj_type, std:: return data; } - INFO("Fetching '%s'-data for time step %d...", + INFO("Fetching '{:s}'-data for time step {:d}...", getArrayName(obj_type, var_idx, SWMM_Npolluts).c_str(), time_step); for (std::size_t i=0; i<n_objects; ++i) @@ -1201,7 +1223,7 @@ bool SwmmInterface::addRainGaugeTimeSeriesLocations(std::ifstream &in) for (auto const& stn : _rain_gauges) if (stn.second.empty()) - WARN("No associated time series found for rain gauge '%s'.", + WARN("No associated time series found for rain gauge '{:s}'.", stn.first.getName().c_str()); return true; } @@ -1311,8 +1333,8 @@ bool SwmmInterface::writeCsvForTimestep(std::string const& file_name, SwmmObject bool SwmmInterface::writeCsvForObject(std::string const& file_name, SwmmObject obj_type, std::size_t obj_idx) const { FileIO::CsvInterface csv; - INFO("Writing data for %s %d.", swmmObjectTypeToString(obj_type).c_str(), - obj_idx); + INFO("Writing data for {:s} {:d}.", + swmmObjectTypeToString(obj_type).c_str(), obj_idx); csv.addIndexVectorForWriting(getNumberOfTimeSteps()); std::size_t const n_params (getNumberOfParameters(obj_type)); for (std::size_t i=0; i<n_params; ++i) diff --git a/Applications/FileIO/SWMM/SWMMInterface.h b/Applications/FileIO/SWMM/SWMMInterface.h index 25a88aa325ab2f61ffd9f44e031b20f38ecfa08f..be93dc3de9af9cf813e4fd2e87ec73d84186993e 100644 --- a/Applications/FileIO/SWMM/SWMMInterface.h +++ b/Applications/FileIO/SWMM/SWMMInterface.h @@ -12,7 +12,7 @@ #include <string> #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoLib/Station.h" diff --git a/Applications/FileIO/TetGenInterface.cpp b/Applications/FileIO/TetGenInterface.cpp index c3ef06535a8b274184679d32f361ce30d71306fa..b79fd08ad6475a1b5e0bd3673d7f0f6c159a1177 100644 --- a/Applications/FileIO/TetGenInterface.cpp +++ b/Applications/FileIO/TetGenInterface.cpp @@ -18,7 +18,7 @@ #include <string> #include <fstream> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -42,7 +42,8 @@ bool TetGenInterface::readTetGenGeometry (std::string const& geo_fname, if (!poly_stream) { - ERR ("TetGenInterface::readTetGenGeometry() failed to open %s", geo_fname.c_str()); + ERR("TetGenInterface::readTetGenGeometry() failed to open {:s}", + geo_fname.c_str()); return false; } std::string ext (BaseLib::getFileExtension(geo_fname)); @@ -137,7 +138,7 @@ bool TetGenInterface::parseSmeshFacets(std::ifstream &input, getline (input, line); if (input.fail()) { - ERR("TetGenInterface::parseFacets(): Error reading facet %d.", k); + ERR("TetGenInterface::parseFacets(): Error reading facet {:d}.", k); return false; } @@ -178,7 +179,9 @@ bool TetGenInterface::parseSmeshFacets(std::ifstream &input, } else { - ERR("TetGenInterface::parseFacets(): Error reading points for facet %d.", k); + ERR("TetGenInterface::parseFacets(): Error reading points for " + "facet {:d}.", + k); return false; } ++k; @@ -196,7 +199,10 @@ bool TetGenInterface::parseSmeshFacets(std::ifstream &input, return true; } - ERR ("TetGenInterface::parseFacets(): Number of expected total triangles (%d) does not match number of found triangles (%d).", surfaces.size(), nTotalTriangles); + ERR("TetGenInterface::parseFacets(): Number of expected total triangles " + "({:d}) does not match number of found triangles ({:d}).", + surfaces.size(), + nTotalTriangles); return false; } @@ -209,9 +215,11 @@ MeshLib::Mesh* TetGenInterface::readTetGenMesh (std::string const& nodes_fname, if (!ins_nodes || !ins_ele) { if (!ins_nodes) - ERR ("TetGenInterface::readTetGenMesh failed to open %s", nodes_fname.c_str()); + ERR("TetGenInterface::readTetGenMesh failed to open {:s}", + nodes_fname.c_str()); if (!ins_ele) - ERR ("TetGenInterface::readTetGenMesh failed to open %s", ele_fname.c_str()); + ERR("TetGenInterface::readTetGenMesh failed to open {:s}", + ele_fname.c_str()); return nullptr; } @@ -332,7 +340,7 @@ bool TetGenInterface::parseNodes(std::ifstream &ins, std::getline(ins, line); if (ins.fail()) { - ERR("TetGenInterface::parseNodes(): Error reading node %d.", k); + ERR("TetGenInterface::parseNodes(): Error reading node {:d}.", k); return false; } @@ -353,7 +361,8 @@ bool TetGenInterface::parseNodes(std::ifstream &ins, _zero_based_idx = true; } } else { - ERR("TetGenInterface::parseNodes(): Error reading ID of node %d.", k); + ERR("TetGenInterface::parseNodes(): Error reading ID of node {:d}.", + k); return false; } // read coordinates @@ -371,7 +380,10 @@ bool TetGenInterface::parseNodes(std::ifstream &ins, } else { - ERR("TetGenInterface::parseNodes(): error reading coordinate %d of node %d.", i, k); + ERR("TetGenInterface::parseNodes(): error reading coordinate " + "{:d} of node {:d}.", + i, + k); return false; } } @@ -484,7 +496,9 @@ bool TetGenInterface::parseElements(std::ifstream& ins, getline (ins, line); if (ins.fail()) { - ERR("TetGenInterface::parseElements(): Error reading tetrahedron %d.", k); + ERR("TetGenInterface::parseElements(): Error reading tetrahedron " + "{:d}.", + k); return false; } @@ -500,7 +514,9 @@ bool TetGenInterface::parseElements(std::ifstream& ins, if (pos_beg == std::string::npos || pos_end == std::string::npos) { - ERR("TetGenInterface::parseElements(): Error reading id of tetrahedron %d.", k); + ERR("TetGenInterface::parseElements(): Error reading id of " + "tetrahedron {:d}.", + k); return false; } @@ -519,7 +535,10 @@ bool TetGenInterface::parseElements(std::ifstream& ins, } else { - ERR("TetGenInterface::parseElements(): Error reading node %d of tetrahedron %d.", i, k); + ERR("TetGenInterface::parseElements(): Error reading node {:d} " + "of tetrahedron {:d}.", + i, + k); return false; } } @@ -539,7 +558,9 @@ bool TetGenInterface::parseElements(std::ifstream& ins, } else { - ERR("TetGenInterface::parseElements(): Error reading region attribute of tetrahedron %d.", k); + ERR("TetGenInterface::parseElements(): Error reading region " + "attribute of tetrahedron {:d}.", + k); return false; } } @@ -566,11 +587,12 @@ bool TetGenInterface::writeTetGenSmesh(const std::string &file_name, if (points==nullptr) { - ERR ("Geometry %s not found.", geo_name.c_str()); + ERR("Geometry {:s} not found.", geo_name.c_str()); return false; } if (surfaces==nullptr) - WARN ("No surfaces found for geometry %s. Writing points only.", geo_name.c_str()); + WARN("No surfaces found for geometry {:s}. Writing points only.", + geo_name.c_str()); std::ofstream out( file_name.c_str(), std::ios::out ); out.precision(std::numeric_limits<double>::digits10); @@ -620,7 +642,11 @@ bool TetGenInterface::writeTetGenSmesh(const std::string &file_name, << " " << 10 * attribute_points[i].getID() << "\n"; } } - INFO ("TetGenInterface::writeTetGenSmesh() - %d points and %d surfaces successfully written.", nPoints, nSurfaces); + INFO( + "TetGenInterface::writeTetGenSmesh() - {:d} points and {:d} surfaces " + "successfully written.", + nPoints, + nSurfaces); out.close(); return true; } @@ -676,7 +702,11 @@ bool TetGenInterface::writeTetGenSmesh(const std::string &file_name, } } - INFO ("TetGenInterface::writeTetGenPoly() - %d points and %d surfaces successfully written.", nPoints, mesh.getNumberOfElements()); + INFO( + "TetGenInterface::writeTetGenPoly() - {:d} points and {:d} surfaces " + "successfully written.", + nPoints, + mesh.getNumberOfElements()); out.close(); return true; } diff --git a/Applications/FileIO/XmlIO/Qt/XmlLutReader.h b/Applications/FileIO/XmlIO/Qt/XmlLutReader.h index b861efffd1e1482d34d817cad7d8354ec4a0cc01..fbc0c90bd5ee6557914c6eed48e588d7dce271fd 100644 --- a/Applications/FileIO/XmlIO/Qt/XmlLutReader.h +++ b/Applications/FileIO/XmlIO/Qt/XmlLutReader.h @@ -17,7 +17,7 @@ #include <QFile> #include <QtXml/QDomDocument> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "Applications/DataHolderLib/ColorLookupTable.h" @@ -36,7 +36,8 @@ public: QFile file(fileName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { - ERR("XmlLutReader::readFromFile(): Can't open xml-file %s.", fileName.data()); + ERR("XmlLutReader::readFromFile(): Can't open xml-file {:s}.", + fileName.toStdString()); return false; } diff --git a/Applications/FileIO/XmlIO/Qt/XmlNumInterface.cpp b/Applications/FileIO/XmlIO/Qt/XmlNumInterface.cpp index b949719cb41685f5869108b147541d86f9ddcbea..e6e2776e8f27af18c35c6c049847a971fe67ef09 100644 --- a/Applications/FileIO/XmlIO/Qt/XmlNumInterface.cpp +++ b/Applications/FileIO/XmlIO/Qt/XmlNumInterface.cpp @@ -18,7 +18,7 @@ #include <QTextCodec> #include <QtXml/QDomDocument> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileFinder.h" @@ -50,7 +50,7 @@ int XmlNumInterface::readFile(QString const& fileName) if (num_node.nodeName().compare("Type") == 0) { std::string const solver_type = num_node.toElement().text().toStdString(); - INFO("Non-linear solver type: %s.", solver_type.c_str()); + INFO("Non-linear solver type: {:s}.", solver_type.c_str()); } else if (num_node.nodeName().compare("LinearSolver") == 0) { @@ -91,7 +91,8 @@ void XmlNumInterface::readLinearSolverConfiguration(QDomElement const& lin_root) } linear_solver_node = linear_solver_node.nextSiblingElement(); } - INFO("Using %s-library with solver %s and %s preconditioner.", library.c_str(), lin_solver_type.c_str(), precond_type.c_str()); + INFO("Using {:s}-library with solver {:s} and {:s} preconditioner.", + library.c_str(), lin_solver_type.c_str(), precond_type.c_str()); } @@ -114,7 +115,8 @@ void XmlNumInterface::readIterationScheme(QDomElement const& iteration_root) iteration_node = iteration_node.nextSiblingElement(); } - INFO("Doing a maximum of %d iterations at fixed step size of %f", max_iterations, fixed_step_size); + INFO("Doing a maximum of {:d} iterations at fixed step size of {:f}", + max_iterations, fixed_step_size); } void XmlNumInterface::readConvergenceCriteria(QDomElement const& convergence_root) @@ -136,7 +138,8 @@ void XmlNumInterface::readConvergenceCriteria(QDomElement const& convergence_roo conv_node = conv_node.nextSiblingElement(); } - INFO("Convergence reached when error below %f using %s.", error_threshold, error_method.c_str()); + INFO("Convergence reached when error below {:f} using {:s}.", + error_threshold, error_method.c_str()); } bool XmlNumInterface::write() diff --git a/Applications/FileIO/XmlIO/Qt/XmlPrjInterface.cpp b/Applications/FileIO/XmlIO/Qt/XmlPrjInterface.cpp index d2d73642c0b68a904bc4929c2aa163f9b10f92c6..3495d40d8482a67327c52c2ffc064aefe2c83ceb 100644 --- a/Applications/FileIO/XmlIO/Qt/XmlPrjInterface.cpp +++ b/Applications/FileIO/XmlIO/Qt/XmlPrjInterface.cpp @@ -16,7 +16,7 @@ #include <QFile> #include <QFileInfo> #include <QtXml/QDomDocument> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "Applications/DataExplorer/Base/OGSError.h" #include "Applications/DataHolderLib/FemCondition.h" @@ -119,14 +119,14 @@ int XmlPrjInterface::readFile(const QString& fileName) } if (meshes_node.nodeName() != "mesh") { - ERR("Expected an XML element node named 'mesh' got '%s'.", - meshes_node.nodeName().data()) + ERR("Expected an XML element node named 'mesh' got '{:s}'.", + meshes_node.nodeName().toStdString()); return 0; } if (meshes_node.childNodes().count() != 1) { ERR("Expected an XML element node named 'mesh' to contain " - "exactly one child node but it has %d children.", + "exactly one child node but it has {:d} children.", meshes_node.childNodes().count()); return 0; } @@ -389,7 +389,7 @@ bool XmlPrjInterface::write() geo_tag.appendChild(filename_text); } else - ERR("XmlGmlInterface::writeFile(): Error writing gml-file '%s'.", + ERR("XmlGmlInterface::writeFile(): Error writing gml-file '{:s}'.", name.c_str()); } @@ -412,7 +412,7 @@ bool XmlPrjInterface::write() stn_tag.appendChild(filename_text); } else - ERR("XmlStnInterface::writeFile(): Error writing stn-file '%s'.", + ERR("XmlStnInterface::writeFile(): Error writing stn-file '{:s}'.", name.c_str()); } diff --git a/Applications/InSituLib/Adaptor.cpp b/Applications/InSituLib/Adaptor.cpp index 5e0669d1ac114b8814244180bee27dd218567d8d..8e487cc9fcd7f06b7967f90e0ca2409a33db9281 100644 --- a/Applications/InSituLib/Adaptor.cpp +++ b/Applications/InSituLib/Adaptor.cpp @@ -40,7 +40,7 @@ void Initialize(BaseLib::ConfigTree const& scripts_config, { //! \ogs_file_param{prj__insitu__scripts__script__name} auto scriptName = script_config.getConfigParameter<std::string>("name"); - INFO("Initializing in-situ script: %s", scriptName.c_str()); + INFO("Initializing in-situ script: {:s}", scriptName.c_str()); std::stringstream ss; ss << path << scriptName; vtkNew<vtkCPPythonScriptPipeline> pipeline; @@ -73,8 +73,8 @@ void CoProcess(MeshLib::Mesh const& mesh, double const time, } if (Processor->RequestDataDescription(dataDescription.GetPointer()) != 0) { - INFO("Start InSitu process: timestep #%d (t=%g, last=%d)", timeStep, - time, lastTimeStep); + INFO("Start InSitu process: timestep #{:d} (t={:g}, last={:d})", + timeStep, time, lastTimeStep); vtkNew<MeshLib::VtkMappedMeshSource> vtkSource; vtkSource->SetMesh(&mesh); vtkSource->Update(); diff --git a/Applications/Utils/FileConverter/ConvertSHPToGLI.cpp b/Applications/Utils/FileConverter/ConvertSHPToGLI.cpp index b639f432ac6265ec59df1e108da32e5f728a4409..620b56983dfbec2c100b3e2fc589144d472ab24e 100644 --- a/Applications/Utils/FileConverter/ConvertSHPToGLI.cpp +++ b/Applications/Utils/FileConverter/ConvertSHPToGLI.cpp @@ -21,7 +21,6 @@ // ShapeLib #include <shapefil.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "GeoLib/GEOObjects.h" #include "GeoLib/IO/XmlIO/Qt/XmlGmlInterface.h" @@ -39,7 +38,7 @@ void convertPoints (DBFHandle dbf_handle, bool station) { int n_records (DBFGetRecordCount (dbf_handle)); - INFO("Reading %d records.", n_records); + INFO("Reading {:d} records.", n_records); auto points = std::make_unique<std::vector<GeoLib::Point*>>(); points->reserve (n_records); @@ -147,13 +146,11 @@ void printFieldInformationTable(DBFHandle const& dbf_handle, std::size_t n_field } delete[] field_name; out << "************************************************" << std::endl; - INFO("%s", out.str().c_str()); + INFO("{:s}", out.str().c_str()); } int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converts points contained in shape file\n\n" "OpenGeoSys-6 software, version " + @@ -183,17 +180,17 @@ int main (int argc, char* argv[]) nullptr /*padfMinBound*/, nullptr /*padfMinBound*/); if ((shape_type - 1) % 10 == 0) - INFO("Shape file contains %d points.", number_of_elements); + INFO("Shape file contains {:d} points.", number_of_elements); if ( ((shape_type - 3) % 10 == 0 || (shape_type - 5) % 10 == 0)) { - ERR("Shape file contains %d polylines.", number_of_elements); + ERR("Shape file contains {:d} polylines.", number_of_elements); ERR("This programm only handles only files containing points."); SHPClose(hSHP); return EXIT_SUCCESS; } SHPClose(hSHP); } else { - ERR("Could not open shapefile %s.", fname.c_str()); + ERR("Could not open shapefile {:s}.", fname.c_str()); } DBFHandle dbf_handle = DBFOpen(fname.c_str(),"rb"); @@ -253,7 +250,7 @@ int main (int argc, char* argv[]) fname += ".gml"; } - INFO("Writing to %s.", fname.c_str()); + INFO("Writing to {:s}.", fname.c_str()); convertPoints(dbf_handle, fname, x_id, diff --git a/Applications/Utils/FileConverter/FEFLOW2OGS.cpp b/Applications/Utils/FileConverter/FEFLOW2OGS.cpp index d9bc214fe493074c8da969ddc555d9aa4fc73e0c..d8005ccc8329ed625ea29b4a4a4c300b98bcd1fc 100644 --- a/Applications/Utils/FileConverter/FEFLOW2OGS.cpp +++ b/Applications/Utils/FileConverter/FEFLOW2OGS.cpp @@ -13,8 +13,6 @@ // ThirdParty #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - // BaseLib #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" @@ -33,8 +31,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converting a mesh in FEFLOW file format (ASCII, version 5.4) to a vtk " "unstructured grid file (new OGS file format) or to the old OGS file " @@ -67,7 +63,7 @@ int main (int argc, char* argv[]) cmd.parse(argc, argv); // *** read mesh - INFO("Reading %s.", feflow_mesh_arg.getValue().c_str()); + INFO("Reading {:s}.", feflow_mesh_arg.getValue().c_str()); #ifndef WIN32 BaseLib::MemWatch mem_watch; unsigned long mem_without_mesh (mem_watch.getVirtMemUsage()); @@ -79,18 +75,21 @@ int main (int argc, char* argv[]) feflowIO.readFEFLOWFile(feflow_mesh_arg.getValue())); if (mesh == nullptr) { - INFO("Could not read mesh from %s.", feflow_mesh_arg.getValue().c_str()); + INFO("Could not read mesh from {:s}.", + feflow_mesh_arg.getValue().c_str()); return EXIT_FAILURE; } #ifndef WIN32 unsigned long mem_with_mesh (mem_watch.getVirtMemUsage()); - INFO("Mem for mesh: %i MB", (mem_with_mesh - mem_without_mesh)/(1024*1024)); + INFO("Mem for mesh: {:i} MB", + (mem_with_mesh - mem_without_mesh) / (1024 * 1024)); #endif - INFO("Time for reading: %f seconds.", run_time.elapsed()); - INFO("Read %d nodes and %d elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); + INFO("Time for reading: {:f} seconds.", run_time.elapsed()); + INFO("Read {:d} nodes and {:d} elements.", mesh->getNumberOfNodes(), + mesh->getNumberOfElements()); std::string ogs_mesh_fname(ogs_mesh_arg.getValue()); - INFO("Writing %s.", ogs_mesh_fname.c_str()); + INFO("Writing {:s}.", ogs_mesh_fname.c_str()); MeshLib::IO::writeMeshToFile(*mesh, ogs_mesh_fname); INFO("\tDone."); return EXIT_SUCCESS; diff --git a/Applications/Utils/FileConverter/GMSH2OGS.cpp b/Applications/Utils/FileConverter/GMSH2OGS.cpp index 3dd943250bb4e4837773d2ad430cdd57cc353d4c..f1bbf5e256ba021cda272d97970175c7900dcfee 100644 --- a/Applications/Utils/FileConverter/GMSH2OGS.cpp +++ b/Applications/Utils/FileConverter/GMSH2OGS.cpp @@ -19,8 +19,6 @@ // ThirdParty #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - // BaseLib #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" @@ -40,8 +38,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converting meshes in gmsh file format (ASCII, version 2.2) to a vtk " "unstructured grid file (new OGS file format) or to the old OGS file " @@ -81,7 +77,7 @@ int main (int argc, char* argv[]) cmd.parse(argc, argv); // *** read mesh - INFO("Reading %s.", gmsh_mesh_arg.getValue().c_str()); + INFO("Reading {:s}.", gmsh_mesh_arg.getValue().c_str()); #ifndef WIN32 BaseLib::MemWatch mem_watch; unsigned long mem_without_mesh (mem_watch.getVirtMemUsage()); @@ -92,16 +88,18 @@ int main (int argc, char* argv[]) FileIO::GMSH::readGMSHMesh(gmsh_mesh_arg.getValue())); if (mesh == nullptr) { - INFO("Could not read mesh from %s.", gmsh_mesh_arg.getValue().c_str()); + INFO("Could not read mesh from {:s}.", + gmsh_mesh_arg.getValue().c_str()); return -1; } #ifndef WIN32 - INFO("Mem for mesh: %i MB", + INFO("Mem for mesh: {:i} MB", (mem_watch.getVirtMemUsage() - mem_without_mesh) / (1024 * 1024)); #endif - INFO("Time for reading: %f seconds.", run_time.elapsed()); - INFO("Read %d nodes and %d elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); + INFO("Time for reading: {:f} seconds.", run_time.elapsed()); + INFO("Read {:d} nodes and {:d} elements.", mesh->getNumberOfNodes(), + mesh->getNumberOfElements()); // *** remove line elements on request if (exclude_lines_arg.getValue()) { @@ -109,7 +107,8 @@ int main (int argc, char* argv[]) ex.searchByElementType(MeshLib::MeshElemType::LINE); auto m = MeshLib::removeElements(*mesh, ex.getSearchedElementIDs(), mesh->getName()+"-withoutLines"); if (m != nullptr) { - INFO("Removed %d lines.", mesh->getNumberOfElements() - m->getNumberOfElements()); + INFO("Removed {:d} lines.", + mesh->getNumberOfElements() - m->getNumberOfElements()); std::swap(m, mesh); delete m; } else { @@ -129,11 +128,14 @@ int main (int argc, char* argv[]) auto const minPt(aabb.getMinPoint()); auto const maxPt(aabb.getMaxPoint()); INFO("Node coordinates:"); - INFO("\tx [%g, %g] (extent %g)", minPt[0], maxPt[0], maxPt[0] - minPt[0]); - INFO("\ty [%g, %g] (extent %g)", minPt[1], maxPt[1], maxPt[1] - minPt[1]); - INFO("\tz [%g, %g] (extent %g)", minPt[2], maxPt[2], maxPt[2] - minPt[2]); - - INFO("Edge length: [%g, %g]", mesh->getMinEdgeLength(), + INFO("\tx [{:g}, {:g}] (extent {:g})", minPt[0], maxPt[0], + maxPt[0] - minPt[0]); + INFO("\ty [{:g}, {:g}] (extent {:g})", minPt[1], maxPt[1], + maxPt[1] - minPt[1]); + INFO("\tz [{:g}, {:g}] (extent {:g})", minPt[2], maxPt[2], + maxPt[2] - minPt[2]); + + INFO("Edge length: [{:g}, {:g}]", mesh->getMinEdgeLength(), mesh->getMaxEdgeLength()); // Element information diff --git a/Applications/Utils/FileConverter/GocadSGridReader.cpp b/Applications/Utils/FileConverter/GocadSGridReader.cpp index 340d200841b716955392fbba29618f30cff79d4b..5c8197056b5abbd008b7d1069a1cb7a6592fd8d8 100644 --- a/Applications/Utils/FileConverter/GocadSGridReader.cpp +++ b/Applications/Utils/FileConverter/GocadSGridReader.cpp @@ -7,18 +7,18 @@ * http://www.opengeosys.org/LICENSE.txt */ +#include "Applications/FileIO/GocadIO/GocadSGridReader.h" + +#include <spdlog/spdlog.h> +#include <tclap/CmdLine.h> + #include <fstream> #include <sstream> #include <string> -#include <logog/include/logog.hpp> -#include <tclap/CmdLine.h> - -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/GocadIO/GenerateFaceSetMeshes.h" -#include "Applications/FileIO/GocadIO/GocadSGridReader.h" -#include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" +#include "InfoLib/GitInfo.h" #include "MeshLib/Elements/Element.h" #include "MeshLib/IO/writeMeshToFile.h" #include "MeshLib/Mesh.h" @@ -26,8 +26,6 @@ int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Reads a Gocad stratigraphic grid file (file ending sg) and writes the " "data in the vtk unstructured grid file format. The documentation is " @@ -77,7 +75,7 @@ int main(int argc, char* argv[]) auto property_names(mesh->getProperties().getPropertyVectorNames()); for (auto const& property_name : property_names) { - INFO("- %s (#values: %d)", property_name.c_str(), + INFO("- {:s} (#values: {:d})", property_name.c_str(), mesh->getProperties() .getPropertyVector<double>(property_name) ->size()); @@ -88,10 +86,11 @@ int main(int argc, char* argv[]) mesh->getProperties() .getPropertyVector<double>(property_name) ->cend())); - INFO("\tvalues in range [%e, %e].", *(bounds.first), *(bounds.second)); + INFO("\tvalues in range [{:e}, {:e}].", *(bounds.first), + *(bounds.second)); } - INFO("Writing mesh to '%s'.", mesh_output_arg.getValue().c_str()); + INFO("Writing mesh to '{:s}'.", mesh_output_arg.getValue().c_str()); MeshLib::IO::writeMeshToFile(*mesh, mesh_output_arg.getValue()); return 0; diff --git a/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp b/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp index f86f6804872246d1d53b8b6f96d81d63668d147b..e402dbfd5dc48ead7241f72c21e798f9502006f1 100644 --- a/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp +++ b/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp @@ -12,7 +12,6 @@ #include "InfoLib/GitInfo.h" #include "MeshLib/Mesh.h" #include "MeshLib/IO/VtkIO/VtuInterface.h" -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/GocadIO/GocadAsciiReader.h" std::string getDelim(std::string const& str) @@ -24,8 +23,6 @@ std::string getDelim(std::string const& str) int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Reads Gocad ascii files (*.ts, *.pl, *.mx) and writes TSurf- and PLine" "data into one or more VTU unstructured grids.\n\n" @@ -86,7 +83,7 @@ int main(int argc, char* argv[]) ERR("Error reading file."); return 1; } - INFO("%d meshes found.", meshes.size()); + INFO("{:d} meshes found.", meshes.size()); std::string const dir = output_arg.getValue(); bool const write_binary = write_binary_arg.getValue(); std::string const delim = getDelim(dir); @@ -96,7 +93,7 @@ int main(int argc, char* argv[]) { continue; } - INFO("Writing mesh \"%s\"", mesh->getName().c_str()); + INFO("Writing mesh \"{:s}\"", mesh->getName().c_str()); int data_mode = (write_binary) ? 2 : 0; bool compressed = (write_binary); MeshLib::IO::VtuInterface vtu(mesh.get(), data_mode, compressed); diff --git a/Applications/Utils/FileConverter/Mesh2Raster.cpp b/Applications/Utils/FileConverter/Mesh2Raster.cpp index dfc04a8e0104df0e77dcaa2abb4d46ee092ea6f6..d8506ed5c9aba29be8619735d959595aa88d72ae 100644 --- a/Applications/Utils/FileConverter/Mesh2Raster.cpp +++ b/Applications/Utils/FileConverter/Mesh2Raster.cpp @@ -8,24 +8,22 @@ * http://www.opengeosys.org/LICENSE.txt */ +#include <tclap/CmdLine.h> + +#include <fstream> #include <memory> #include <string> -#include <tclap/CmdLine.h> - -#include "Applications/ApplicationsLib/LogogSetup.h" -#include "InfoLib/GitInfo.h" #include "GeoLib/AABB.h" +#include "InfoLib/GitInfo.h" #include "MeshLib/IO/readMeshFromFile.h" #include "MeshLib/Mesh.h" +#include "MeshLib/MeshEditing/ProjectPointOnMesh.h" #include "MeshLib/MeshSearch/MeshElementGrid.h" #include "MeshLib/Node.h" -#include "MeshLib/MeshEditing/ProjectPointOnMesh.h" int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Mesh to raster converter.\n" "Rasterises a 2D mesh, pixel values are set to the elevation of a " @@ -67,7 +65,7 @@ int main(int argc, char* argv[]) double const cellsize = (cell_arg.isSet()) ? cell_arg.getValue() : mesh->getMinEdgeLength(); - INFO("Cellsize set to %f", cellsize); + INFO("Cellsize set to {:f}", cellsize); std::vector<MeshLib::Node*> const& nodes_vec(mesh->getNodes()); GeoLib::AABB const bounding_box(nodes_vec.begin(), nodes_vec.end()); @@ -88,7 +86,7 @@ int main(int argc, char* argv[]) out << std::fixed << "cellsize " << cellsize << "\n"; out << "NODATA_value " << "-9999\n"; - INFO("Writing raster with %d x %d pixels.", n_cols, n_rows); + INFO("Writing raster with {:d} x {:d} pixels.", n_cols, n_rows); MeshLib::MeshElementGrid const grid(*mesh); double const max_edge(mesh->getMaxEdgeLength() + cellsize); @@ -153,6 +151,6 @@ int main(int argc, char* argv[]) out << "\n"; } out.close(); - INFO("Result written to %s", output_arg.getValue().c_str()); + INFO("Result written to {:s}", output_arg.getValue().c_str()); return 0; } diff --git a/Applications/Utils/FileConverter/Mesh2Shape.cpp b/Applications/Utils/FileConverter/Mesh2Shape.cpp index 199a61d6f42923735f17d6436646f290bf66a7a8..a7b268dc6596618222088c8414cf2882ddf9106a 100644 --- a/Applications/Utils/FileConverter/Mesh2Shape.cpp +++ b/Applications/Utils/FileConverter/Mesh2Shape.cpp @@ -9,7 +9,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/SHPInterface.h" #include "InfoLib/GitInfo.h" #include "MeshLib/IO/readMeshFromFile.h" @@ -17,8 +16,6 @@ int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converts 2D mesh file into shapfile such that each element is " "represented by a polygon. Cell attributes are transferred onto shape " diff --git a/Applications/Utils/FileConverter/NetCdfConverter.cpp b/Applications/Utils/FileConverter/NetCdfConverter.cpp index 5f5995f49fad27d6f4497a7d0a93976df368e1c4..9f7ae02b9af1522b92331314d52f81b0046bec14 100644 --- a/Applications/Utils/FileConverter/NetCdfConverter.cpp +++ b/Applications/Utils/FileConverter/NetCdfConverter.cpp @@ -8,28 +8,25 @@ */ // STL +#include <tclap/CmdLine.h> + #include <cctype> #include <iostream> #include <limits> #include <memory> +#include <netcdf> #include <numeric> #include <sstream> #include <string> #include <utility> -#include <tclap/CmdLine.h> - -#include "Applications/ApplicationsLib/LogogSetup.h" - -#include <netcdf> - #include "BaseLib/FileTools.h" -#include "BaseLib/LogogSimpleFormatter.h" -#include "InfoLib/GitInfo.h" +#include "BaseLib/Logging.h" #include "GeoLib/Raster.h" +#include "InfoLib/GitInfo.h" +#include "MeshLib/IO/VtkIO/VtuInterface.h" #include "MeshLib/Mesh.h" #include "MeshLib/MeshGenerators/RasterToMesh.h" -#include "MeshLib/IO/VtkIO/VtuInterface.h" using namespace netCDF; @@ -50,7 +47,7 @@ static void showErrorMessage(std::size_t const error_id, } else if (error_id == 1) { - ERR("Index not valid. Valid indices are in [0,%d].", max); + ERR("Index not valid. Valid indices are in [0,{:d}].", max); } else if (error_id == 2) { @@ -363,9 +360,11 @@ static double getResolution(NcFile const& dataset, NcVar const& var) auto const bounds = (dim_var.isNull()) ? getDimLength(var, dim_idx) : getBoundaries(dim_var); std::size_t const dim_size = var.getDim(dim_idx).getSize(); - std::string const err_msg("Dimension \"" + var.getDim(dim_idx).getName() + - "\" has size 0. Aborting..."); - if (dim_size == 0) return OGS_FATAL(err_msg.c_str()); + if (dim_size == 0) + { + OGS_FATAL("Dimension '{:s}' has size 0. Aborting...", + var.getDim(dim_idx).getName()); + } return std::fabs(bounds.second - bounds.first) / static_cast<double>(dim_size); } @@ -447,7 +446,8 @@ static bool assignDimParams(NcVar const& var, if (arg_dim_time.getValue() >= n_dims || arg_dim1.getValue() >= n_dims || arg_dim2.getValue() >= n_dims || arg_dim3.getValue() >= n_dims) { - ERR("Maximum allowed dimension for variable \"%s\" is %d.", var.getName().c_str(), n_dims-1); + ERR("Maximum allowed dimension for variable \"{:s}\" is {:d}.", + var.getName().c_str(), n_dims - 1); return false; } @@ -575,8 +575,6 @@ static bool convert(NcFile const& dataset, NcVar const& var, int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converts NetCDF data into mesh file(s).\n\n " "OpenGeoSys-6 software, version " + @@ -676,7 +674,8 @@ int main(int argc, char* argv[]) NcVar const& var = dataset.getVar(var_name); if (var.isNull()) { - ERR("Variable \"%s\" not found in file.", arg_varname.getValue().c_str()); + ERR("Variable \"{:s}\" not found in file.", + arg_varname.getValue().c_str()); return EXIT_FAILURE; } diff --git a/Applications/Utils/FileConverter/OGS2VTK.cpp b/Applications/Utils/FileConverter/OGS2VTK.cpp index 4554f99aaa12514525a64a5be499acc5b009c69e..8a9615f67547123008bf3977619e6b6baad1701e 100644 --- a/Applications/Utils/FileConverter/OGS2VTK.cpp +++ b/Applications/Utils/FileConverter/OGS2VTK.cpp @@ -16,7 +16,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "MeshLib/IO/VtkIO/VtuInterface.h" #include "MeshLib/IO/readMeshFromFile.h" @@ -24,8 +23,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converts OGS mesh into VTK mesh.\n\n" "OpenGeoSys-6 software, version " + @@ -58,7 +55,7 @@ int main (int argc, char* argv[]) { return EXIT_FAILURE; } - INFO("Mesh read: %d nodes, %d elements.", mesh->getNumberOfNodes(), + INFO("Mesh read: {:d} nodes, {:d} elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); auto const data_mode = diff --git a/Applications/Utils/FileConverter/TIN2VTK.cpp b/Applications/Utils/FileConverter/TIN2VTK.cpp index 09d7a153705e79f1894892f16f3540e5b74f2533..e43dc754ca150958003ced4b9d43e682b0f1f7f0 100644 --- a/Applications/Utils/FileConverter/TIN2VTK.cpp +++ b/Applications/Utils/FileConverter/TIN2VTK.cpp @@ -13,8 +13,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - // BaseLib #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" @@ -34,8 +32,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converts TIN file into VTU file.\n\n" "OpenGeoSys-6 software, version " + @@ -64,12 +60,13 @@ int main (int argc, char* argv[]) { return EXIT_FAILURE; } - INFO("TIN read: %d points, %d triangles", point_vec.size(), + INFO("TIN read: {:d} points, {:d} triangles", point_vec.size(), sfc->getNumberOfTriangles()); INFO("converting to mesh data"); std::unique_ptr<MeshLib::Mesh> mesh(MeshLib::convertSurfaceToMesh(*sfc, BaseLib::extractBaseNameWithoutExtension(tinFileName), std::numeric_limits<double>::epsilon())); - INFO("Mesh created: %d nodes, %d elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); + INFO("Mesh created: {:d} nodes, {:d} elements.", mesh->getNumberOfNodes(), + mesh->getNumberOfElements()); INFO("Write it into VTU"); MeshLib::IO::VtuInterface writer(mesh.get()); diff --git a/Applications/Utils/FileConverter/TecPlotTools.cpp b/Applications/Utils/FileConverter/TecPlotTools.cpp index c3f91655202571ba8244f61c8f63df053e40bbf3..2ac3c338a707e82fcd18ea9c0093acb6cb7599c7 100644 --- a/Applications/Utils/FileConverter/TecPlotTools.cpp +++ b/Applications/Utils/FileConverter/TecPlotTools.cpp @@ -14,8 +14,6 @@ #include <tclap/CmdLine.h> -#include <Applications/ApplicationsLib/LogogSetup.h> - #include "InfoLib/GitInfo.h" #include "BaseLib/StringTools.h" @@ -112,7 +110,8 @@ bool dataCountError(std::string const& name, { if (current != total) { - ERR("Data rows found do not fit specified dimensions for section '%s'.", + ERR("Data rows found do not fit specified dimensions for section " + "'{:s}'.", name.c_str()); return true; } @@ -163,7 +162,7 @@ void writeTecPlotSection(std::ofstream& out, val_count = 0; val_total = 0; - INFO("Writing section #%i", write_count); + INFO("Writing section #{:i}", write_count); out.close(); out.open(base_name + std::to_string(write_count++) + extension); } @@ -208,7 +207,7 @@ int writeDataToMesh(std::string const& file_name, vec_names[i], MeshLib::MeshItemType::Cell, 1); if (!prop) { - ERR("Error creating array '%s'.", vec_names[i].c_str()); + ERR("Error creating array '{:s}'.", vec_names[i].c_str()); return -5; } prop->reserve(scalars[i].size()); @@ -219,7 +218,7 @@ int writeDataToMesh(std::string const& file_name, std::string const base_name(file_name.substr(0, delim_pos + 1)); std::string const extension(file_name.substr(delim_pos, std::string::npos)); - INFO("Writing section #%i", write_count); + INFO("Writing section #{:i}", write_count); MeshLib::IO::VtuInterface vtu(mesh.get()); vtu.writeToFile(base_name + std::to_string(write_count++) + extension); return 0; @@ -292,7 +291,7 @@ int splitFile(std::ifstream& in, std::string file_name) { return -3; } - INFO("Writing time step #%i", write_count); + INFO("Writing time step #{:i}", write_count); out.close(); INFO("Finished split."); return 0; @@ -408,8 +407,6 @@ int convertFile(std::ifstream& in, std::string file_name) */ int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "TecPlot Parser\n\n" "OpenGeoSys-6 software, version " + @@ -447,7 +444,7 @@ int main(int argc, char* argv[]) std::ifstream in(input_arg.getValue().c_str()); if (!in.is_open()) { - ERR("Could not open file %s.", input_arg.getValue().c_str()); + ERR("Could not open file {:s}.", input_arg.getValue().c_str()); return -2; } diff --git a/Applications/Utils/FileConverter/VTK2OGS.cpp b/Applications/Utils/FileConverter/VTK2OGS.cpp index 53766376e7ede923a094e6852283fd674c672504..9f3746bb484716e0252b64dfe56b14ae65814f18 100644 --- a/Applications/Utils/FileConverter/VTK2OGS.cpp +++ b/Applications/Utils/FileConverter/VTK2OGS.cpp @@ -16,7 +16,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "MeshLib/IO/Legacy/MeshIO.h" #include "MeshLib/IO/VtkIO/VtuInterface.h" @@ -24,8 +23,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converts VTK mesh into OGS mesh.\n\n" "OpenGeoSys-6 software, version " + @@ -45,7 +42,8 @@ int main (int argc, char* argv[]) cmd.parse(argc, argv); MeshLib::Mesh* mesh (MeshLib::IO::VtuInterface::readVTUFile(mesh_in.getValue())); - INFO("Mesh read: %d nodes, %d elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); + INFO("Mesh read: {:d} nodes, {:d} elements.", mesh->getNumberOfNodes(), + mesh->getNumberOfElements()); MeshLib::IO::Legacy::MeshIO meshIO; meshIO.setMesh(mesh); diff --git a/Applications/Utils/FileConverter/VTK2TIN.cpp b/Applications/Utils/FileConverter/VTK2TIN.cpp index 31e8866342e988f438f6dca5fc0004fd35dec600..621558d2ca9da5c60e064483e976587670d80286 100644 --- a/Applications/Utils/FileConverter/VTK2TIN.cpp +++ b/Applications/Utils/FileConverter/VTK2TIN.cpp @@ -13,11 +13,9 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - // BaseLib #include "InfoLib/GitInfo.h" -#include "BaseLib/LogogSimpleFormatter.h" +#include "BaseLib/Logging.h" // GeoLib #include "GeoLib/GEOObjects.h" @@ -35,8 +33,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converts VTK mesh into TIN file.\n\n" "OpenGeoSys-6 software, version " + @@ -56,7 +52,8 @@ int main (int argc, char* argv[]) cmd.parse(argc, argv); std::unique_ptr<MeshLib::Mesh> mesh (MeshLib::IO::VtuInterface::readVTUFile(mesh_in.getValue())); - INFO("Mesh read: %d nodes, %d elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); + INFO("Mesh read: {:d} nodes, {:d} elements.", mesh->getNumberOfNodes(), + mesh->getNumberOfElements()); INFO("Converting the mesh to TIN"); GeoLib::GEOObjects geo_objects; diff --git a/Applications/Utils/FileConverter/convertGEO.cpp b/Applications/Utils/FileConverter/convertGEO.cpp index d56c25d8905edd7f43a359c0d95e15d8ad887367..0c59d694193eb9b496f28830db9807b48f172aeb 100644 --- a/Applications/Utils/FileConverter/convertGEO.cpp +++ b/Applications/Utils/FileConverter/convertGEO.cpp @@ -14,7 +14,6 @@ #include "InfoLib/GitInfo.h" -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/readGeometryFromFile.h" #include "Applications/FileIO/writeGeometryToFile.h" #include "GeoLib/GEOObjects.h" @@ -22,8 +21,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converts OGS geometry file into another file format. " "Currently *.gml (OGS6 XML-based format) and *.gli (OGS5 format) " diff --git a/Applications/Utils/FileConverter/generateMatPropsFromMatID.cpp b/Applications/Utils/FileConverter/generateMatPropsFromMatID.cpp index 103fed5fcab3201c4e320ab42f1620334d8364fe..866430351beeb76d56bec40901561b5a2ae458c8 100644 --- a/Applications/Utils/FileConverter/generateMatPropsFromMatID.cpp +++ b/Applications/Utils/FileConverter/generateMatPropsFromMatID.cpp @@ -16,8 +16,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" @@ -29,8 +27,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Creates a new file for material properties and sets the material ids " "in the msh-file to 0\n\n" @@ -57,7 +53,7 @@ int main (int argc, char* argv[]) if (!mesh) { - INFO("Could not read mesh from file '%s'.", + INFO("Could not read mesh from file '{:s}'.", mesh_arg.getValue().c_str()); return EXIT_FAILURE; } @@ -86,17 +82,17 @@ int main (int argc, char* argv[]) } else { - ERR("Could not create property '%s' file.", new_matname.c_str()); + ERR("Could not create property '{:s}' file.", new_matname.c_str()); return EXIT_FAILURE; } mesh->getProperties().removePropertyVector("MaterialIDs"); std::string const new_mshname(name + "_new.vtu"); - INFO("Writing mesh to file '%s'.", new_mshname.c_str()); + INFO("Writing mesh to file '{:s}'.", new_mshname.c_str()); MeshLib::IO::writeMeshToFile(*mesh, new_mshname); - INFO("New files '%s' and '%s' written.", new_mshname.c_str(), + INFO("New files '{:s}' and '{:s}' written.", new_mshname.c_str(), new_matname.c_str()); return EXIT_SUCCESS; diff --git a/Applications/Utils/GeoTools/MoveGeometry.cpp b/Applications/Utils/GeoTools/MoveGeometry.cpp index b393404865eb3e04cb769af35ae5da095a89997d..dadedf8a0eb1f32a1898465afadee58eb4ed5790 100644 --- a/Applications/Utils/GeoTools/MoveGeometry.cpp +++ b/Applications/Utils/GeoTools/MoveGeometry.cpp @@ -14,7 +14,6 @@ // ThirdParty #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "GeoLib/GEOObjects.h" #include "GeoLib/IO/XmlIO/Qt/XmlGmlInterface.h" @@ -26,8 +25,6 @@ int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Moves the points of a geometry by a given displacement vector\n\n" "OpenGeoSys-6 software, version " + @@ -64,8 +61,8 @@ int main(int argc, char *argv[]) } catch (std::runtime_error const& err) { - ERR("Failed to read file `%s'.", geo_input_arg.getValue().c_str()); - ERR("%s", err.what()); + ERR("Failed to read file `{:s}'.", geo_input_arg.getValue().c_str()); + ERR("{:s}", err.what()); return EXIT_FAILURE; } diff --git a/Applications/Utils/GeoTools/TriangulatePolyline.cpp b/Applications/Utils/GeoTools/TriangulatePolyline.cpp index ad8a991468f2f5ff3d1a4184ebad50b8b898bf28..7d0870dac1ec1bafc8f5e2185e68526216469856 100644 --- a/Applications/Utils/GeoTools/TriangulatePolyline.cpp +++ b/Applications/Utils/GeoTools/TriangulatePolyline.cpp @@ -15,7 +15,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/Legacy/createSurface.h" #include "InfoLib/GitInfo.h" @@ -40,8 +39,6 @@ int main(int argc, char *argv[]) { QCoreApplication app(argc, argv, false); - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Triangulates the specified polyline in the given geometry file.\n\n" "OpenGeoSys-6 software, version " + @@ -77,8 +74,8 @@ int main(int argc, char *argv[]) } catch (std::runtime_error const& err) { - ERR("Failed to read file `%s'.", file_name.c_str()); - ERR("%s", err.what()); + ERR("Failed to read file `{:s}'.", file_name.c_str()); + ERR("{:s}", err.what()); return EXIT_FAILURE; } @@ -90,7 +87,7 @@ int main(int argc, char *argv[]) // check if line exists if (line == nullptr) { - ERR("No polyline found with name '%s'. Aborting...", + ERR("No polyline found with name '{:s}'. Aborting...", polyline_name.c_str()); return EXIT_FAILURE; } diff --git a/Applications/Utils/MeshEdit/AddTopLayer.cpp b/Applications/Utils/MeshEdit/AddTopLayer.cpp index ade20901240b2e23b8ec77c9c2c7c1c3b991f29a..b16ad59223e62db4b1e495e7490d7e9f7e2a6113 100644 --- a/Applications/Utils/MeshEdit/AddTopLayer.cpp +++ b/Applications/Utils/MeshEdit/AddTopLayer.cpp @@ -13,7 +13,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" #include "MeshLib/IO/readMeshFromFile.h" @@ -23,8 +22,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Adds a top layer to an existing mesh" "The documentation is available at " @@ -51,11 +48,11 @@ int main (int argc, char* argv[]) cmd.parse(argc, argv); - INFO("Reading mesh '%s' ... ", mesh_arg.getValue().c_str()); + INFO("Reading mesh '{:s}' ... ", mesh_arg.getValue().c_str()); auto subsfc_mesh = std::unique_ptr<MeshLib::Mesh>( MeshLib::IO::readMeshFromFile(mesh_arg.getValue())); if (!subsfc_mesh) { - ERR("Error reading mesh '%s'.", mesh_arg.getValue().c_str()); + ERR("Error reading mesh '{:s}'.", mesh_arg.getValue().c_str()); return EXIT_FAILURE; } INFO("done."); @@ -67,7 +64,7 @@ int main (int argc, char* argv[]) return EXIT_FAILURE; } - INFO("Writing mesh '%s' ... ", mesh_out_arg.getValue().c_str()); + INFO("Writing mesh '{:s}' ... ", mesh_out_arg.getValue().c_str()); MeshLib::IO::writeMeshToFile(*result, mesh_out_arg.getValue()); INFO("done."); diff --git a/Applications/Utils/MeshEdit/CreateBoundaryConditionsAlongPolylines.cpp b/Applications/Utils/MeshEdit/CreateBoundaryConditionsAlongPolylines.cpp index 1c2adee65de58fe884f843eaebc1701fc9eca737..7cb24fa42a772224263881d5ab9b78e7d55db61f 100644 --- a/Applications/Utils/MeshEdit/CreateBoundaryConditionsAlongPolylines.cpp +++ b/Applications/Utils/MeshEdit/CreateBoundaryConditionsAlongPolylines.cpp @@ -16,7 +16,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/readGeometryFromFile.h" #include "Applications/FileIO/writeGeometryToFile.h" @@ -90,7 +89,7 @@ void writeBCsAndGeometry(GeoLib::GEOObjects& geometry_sets, std::string const& bc_type, bool write_gml) { if (write_gml) { - INFO("write points to '%s.gml'.", geo_name.c_str()); + INFO("write points to '{:s}.gml'.", geo_name.c_str()); FileIO::writeGeometryToFile(geo_name, geometry_sets, out_fname+".gml"); } FileIO::writeGeometryToFile(geo_name, geometry_sets, out_fname+".gli"); @@ -123,8 +122,6 @@ void writeBCsAndGeometry(GeoLib::GEOObjects& geometry_sets, int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Creates boundary conditions for mesh nodes along polylines." "The documentation is available at " @@ -178,11 +175,11 @@ int main (int argc, char* argv[]) cmd.parse(argc, argv); // *** read mesh - INFO("Reading mesh '%s' ... ", mesh_arg.getValue().c_str()); + INFO("Reading mesh '{:s}' ... ", mesh_arg.getValue().c_str()); std::unique_ptr<MeshLib::Mesh> subsurface_mesh( MeshLib::IO::readMeshFromFile(mesh_arg.getValue())); INFO("done."); - INFO("Extracting top surface of mesh '%s' ... ", + INFO("Extracting top surface of mesh '{:s}' ... ", mesh_arg.getValue().c_str()); const MathLib::Vector3 dir(0,0,-1); double const angle(90); @@ -208,7 +205,7 @@ int main (int argc, char* argv[]) // *** get vector of polylines std::vector<GeoLib::Polyline*> const* plys(geometries.getPolylineVec(geo_name)); if (!plys) { - ERR("Could not get vector of polylines out of geometry '%s'.", + ERR("Could not get vector of polylines out of geometry '{:s}'.", geo_name.c_str()); return EXIT_FAILURE; } diff --git a/Applications/Utils/MeshEdit/ExtractBoundary.cpp b/Applications/Utils/MeshEdit/ExtractBoundary.cpp index 93011e9d35235d70afa9f333981041ccd0be25ce..a8124a6bb60e99eef383c4b3816385b8c3398ac4 100644 --- a/Applications/Utils/MeshEdit/ExtractBoundary.cpp +++ b/Applications/Utils/MeshEdit/ExtractBoundary.cpp @@ -16,7 +16,6 @@ #include <string> #include <vector> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" #include "InfoLib/GitInfo.h" @@ -31,8 +30,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Tool extracts the boundary of the given mesh. The documentation is " "available at " @@ -89,7 +86,7 @@ int main (int argc, char* argv[]) return EXIT_FAILURE; } - INFO("Mesh read: %u nodes, %u elements.", mesh->getNumberOfNodes(), + INFO("Mesh read: {:d} nodes, {:d} elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); // extract surface @@ -98,7 +95,7 @@ int main (int argc, char* argv[]) *mesh, node_prop_name.getValue(), element_prop_name.getValue(), face_prop_name.getValue())); - INFO("Created surface mesh: %u nodes, %u elements.", + INFO("Created surface mesh: {:d} nodes, {:d} elements.", surface_mesh->getNumberOfNodes(), surface_mesh->getNumberOfElements()); std::string out_fname(mesh_out.getValue()); diff --git a/Applications/Utils/MeshEdit/ExtractSurface.cpp b/Applications/Utils/MeshEdit/ExtractSurface.cpp index 78d7501540dab4edb272bb74b1c429c69fa1b5e1..3b7ffac05ce4fbc51281413db0c625d28b6ecb9a 100644 --- a/Applications/Utils/MeshEdit/ExtractSurface.cpp +++ b/Applications/Utils/MeshEdit/ExtractSurface.cpp @@ -15,8 +15,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -32,8 +30,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Tool extracts the surface of the given mesh. The documentation is " "available at " @@ -104,7 +100,7 @@ int main (int argc, char* argv[]) return EXIT_FAILURE; } - INFO("Mesh read: %u nodes, %u elements.", mesh->getNumberOfNodes(), + INFO("Mesh read: {:d} nodes, {:d} elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); // extract surface diff --git a/Applications/Utils/MeshEdit/MapGeometryToMeshSurface.cpp b/Applications/Utils/MeshEdit/MapGeometryToMeshSurface.cpp index 6a50ea9daf87dd0345ab7948fdc9a99d4857e267..1da6f421b44bbc18ae8bfe2c177e2a872d9fbd32 100644 --- a/Applications/Utils/MeshEdit/MapGeometryToMeshSurface.cpp +++ b/Applications/Utils/MeshEdit/MapGeometryToMeshSurface.cpp @@ -14,7 +14,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "GeoLib/GEOObjects.h" #include "GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.h" @@ -24,8 +23,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Maps geometric objects to the surface of a given mesh." "The documentation is available at " @@ -61,7 +58,7 @@ int main (int argc, char* argv[]) { GeoLib::IO::BoostXmlGmlInterface xml_io(geometries); if (xml_io.readFile(input_geometry_fname.getValue())) { - INFO("Read geometry from file '%s'.", + INFO("Read geometry from file '{:s}'.", input_geometry_fname.getValue().c_str()); } else { return EXIT_FAILURE; diff --git a/Applications/Utils/MeshEdit/MoveMesh.cpp b/Applications/Utils/MeshEdit/MoveMesh.cpp index 32fb54f1739b4ee8520aa9ed3e28048826c9a455..22b86853355b6c3cce019bde5cb234a565ed3fb9 100644 --- a/Applications/Utils/MeshEdit/MoveMesh.cpp +++ b/Applications/Utils/MeshEdit/MoveMesh.cpp @@ -12,7 +12,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -26,8 +25,6 @@ int main(int argc, char *argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Moves the mesh nodes using the given displacement vector or if no " "displacement vector is given, moves the mesh nodes such that the " @@ -64,7 +61,7 @@ int main(int argc, char *argv[]) std::unique_ptr<MeshLib::Mesh> mesh(MeshLib::IO::readMeshFromFile(fname)); if (!mesh) { - ERR("Could not read mesh from file '%s'.", fname.c_str()); + ERR("Could not read mesh from file '{:s}'.", fname.c_str()); return EXIT_FAILURE; } @@ -82,7 +79,7 @@ int main(int argc, char *argv[]) displacement[2] = z_arg.getValue(); } - INFO("translate model (%f, %f, %f).", + INFO("translate model ({:f}, {:f}, {:f}).", displacement[0], displacement[1], displacement[2]); diff --git a/Applications/Utils/MeshEdit/NodeReordering.cpp b/Applications/Utils/MeshEdit/NodeReordering.cpp index ee5b1df5525584334c41d9676931b74d5dea22d3..f0661ca207a2d0e39b3e3323569a0b8ea647ffdc 100644 --- a/Applications/Utils/MeshEdit/NodeReordering.cpp +++ b/Applications/Utils/MeshEdit/NodeReordering.cpp @@ -16,7 +16,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "BaseLib/Algorithm.h" #include "InfoLib/GitInfo.h" #include "MeshLib/Elements/Element.h" @@ -77,7 +76,7 @@ void reorderNodes(std::vector<MeshLib::Element*> &elements) } } - INFO("Corrected %d elements.", n_corrected_elements); + INFO("Corrected {:d} elements.", n_corrected_elements); } /// Re-ordering prism elements to correct OGS6 meshes with and without InSitu-Lib @@ -143,8 +142,6 @@ void reorderNonlinearNodes(MeshLib::Mesh &mesh) int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logo_setup; - TCLAP::CmdLine cmd( "Reordering of mesh nodes to make OGS Data Explorer 5 meshes " "compatible with OGS6.\n" diff --git a/Applications/Utils/MeshEdit/RemoveGhostData.cpp b/Applications/Utils/MeshEdit/RemoveGhostData.cpp index 9685a16cda23eb63fe5a1ddb4bc15039ad93074a..602cc6809ff1306997b16dd0cad5581ee9215bb2 100644 --- a/Applications/Utils/MeshEdit/RemoveGhostData.cpp +++ b/Applications/Utils/MeshEdit/RemoveGhostData.cpp @@ -9,12 +9,6 @@ */ #include <tclap/CmdLine.h> - -#include "Applications/ApplicationsLib/LogogSetup.h" -#include "InfoLib/GitInfo.h" - -#include "MeshLib/IO/writeMeshToFile.h" - #include <vtkCleanUnstructuredGrid.h> #include <vtkRemoveGhosts.h> #include <vtkSmartPointer.h> @@ -22,10 +16,11 @@ #include <vtkXMLPUnstructuredGridReader.h> #include <vtkXMLUnstructuredGridWriter.h> +#include "InfoLib/GitInfo.h" +#include "MeshLib/IO/writeMeshToFile.h" + int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Reads a VTK partitioned unstructured grid (*.pvtu), cleans the ghost " "information and saves the data as as a regular, connected mesh file." diff --git a/Applications/Utils/MeshEdit/ResetPropertiesInPolygonalRegion.cpp b/Applications/Utils/MeshEdit/ResetPropertiesInPolygonalRegion.cpp index 53e8f8ccac22c20eb8140d8b2a3c39af7542e0eb..40e0bec8ec41fe594e055efabc86c7eeac10f123 100644 --- a/Applications/Utils/MeshEdit/ResetPropertiesInPolygonalRegion.cpp +++ b/Applications/Utils/MeshEdit/ResetPropertiesInPolygonalRegion.cpp @@ -15,7 +15,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/readGeometryFromFile.h" #include "InfoLib/GitInfo.h" #include "GeoLib/GEOObjects.h" @@ -27,8 +26,6 @@ int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Sets the property value of a mesh element to a given new value iff at " "least one node of the element is within a polygonal region that is " @@ -106,7 +103,7 @@ int main(int argc, char* argv[]) GeoLib::PolylineVec const* plys(geometries.getPolylineVecObj(geo_name)); if (!plys) { - ERR("Could not get vector of polylines out of geometry '%s'.", + ERR("Could not get vector of polylines out of geometry '{:s}'.", geo_name.c_str()); return EXIT_FAILURE; } @@ -116,7 +113,7 @@ int main(int argc, char* argv[]) plys->getElementByName(polygon_name_arg.getValue())); if (!ply) { - ERR("Polyline '%s' not found.", polygon_name_arg.getValue().c_str()); + ERR("Polyline '{:s}' not found.", polygon_name_arg.getValue().c_str()); return EXIT_FAILURE; } @@ -124,7 +121,7 @@ int main(int argc, char* argv[]) bool closed(ply->isClosed()); if (!closed) { - ERR("Polyline '%s' is not closed, i.e. does not describe a region.", + ERR("Polyline '{:s}' is not closed, i.e. does not describe a region.", polygon_name_arg.getValue().c_str()); return EXIT_FAILURE; } @@ -164,10 +161,10 @@ int main(int argc, char* argv[]) std::vector<std::string> property_names( mesh->getProperties().getPropertyVectorNames()); - INFO("Mesh contains %d property vectors:", property_names.size()); + INFO("Mesh contains {:d} property vectors:", property_names.size()); for (const auto& name : property_names) { - INFO("- %s", name.c_str()); + INFO("- {:s}", name.c_str()); } MeshLib::IO::writeMeshToFile(*mesh, mesh_out.getValue()); diff --git a/Applications/Utils/MeshEdit/UnityPreprocessing.cpp b/Applications/Utils/MeshEdit/UnityPreprocessing.cpp index 612e85f6c2cdbce0d897a6b40cfe58624ed37924..ca4b31aeefe022e89dab1b0224a77e8f00760a66 100644 --- a/Applications/Utils/MeshEdit/UnityPreprocessing.cpp +++ b/Applications/Utils/MeshEdit/UnityPreprocessing.cpp @@ -11,7 +11,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "MeshLib/Elements/Hex.h" #include "MeshLib/Elements/Line.h" @@ -66,7 +65,7 @@ bool fillPropVec(MeshLib::Properties const& props, MeshLib::PropertyVector<T> const*const vec = props.getPropertyVector<T>(name); if (vec->getNumberOfComponents() != 1) { - INFO("Ignoring array '%s' (more than one component).", name.c_str()); + INFO("Ignoring array '{:s}' (more than one component).", name.c_str()); return false; } @@ -75,7 +74,7 @@ bool fillPropVec(MeshLib::Properties const& props, new_vec->resize(total_nodes); if (vec->getMeshItemType() == MeshLib::MeshItemType::Node) { - INFO("Migrating node array '%s' to new mesh structure...", + INFO("Migrating node array '{:s}' to new mesh structure...", name.c_str()); std::size_t const n_nodes (node_map.size()); for (std::size_t i = 0; i<n_nodes; ++i) @@ -89,7 +88,7 @@ bool fillPropVec(MeshLib::Properties const& props, } else if (vec->getMeshItemType() == MeshLib::MeshItemType::Cell) { - INFO("Transforming cell array '%s' into node array...", name.c_str()); + INFO("Transforming cell array '{:s}' into node array...", name.c_str()); std::size_t const n_elems (vec->size()); for (std::size_t i = 0; i<n_elems; ++i) { @@ -181,8 +180,6 @@ MeshLib::Mesh* constructMesh(MeshLib::Mesh const& mesh) int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Prepares OGS-meshes for use in Unity.\n\n" "OpenGeoSys-6 software, version " + @@ -204,7 +201,7 @@ int main (int argc, char* argv[]) cmd.parse(argc, argv); - INFO("Reading mesh '%s' ... ", mesh_arg.getValue().c_str()); + INFO("Reading mesh '{:s}' ... ", mesh_arg.getValue().c_str()); std::unique_ptr<MeshLib::Mesh> mesh {MeshLib::IO::readMeshFromFile(mesh_arg.getValue())}; if (!mesh) { @@ -231,7 +228,7 @@ int main (int argc, char* argv[]) MeshLib::ElementSearch searcher(*mesh); std::size_t const n_rem_elems = searcher.searchByElementType(MeshLib::MeshElemType::LINE); result.reset(MeshLib::removeElements(*mesh, searcher.getSearchedElementIDs(), "temp mesh")); - INFO ("%d line elements found and removed.\n", n_rem_elems); + INFO("{:d} line elements found and removed.\n", n_rem_elems); } INFO("Checking for cell-arrays..."); @@ -242,7 +239,7 @@ int main (int argc, char* argv[]) else INFO("No cell arrays found, keeping mesh structure.\n"); - INFO("Writing mesh '%s' ... ", mesh_out_arg.getValue().c_str()); + INFO("Writing mesh '{:s}' ... ", mesh_out_arg.getValue().c_str()); MeshLib::IO::VtuInterface writer(result.get(), vtkXMLWriter::Ascii, false); writer.writeToFile(mesh_out_arg.getValue()); INFO("done."); diff --git a/Applications/Utils/MeshEdit/Vtu2Grid.cpp b/Applications/Utils/MeshEdit/Vtu2Grid.cpp index 37baa463bf749e79e69113d5dc8ab5cd018f89e9..3e60d23c74b420e629de95f35a066873a2e1290b 100644 --- a/Applications/Utils/MeshEdit/Vtu2Grid.cpp +++ b/Applications/Utils/MeshEdit/Vtu2Grid.cpp @@ -10,7 +10,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "MeshLib/IO/writeMeshToFile.h" @@ -131,14 +130,13 @@ void mapMeshArraysOntoGrid(vtkSmartPointer<vtkUnstructuredGrid> const& mesh, mapArray<int, vtkSmartPointer<vtkIntArray>>(*grid, int_arr, name); continue; } - WARN("Ignoring array '%s', array type not implemented...", name.c_str()); + WARN("Ignoring array '{:s}', array type not implemented...", + name.c_str()); } } int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Reads a 3D unstructured mesh and samples it onto a structured grid of " "the same extent. Cell properties are mapped onto the grid (sampled at " diff --git a/Applications/Utils/MeshEdit/appendLinesAlongPolyline.cpp b/Applications/Utils/MeshEdit/appendLinesAlongPolyline.cpp index dca08d361a0a6c896a62df64196f784212a94835..84a9ee0c7297d5526ad6a0015d07790debb3b18f 100644 --- a/Applications/Utils/MeshEdit/appendLinesAlongPolyline.cpp +++ b/Applications/Utils/MeshEdit/appendLinesAlongPolyline.cpp @@ -8,7 +8,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/readGeometryFromFile.h" #include "InfoLib/GitInfo.h" @@ -25,8 +24,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Append line elements into a mesh.\n\n" "OpenGeoSys-6 software, version " + @@ -70,7 +67,7 @@ int main (int argc, char* argv[]) const GeoLib::PolylineVec* ply_vec (geo_objs.getPolylineVecObj(geo_names[0])); if (!ply_vec) { - ERR("Could not find polylines in geometry '%s'.", + ERR("Could not find polylines in geometry '{:s}'.", geo_names.front().c_str()); return EXIT_FAILURE; } @@ -79,15 +76,17 @@ int main (int argc, char* argv[]) MeshLib::Mesh const*const mesh (MeshLib::IO::readMeshFromFile(mesh_in.getValue())); if (!mesh) { - ERR("Mesh file '%s' not found", mesh_in.getValue().c_str()); + ERR("Mesh file '{:s}' not found", mesh_in.getValue().c_str()); return EXIT_FAILURE; } - INFO("Mesh read: %d nodes, %d elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); + INFO("Mesh read: {:d} nodes, {:d} elements.", mesh->getNumberOfNodes(), + mesh->getNumberOfElements()); // add line elements std::unique_ptr<MeshLib::Mesh> new_mesh = MeshGeoToolsLib::appendLinesAlongPolylines(*mesh, *ply_vec); - INFO("Mesh created: %d nodes, %d elements.", new_mesh->getNumberOfNodes(), new_mesh->getNumberOfElements()); + INFO("Mesh created: {:d} nodes, {:d} elements.", + new_mesh->getNumberOfNodes(), new_mesh->getNumberOfElements()); MeshLib::IO::writeMeshToFile(*new_mesh, mesh_out.getValue()); diff --git a/Applications/Utils/MeshEdit/checkMesh.cpp b/Applications/Utils/MeshEdit/checkMesh.cpp index fa65f8245880bb45cff90a58b748429cf02c229a..39c80b155640ebe76d68df80d2d02c7a65dd93d7 100644 --- a/Applications/Utils/MeshEdit/checkMesh.cpp +++ b/Applications/Utils/MeshEdit/checkMesh.cpp @@ -11,8 +11,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "BaseLib/StringTools.h" #include "BaseLib/MemWatch.h" @@ -31,8 +29,6 @@ int main(int argc, char *argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Checks mesh properties.\n\n" "OpenGeoSys-6 software, version " + @@ -65,21 +61,26 @@ int main(int argc, char *argv[]) const unsigned long mem_with_mesh (mem_watch.getVirtMemUsage()); if (mem_with_mesh>0) { - INFO ("Memory size: %i MB", (mem_with_mesh - mem_without_mesh)/(1024*1024)); + INFO("Memory size: {:i} MB", + (mem_with_mesh - mem_without_mesh) / (1024 * 1024)); (void)mem_with_mesh; } - INFO ("Time for reading: %g s", run_time.elapsed()); + INFO("Time for reading: {:g} s", run_time.elapsed()); // Geometric information const GeoLib::AABB aabb(MeshLib::MeshInformation::getBoundingBox(*mesh)); auto minPt(aabb.getMinPoint()); auto maxPt(aabb.getMaxPoint()); INFO("Node coordinates:"); - INFO("\tx [%g, %g] (extent %g)", minPt[0], maxPt[0], maxPt[0]-minPt[0]); - INFO("\ty [%g, %g] (extent %g)", minPt[1], maxPt[1], maxPt[1]-minPt[1]); - INFO("\tz [%g, %g] (extent %g)", minPt[2], maxPt[2], maxPt[2]-minPt[2]); - - INFO("Edge length: [%g, %g]", mesh->getMinEdgeLength(), mesh->getMaxEdgeLength()); + INFO("\tx [{:g}, {:g}] (extent {:g})", minPt[0], maxPt[0], + maxPt[0] - minPt[0]); + INFO("\ty [{:g}, {:g}] (extent {:g})", minPt[1], maxPt[1], + maxPt[1] - minPt[1]); + INFO("\tz [{:g}, {:g}] (extent {:g})", minPt[2], maxPt[2], + maxPt[2] - minPt[2]); + + INFO("Edge length: [{:g}, {:g}]", mesh->getMinEdgeLength(), + mesh->getMaxEdgeLength()); // Element information diff --git a/Applications/Utils/MeshEdit/convertToLinearMesh.cpp b/Applications/Utils/MeshEdit/convertToLinearMesh.cpp index a8361b9e1197dbec5d496da00906a76bff6b6a9a..85af3caaf5dc290c310deb27c2192dbcd41cd653 100644 --- a/Applications/Utils/MeshEdit/convertToLinearMesh.cpp +++ b/Applications/Utils/MeshEdit/convertToLinearMesh.cpp @@ -12,8 +12,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "MeshLib/Mesh.h" @@ -25,8 +23,6 @@ int main(int argc, char *argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Convert a non-linear mesh to a linear mesh.\n\n" "OpenGeoSys-6 software, version " + diff --git a/Applications/Utils/MeshEdit/createLayeredMeshFromRasters.cpp b/Applications/Utils/MeshEdit/createLayeredMeshFromRasters.cpp index fe64c7d4f00c35ecb70787ee0a0e772db4679738..43149b3518dc6eb6f8591d2101721f7b0cace76d 100644 --- a/Applications/Utils/MeshEdit/createLayeredMeshFromRasters.cpp +++ b/Applications/Utils/MeshEdit/createLayeredMeshFromRasters.cpp @@ -18,8 +18,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" @@ -35,7 +33,7 @@ int readRasterPaths(std::string const& raster_list_file, std::vector<std::string std::ifstream in (raster_list_file.c_str()); if (in.fail()) { - ERR ("Could not open file %s.", raster_list_file.c_str()); + ERR("Could not open file {:s}.", raster_list_file.c_str()); return -1; } std::string line; @@ -58,8 +56,6 @@ int readRasterPaths(std::string const& raster_list_file, std::vector<std::string int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Creates a layered 3D OGS mesh from an existing 2D OGS mesh and raster " "files representing subsurface layers. Supported raster formats are " @@ -117,12 +113,12 @@ int main (int argc, char* argv[]) } } - INFO("Reading mesh '%s' ... ", mesh_arg.getValue().c_str()); + INFO("Reading mesh '{:s}' ... ", mesh_arg.getValue().c_str()); std::unique_ptr<MeshLib::Mesh> const sfc_mesh( MeshLib::IO::readMeshFromFile(mesh_arg.getValue())); if (!sfc_mesh) { - ERR("Error reading mesh '%s'.", mesh_arg.getValue().c_str()); + ERR("Error reading mesh '{:s}'.", mesh_arg.getValue().c_str()); return EXIT_FAILURE; } if (sfc_mesh->getDimension() != 2) @@ -157,7 +153,7 @@ int main (int argc, char* argv[]) output_name.append(".vtu"); } - INFO("Writing mesh '%s' ... ", output_name.c_str()); + INFO("Writing mesh '{:s}' ... ", output_name.c_str()); auto result_mesh = std::make_unique<MeshLib::Mesh>( *(mapper.getMesh("SubsurfaceMesh").release())); diff --git a/Applications/Utils/MeshEdit/createQuadraticMesh.cpp b/Applications/Utils/MeshEdit/createQuadraticMesh.cpp index a6954475d713870605c92cac007410b5320dc0f4..4dca46dadf4203b4a0a35a7c7b4c6b5eb73470db 100644 --- a/Applications/Utils/MeshEdit/createQuadraticMesh.cpp +++ b/Applications/Utils/MeshEdit/createQuadraticMesh.cpp @@ -12,8 +12,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "MeshLib/Mesh.h" @@ -25,8 +23,6 @@ int main(int argc, char *argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Create quadratic order mesh.\n\n" "OpenGeoSys-6 software, version " + diff --git a/Applications/Utils/MeshEdit/editMaterialID.cpp b/Applications/Utils/MeshEdit/editMaterialID.cpp index c87484215de863a35862958b0549dd1fc37af387..823d3aab86a89cb76e304e063420f7118ca310e8 100644 --- a/Applications/Utils/MeshEdit/editMaterialID.cpp +++ b/Applications/Utils/MeshEdit/editMaterialID.cpp @@ -10,7 +10,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "MeshLib/Elements/Element.h" #include "MeshLib/IO/readMeshFromFile.h" @@ -20,8 +19,6 @@ int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Edit material IDs of mesh elements.\n\n" "OpenGeoSys-6 software, version " + @@ -84,7 +81,8 @@ int main (int argc, char* argv[]) std::unique_ptr<MeshLib::Mesh> mesh( MeshLib::IO::readMeshFromFile(mesh_in.getValue())); - INFO("Mesh read: %d nodes, %d elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); + INFO("Mesh read: {:d} nodes, {:d} elements.", mesh->getNumberOfNodes(), + mesh->getNumberOfElements()); if (condenseArg.isSet()) { INFO("Condensing material ID..."); @@ -94,7 +92,7 @@ int main (int argc, char* argv[]) const auto vecOldID = matIDArg.getValue(); const unsigned newID = newIDArg.getValue(); for (auto oldID : vecOldID) { - INFO("%d -> %d", oldID, newID); + INFO("{:d} -> {:d}", oldID, newID); MeshLib::ElementValueModification::replace(*mesh, oldID, newID, true); } } else if (specifyArg.isSet()) { @@ -103,7 +101,7 @@ int main (int argc, char* argv[]) const MeshLib::MeshElemType eleType = MeshLib::String2MeshElemType(eleTypeName); const unsigned newID = newIDArg.getValue(); unsigned cnt = MeshLib::ElementValueModification::setByElementType(*mesh, eleType, newID); - INFO("updated %d elements", cnt); + INFO("updated {:d} elements", cnt); } MeshLib::IO::writeMeshToFile(*mesh, mesh_out.getValue()); diff --git a/Applications/Utils/MeshEdit/moveMeshNodes.cpp b/Applications/Utils/MeshEdit/moveMeshNodes.cpp index 7ff5d75349b312fd1a0a2b32eadd0b11e5d5380d..9946c7307897df4a63d56cd4799bbe50887eb7f8 100644 --- a/Applications/Utils/MeshEdit/moveMeshNodes.cpp +++ b/Applications/Utils/MeshEdit/moveMeshNodes.cpp @@ -12,7 +12,6 @@ #include <memory> #include <string> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" #include "GeoLib/AABB.h" @@ -45,8 +44,6 @@ double getClosestPointElevation(MeshLib::Node const& p, int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - std::vector<std::string> keywords; keywords.emplace_back("-ALL"); keywords.emplace_back("-MESH"); @@ -57,7 +54,7 @@ int main (int argc, char* argv[]) INFO( "Moves mesh nodes and connected elements either by a given value " "or based on a list.\n"); - INFO("Usage: %s <msh-file.msh> <keyword> [<value1>] [<value2>]", + INFO("Usage: {:s} <msh-file.msh> <keyword> [<value1>] [<value2>]", argv[0]); INFO("Available keywords:"); INFO( @@ -78,7 +75,7 @@ int main (int argc, char* argv[]) if (!(ext == "msh" || ext == "vtu")) { ERR("Error: Parameter 1 must be a mesh-file (*.msh / *.vtu)."); - INFO("Usage: %s <msh-file.gml> <keyword> <value>", argv[0]); + INFO("Usage: {:s} <msh-file.gml> <keyword> <value>", argv[0]); return EXIT_FAILURE; } @@ -96,7 +93,7 @@ int main (int argc, char* argv[]) { ERR("Keyword not recognised. Available keywords:"); for (auto const& keyword : keywords) - INFO("\t%s", keyword.c_str()); + INFO("\t{:s}", keyword.c_str()); return EXIT_FAILURE; } @@ -120,8 +117,8 @@ int main (int argc, char* argv[]) const std::string dir(argv[3]); unsigned idx = (dir == "x") ? 0 : (dir == "y") ? 1 : 2; const double value(strtod(argv[4],0)); - INFO("Moving all mesh nodes by %g in direction %d (%s)...", value, idx, - dir.c_str()); + INFO("Moving all mesh nodes by {:g} in direction {:d} ({:s})...", value, + idx, dir.c_str()); //double value(-10); const std::size_t nNodes(mesh->getNumberOfNodes()); std::vector<MeshLib::Node*> nodes (mesh->getNodes()); diff --git a/Applications/Utils/MeshEdit/queryMesh.cpp b/Applications/Utils/MeshEdit/queryMesh.cpp index 321112d272fab5e32be1fec70ba669addc903176..bb81f98f0de971038a7db7b77a28efeced9bfd29 100644 --- a/Applications/Utils/MeshEdit/queryMesh.cpp +++ b/Applications/Utils/MeshEdit/queryMesh.cpp @@ -13,8 +13,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "BaseLib/StringTools.h" #include "BaseLib/FileTools.h" @@ -26,8 +24,6 @@ int main(int argc, char *argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Query mesh information.\n\n" "OpenGeoSys-6 software, version " + @@ -104,7 +100,7 @@ int main(int argc, char *argv[]) } } out << std::endl; - INFO("%s", out.str().c_str()); + INFO("{:s}", out.str().c_str()); } for (auto node_id : selected_node_ids) @@ -128,6 +124,6 @@ int main(int argc, char *argv[]) out << nd->getID() << " "; } out << std::endl; - INFO("%s", out.str().c_str()); + INFO("{:s}", out.str().c_str()); } } diff --git a/Applications/Utils/MeshEdit/removeMeshElements.cpp b/Applications/Utils/MeshEdit/removeMeshElements.cpp index 2e57af6173a33c7e8c4b09cd0b2957edb2857112..ce366d7a0a2b59f2e863f6f8967e0d2823ca5fb6 100644 --- a/Applications/Utils/MeshEdit/removeMeshElements.cpp +++ b/Applications/Utils/MeshEdit/removeMeshElements.cpp @@ -15,7 +15,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "MeshLib/Elements/Element.h" #include "MeshLib/IO/readMeshFromFile.h" @@ -41,7 +40,7 @@ void searchByPropertyValue(std::string const& property_name, property_name, property_value); } - INFO("%d elements with property value %s found.", n_marked_elements, + INFO("{:d} elements with property value {:s} found.", n_marked_elements, std::to_string(property_value).c_str()); } } @@ -63,14 +62,12 @@ void searchByPropertyRange(std::string const& property_name, // add checks for other data types here (if n_marked_elements remains 0) - INFO("%d elements in range [%s, %s] found.", n_marked_elements, + INFO("{:d} elements in range [{:s}, {:s}] found.", n_marked_elements, std::to_string(min_value).c_str(), std::to_string(max_value).c_str()); } int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Removes mesh elements based on element type, element volume, scalar " "arrays, or bounding box . The documentation is available at " @@ -153,12 +150,13 @@ int main (int argc, char* argv[]) return EXIT_FAILURE; } - INFO("Mesh read: %d nodes, %d elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); + INFO("Mesh read: {:d} nodes, {:d} elements.", mesh->getNumberOfNodes(), + mesh->getNumberOfElements()); MeshLib::ElementSearch searcher(*mesh); // search elements IDs to be removed if (zveArg.isSet()) { - INFO("%d zero volume elements found.", searcher.searchByContent()); + INFO("{:d} zero volume elements found.", searcher.searchByContent()); } if (eleTypeArg.isSet()) { const std::vector<std::string> eleTypeNames = eleTypeArg.getValue(); @@ -168,8 +166,8 @@ int main (int argc, char* argv[]) { continue; } - INFO("%d %s elements found.", searcher.searchByElementType(type), - typeName.c_str()); + INFO("{:d} {:s} elements found.", + searcher.searchByElementType(type), typeName.c_str()); } } @@ -248,8 +246,9 @@ int main (int argc, char* argv[]) ySmallArg.getValue(), zSmallArg.getValue()}}), MathLib::Point3d(std::array<double,3>{{xLargeArg.getValue(), yLargeArg.getValue(), zLargeArg.getValue()}})}}); - INFO("%d elements found.", - searcher.searchByBoundingBox(GeoLib::AABB(extent.begin(), extent.end()))); + INFO("{:d} elements found.", + searcher.searchByBoundingBox( + GeoLib::AABB(extent.begin(), extent.end()))); } // remove the elements and create a new mesh object. diff --git a/Applications/Utils/MeshEdit/reviseMesh.cpp b/Applications/Utils/MeshEdit/reviseMesh.cpp index 545c2018b9bb5a2cd4d5811d06b7829871361060..3d72c0146bbf0928dbf155a6d4344ed7771be12d 100644 --- a/Applications/Utils/MeshEdit/reviseMesh.cpp +++ b/Applications/Utils/MeshEdit/reviseMesh.cpp @@ -13,8 +13,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "BaseLib/StringTools.h" #include "BaseLib/FileTools.h" @@ -29,8 +27,6 @@ int main(int argc, char *argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Mesh revision tool.\n\n" "OpenGeoSys-6 software, version " + @@ -60,7 +56,8 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } - INFO("Mesh read: %d nodes, %d elements.", org_mesh->getNumberOfNodes(), org_mesh->getNumberOfElements()); + INFO("Mesh read: {:d} nodes, {:d} elements.", org_mesh->getNumberOfNodes(), + org_mesh->getNumberOfElements()); // revise the mesh std::unique_ptr<MeshLib::Mesh> new_mesh; @@ -74,7 +71,8 @@ int main(int argc, char *argv[]) // write into a file if (new_mesh) { - INFO("Revised mesh: %d nodes, %d elements.", new_mesh->getNumberOfNodes(), new_mesh->getNumberOfElements()); + INFO("Revised mesh: {:d} nodes, {:d} elements.", + new_mesh->getNumberOfNodes(), new_mesh->getNumberOfElements()); MeshLib::IO::writeMeshToFile(*new_mesh, output_arg.getValue()); } diff --git a/Applications/Utils/MeshEdit/swapNodeCoordinateAxes.cpp b/Applications/Utils/MeshEdit/swapNodeCoordinateAxes.cpp index c2864214218e16993370f69fbd99de296ac3bcc0..8a63fdb52b132a1e5df62636fc2167065ff8bfa8 100644 --- a/Applications/Utils/MeshEdit/swapNodeCoordinateAxes.cpp +++ b/Applications/Utils/MeshEdit/swapNodeCoordinateAxes.cpp @@ -13,9 +13,8 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" +#include "BaseLib/Logging.h" #include "MeshLib/Mesh.h" #include "MeshLib/Node.h" @@ -90,8 +89,6 @@ static bool parseNewOrder(std::string const& str_order, std::array<int, 3> &new_ int main(int argc, char *argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Swap node coordinate values.\n\n" "OpenGeoSys-6 software, version " + @@ -131,7 +128,8 @@ int main(int argc, char *argv[]) WARN("Swapping coordinate values of 3D elements can result in incorrect node-ordering."); } - INFO("Exchange node coordinates from xyz to %s", new_order_arg.getValue().data()); + INFO("Exchange node coordinates from xyz to {:s}", + new_order_arg.getValue().data()); swapNodeCoordinateAxes(*mesh, new_order); INFO("Save the new mesh into a file"); diff --git a/Applications/Utils/MeshGeoTools/computeSurfaceNodeIDsInPolygonalRegion.cpp b/Applications/Utils/MeshGeoTools/computeSurfaceNodeIDsInPolygonalRegion.cpp index 7d4dc1753c0893b3fd382eb6dafff86e0a25cf50..bc496bf000a6aa6a0b26187d0a0db07ffefec56a 100644 --- a/Applications/Utils/MeshGeoTools/computeSurfaceNodeIDsInPolygonalRegion.cpp +++ b/Applications/Utils/MeshGeoTools/computeSurfaceNodeIDsInPolygonalRegion.cpp @@ -17,7 +17,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/readGeometryFromFile.h" #include "InfoLib/GitInfo.h" #include "BaseLib/Error.h" @@ -36,12 +35,12 @@ void writeToFile(std::string const& id_area_fname, std::string const& csv_fname, { std::ofstream ids_and_area_out(id_area_fname); if (!ids_and_area_out) { - OGS_FATAL("Unable to open the file '%s' - aborting.", + OGS_FATAL("Unable to open the file '{:s}' - aborting.", id_area_fname.c_str()); } std::ofstream csv_out(csv_fname); if (!csv_out) { - OGS_FATAL("Unable to open the file '%s' - aborting.", + OGS_FATAL("Unable to open the file '{:s}' - aborting.", csv_fname.c_str()); } @@ -64,8 +63,6 @@ void writeToFile(std::string const& id_area_fname, std::string const& csv_fname, int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Computes ids of mesh nodes that are in polygonal regions and resides " "on the top surface. The polygonal regions have to be given in a gml- " @@ -95,14 +92,15 @@ int main (int argc, char* argv[]) cmd.parse(argc, argv); std::unique_ptr<MeshLib::Mesh const> mesh(MeshLib::IO::readMeshFromFile(mesh_in.getValue())); - INFO("Mesh read: %u nodes, %u elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); + INFO("Mesh read: {:d} nodes, {:d} elements.", mesh->getNumberOfNodes(), + mesh->getNumberOfElements()); GeoLib::GEOObjects geo_objs; FileIO::readGeometryFromFile(geo_in.getValue(), geo_objs, gmsh_path_arg.getValue()); std::vector<std::string> geo_names; geo_objs.getGeometryNames(geo_names); - INFO("Geometry '%s' read: %u points, %u polylines.", + INFO("Geometry '{:s}' read: {:d} points, {:d} polylines.", geo_names[0].c_str(), geo_objs.getPointVec(geo_names[0])->size(), geo_objs.getPolylineVec(geo_names[0])->size()); @@ -154,7 +152,7 @@ int main (int argc, char* argv[]) } } if (ids_and_areas.empty()) { - ERR("Polygonal part of surface '%s' doesn't contains nodes. No " + ERR("Polygonal part of surface '{:s}' doesn't contains nodes. No " "output will be generated.", polygon_name.c_str()); continue; @@ -166,8 +164,8 @@ int main (int argc, char* argv[]) id_and_area_fname += std::to_string(j) + ".txt"; csv_fname += std::to_string(j) + ".csv"; INFO( - "Polygonal part of surface '%s' contains %ul nodes. Writting to" - " files '%s' and '%s'.", + "Polygonal part of surface '{:s}' contains %{ul} nodes. Writting to" + " files '{:s}' and '{:s}'.", polygon_name.c_str(), ids_and_areas.size(), id_and_area_fname.c_str(), diff --git a/Applications/Utils/MeshGeoTools/constructMeshesFromGeometry.cpp b/Applications/Utils/MeshGeoTools/constructMeshesFromGeometry.cpp index 55d4a77cf974c63dc8f6b6a479405ddc60319a06..b85795c864f75c6f65cf90c0d597cf2543974971 100644 --- a/Applications/Utils/MeshGeoTools/constructMeshesFromGeometry.cpp +++ b/Applications/Utils/MeshGeoTools/constructMeshesFromGeometry.cpp @@ -9,7 +9,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "GeoLib/GEOObjects.h" #include "GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.h" @@ -24,15 +23,13 @@ std::unique_ptr<GeoLib::GEOObjects> readGeometry(std::string const& filename) auto geo_objects = std::make_unique<GeoLib::GEOObjects>(); GeoLib::IO::BoostXmlGmlInterface gml_reader(*geo_objects); - DBUG("Reading geometry file '%s'.", filename.c_str()); + DBUG("Reading geometry file '{:s}'.", filename.c_str()); gml_reader.readFile(filename); return geo_objects; } int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logo_setup; - TCLAP::CmdLine cmd( "Converts a geometry defined on a given mesh to distinct meshes. The " "documentation is available at " @@ -107,7 +104,7 @@ int main(int argc, char* argv[]) if (m_ptr->getNodes().empty()) { WARN( - "The created mesh '%s' hasn't any nodes or elements and thus " + "The created mesh '{:s}' hasn't any nodes or elements and thus " "it isn't written to file.", m_ptr->getName().c_str()); continue; diff --git a/Applications/Utils/MeshGeoTools/createIntermediateRasters.cpp b/Applications/Utils/MeshGeoTools/createIntermediateRasters.cpp index 3b660c78b7fe52663a0b434e4f4d0e4012d3e6f1..907329ccdbc82ed3a2a72c5c89655fcbf5798d03 100644 --- a/Applications/Utils/MeshGeoTools/createIntermediateRasters.cpp +++ b/Applications/Utils/MeshGeoTools/createIntermediateRasters.cpp @@ -15,14 +15,11 @@ #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/AsciiRasterInterface.h" #include "GeoLib/Raster.h" int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Takes two DEMs located at the exact same spatial position (but at " "different elevation) and calculates n raster DEMs located at " @@ -145,7 +142,7 @@ int main(int argc, char* argv[]) GeoLib::Raster r(h1, raster[i].begin(), raster[i].end()); FileIO::AsciiRasterInterface::writeRasterAsASC(r, basename + std::to_string(i) + "." + ext); - INFO("Layer %d written.", i+1); + INFO("Layer {:d} written.", i + 1); } return EXIT_SUCCESS; } diff --git a/Applications/Utils/MeshGeoTools/identifySubdomains.cpp b/Applications/Utils/MeshGeoTools/identifySubdomains.cpp index 6dc2fb59a8370113b18ee6d88c83b5abedbc7209..cabcd263bb176563edabd37d6a0afb313d5faa52 100644 --- a/Applications/Utils/MeshGeoTools/identifySubdomains.cpp +++ b/Applications/Utils/MeshGeoTools/identifySubdomains.cpp @@ -9,7 +9,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "MeshGeoToolsLib/IdentifySubdomainMesh.h" #include "MeshGeoToolsLib/MeshNodeSearcher.h" @@ -29,7 +28,8 @@ std::vector<std::unique_ptr<MeshLib::Mesh>> readMeshes( auto mesh = MeshLib::IO::readMeshFromFile(filename); if (mesh == nullptr) { - OGS_FATAL("Could not read mesh from '%s' file.", filename.c_str()); + OGS_FATAL("Could not read mesh from '{:s}' file.", + filename.c_str()); } meshes.emplace_back(mesh); } @@ -42,8 +42,6 @@ std::vector<std::unique_ptr<MeshLib::Mesh>> readMeshes( int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Checks if the subdomain meshes are part of the bulk mesh and writes " "the 'bulk_node_ids' and the 'bulk_element_ids' in each of them. The " @@ -105,7 +103,7 @@ int main(int argc, char* argv[]) MeshLib::IO::readMeshFromFile(bulk_mesh_arg.getValue())}; if (bulk_mesh == nullptr) { - OGS_FATAL("Could not read bulk mesh from '%s'", + OGS_FATAL("Could not read bulk mesh from '{:s}'", bulk_mesh_arg.getValue().c_str()); } diff --git a/Applications/Utils/ModelPreparation/ComputeNodeAreasFromSurfaceMesh.cpp b/Applications/Utils/ModelPreparation/ComputeNodeAreasFromSurfaceMesh.cpp index 011cedc793d0a2de0e6254791cbe0968d81752c9..1e8e43fe1a14604b22a3cb783f5af0f29cb1d4f5 100644 --- a/Applications/Utils/ModelPreparation/ComputeNodeAreasFromSurfaceMesh.cpp +++ b/Applications/Utils/ModelPreparation/ComputeNodeAreasFromSurfaceMesh.cpp @@ -16,7 +16,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "BaseLib/Error.h" #include "BaseLib/FileTools.h" @@ -32,12 +31,12 @@ void writeToFile(std::string const& id_area_fname, std::string const& csv_fname, { std::ofstream ids_and_area_out(id_area_fname); if (!ids_and_area_out) { - OGS_FATAL("Unable to open the file '%s' - aborting.", + OGS_FATAL("Unable to open the file '{:s}' - aborting.", id_area_fname.c_str()); } std::ofstream csv_out(csv_fname); if (!csv_out) { - OGS_FATAL("Unable to open the file '%s' - aborting.", + OGS_FATAL("Unable to open the file '{:s}' - aborting.", csv_fname.c_str()); } @@ -57,8 +56,6 @@ void writeToFile(std::string const& id_area_fname, std::string const& csv_fname, int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "The tool computes the area per node of the surface mesh and writes " "the information as txt and csv data.\n\n" @@ -86,8 +83,8 @@ int main (int argc, char* argv[]) std::unique_ptr<MeshLib::Mesh> surface_mesh( MeshLib::IO::readMeshFromFile(mesh_in.getValue())); - INFO("Mesh read: %u nodes, %u elements.", surface_mesh->getNumberOfNodes(), - surface_mesh->getNumberOfElements()); + INFO("Mesh read: {:d} nodes, {:d} elements.", + surface_mesh->getNumberOfNodes(), surface_mesh->getNumberOfElements()); // ToDo check if mesh is read correct and if the mesh is a surface mesh MeshLib::PropertyVector<std::size_t>* orig_node_ids(nullptr); diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/Metis.cpp b/Applications/Utils/ModelPreparation/PartitionMesh/Metis.cpp index 0534837886c57c8c454f598934640185c9352c7c..d6163759c3980c9a3010349e6d128ba5e55858a7 100644 --- a/Applications/Utils/ModelPreparation/PartitionMesh/Metis.cpp +++ b/Applications/Utils/ModelPreparation/PartitionMesh/Metis.cpp @@ -9,7 +9,7 @@ * */ -#include <iostream> +#include <fstream> #include "BaseLib/Error.h" #include "MeshLib/Elements/Element.h" @@ -22,12 +22,12 @@ void writeMETIS(std::vector<MeshLib::Element*> const& elements, std::ofstream os(file_name, std::ios::trunc); if (!os.is_open()) { - OGS_FATAL("Error: cannot open file %s.", file_name.data()); + OGS_FATAL("Error: cannot open file {:s}.", file_name.data()); } if (!os.good()) { - OGS_FATAL("Error: Cannot write in file %s.", file_name.data()); + OGS_FATAL("Error: Cannot write in file {:s}.", file_name.data()); } os << elements.size() << " \n"; @@ -56,7 +56,7 @@ std::vector<std::size_t> readMetisData(const std::string& file_name_base, if (!npart_in.is_open()) { OGS_FATAL( - "Error: cannot open file %s. It may not exist!\n" + "Error: cannot open file {:s}. It may not exist!\n" "Run mpmetis beforehand or use option -m", fname_parts.data()); } @@ -76,12 +76,12 @@ std::vector<std::size_t> readMetisData(const std::string& file_name_base, if (npart_in.bad()) { - OGS_FATAL("Error while reading file %s.", fname_parts.data()); + OGS_FATAL("Error while reading file {:s}.", fname_parts.data()); } if (counter != number_of_nodes) { - OGS_FATAL("Error: data in %s are less than expected.", + OGS_FATAL("Error: data in {:s} are less than expected.", fname_parts.data()); } diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp b/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp index 6a40ea79f668deb586cf70e2e65a161c0cb0c3d7..ef0ee9fbe9a0d0ceb10ce66f25328461d2ea41f4 100644 --- a/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp +++ b/Applications/Utils/ModelPreparation/PartitionMesh/NodeWiseMeshPartitioner.cpp @@ -18,11 +18,10 @@ #include <numeric> #include <unordered_map> -#include <logog/include/logog.hpp> - #include "BaseLib/Error.h" +#include "BaseLib/FileTools.h" +#include "BaseLib/Logging.h" #include "BaseLib/Stream.h" - #include "MeshLib/IO/VtkIO/VtuInterface.h" namespace ApplicationUtils @@ -403,7 +402,7 @@ bool copyPropertyVector(MeshLib::Properties const& original_properties, *partitioned_pv); } OGS_FATAL( - "Copying of property vector values for mesh item type %s is " + "Copying of property vector values for mesh item type {:s} is " "not implemented.", pv->getMeshItemType()); }; @@ -438,7 +437,7 @@ void applyToPropertyVectors(std::vector<std::string> const& property_names, f(static_cast<unsigned long>(0), name) || f(std::size_t{}, name); if (!success) { - OGS_FATAL("Could not apply function to PropertyVector '%s'.", + OGS_FATAL("Could not apply function to PropertyVector '{:s}'.", name.c_str()); } } @@ -456,8 +455,8 @@ void processProperties(MeshLib::Properties const& properties, }); DBUG( - "total number of tuples define on mesh item type '%s' after " - "partitioning: %d ", + "total number of tuples define on mesh item type '{:s}' after " + "partitioning: {:d} ", toString(mesh_item_type), total_number_of_tuples); // 1 create new PV @@ -488,7 +487,7 @@ void NodeWiseMeshPartitioner::partitionByMETIS( { for (std::size_t part_id = 0; part_id < _partitions.size(); part_id++) { - INFO("Processing partition: %d", part_id); + INFO("Processing partition: {:d}", part_id); processPartition(part_id, is_mixed_high_order_linear_elems); } @@ -608,7 +607,7 @@ std::vector<Partition> NodeWiseMeshPartitioner::partitionOtherMesh( for (std::size_t part_id = 0; part_id < _partitions.size(); part_id++) { auto& partition = partitions[part_id]; - INFO("Processing partition: %d", part_id); + INFO("Processing partition: {:d}", part_id); // Set the node numbers of base and all mesh nodes. partition.number_of_mesh_base_nodes = mesh.getNumberOfBaseNodes(); partition.number_of_mesh_all_nodes = mesh.getNumberOfNodes(); @@ -741,7 +740,7 @@ void writePropertiesBinary(const std::string& file_name_base, std::ofstream out(file_name_cfg, std::ios::binary); if (!out) { - OGS_FATAL("Could not open file '%s' for output.", + OGS_FATAL("Could not open file '{:s}' for output.", file_name_cfg.c_str()); } @@ -751,7 +750,7 @@ void writePropertiesBinary(const std::string& file_name_base, std::ofstream out_val(file_name_val, std::ios::binary); if (!out_val) { - OGS_FATAL("Could not open file '%s' for output.", + OGS_FATAL("Could not open file '{:s}' for output.", file_name_val.c_str()); } @@ -771,8 +770,9 @@ void writePropertiesBinary(const std::string& file_name_base, offset, static_cast<unsigned long>( partition.numberOfMeshItems(mesh_item_type))}; DBUG( - "Write meta data for node-based PropertyVector: global offset %d, " - "number of tuples %d", + "Write meta data for node-based PropertyVector: global offset " + "{:d}, " + "number of tuples {:d}", pvpmd.offset, pvpmd.number_of_tuples); MeshLib::IO::writePropertyVectorPartitionMetaData(out, pvpmd); offset += pvpmd.number_of_tuples; @@ -845,7 +845,7 @@ std::tuple<std::vector<long>, std::vector<long>> writeConfigDataBinary( std::ofstream of_bin_cfg(file_name_cfg, std::ios::binary); if (!of_bin_cfg) { - OGS_FATAL("Could not open file '%s' for output.", + OGS_FATAL("Could not open file '{:s}' for output.", file_name_cfg.c_str()); } @@ -929,7 +929,7 @@ void writeElementsBinary(std::string const& file_name_base, std::ofstream element_info_os(file_name_ele, std::ios::binary); if (!element_info_os) { - OGS_FATAL("Could not open file '%s' for output.", + OGS_FATAL("Could not open file '{:s}' for output.", file_name_ele.c_str()); } @@ -938,7 +938,7 @@ void writeElementsBinary(std::string const& file_name_base, std::ofstream ghost_element_info_os(file_name_ele_g, std::ios::binary); if (!ghost_element_info_os) { - OGS_FATAL("Could not open file '%s' for output.", + OGS_FATAL("Could not open file '{:s}' for output.", file_name_ele_g.c_str()); } @@ -997,7 +997,7 @@ void writeNodesBinary(const std::string& file_name_base, std::ofstream os(file_name, std::ios::binary); if (!os) { - OGS_FATAL("Could not open file '%s' for output.", file_name.c_str()); + OGS_FATAL("Could not open file '{:s}' for output.", file_name.c_str()); } for (const auto& partition : partitions) diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp b/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp index 6a755caa1109cd69cb0d0b1aaf8525244da7c460..9068d19cbc83113c526ce078343e1dbbeb86426e 100644 --- a/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp +++ b/Applications/Utils/ModelPreparation/PartitionMesh/PartitionMesh.cpp @@ -14,7 +14,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "BaseLib/CPUTime.h" #include "BaseLib/FileTools.h" @@ -28,8 +27,6 @@ using namespace ApplicationUtils; int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Partition a mesh for parallel computing." "The tasks of this tool are in twofold:\n" @@ -95,7 +92,7 @@ int main(int argc, char* argv[]) BaseLib::dropFileExtension(mesh_input.getValue()); std::unique_ptr<MeshLib::Mesh> mesh_ptr( MeshLib::IO::readMeshFromFile(input_file_name_wo_extension + ".vtu")); - INFO("Mesh '%s' read: %d nodes, %d elements.", + INFO("Mesh '{:s}' read: {:d} nodes, {:d} elements.", mesh_ptr->getName().c_str(), mesh_ptr->getNumberOfNodes(), mesh_ptr->getNumberOfElements()); @@ -105,8 +102,8 @@ int main(int argc, char* argv[]) INFO("Write the mesh into METIS input file."); ApplicationUtils::writeMETIS(mesh_ptr->getElements(), input_file_name_wo_extension + ".mesh"); - INFO("Total runtime: %g s.", run_timer.elapsed()); - INFO("Total CPU time: %g s.", CPU_timer.elapsed()); + INFO("Total runtime: {:g} s.", run_timer.elapsed()); + INFO("Total CPU time: {:g} s.", CPU_timer.elapsed()); return EXIT_SUCCESS; } @@ -138,7 +135,7 @@ int main(int argc, char* argv[]) INFO("METIS is running ..."); const std::string exe_name = argv[0]; const std::string exe_path = BaseLib::extractPath(exe_name); - INFO("Path to mpmetis is: \n\t%s", exe_path.c_str()); + INFO("Path to mpmetis is: \n\t{:s}", exe_path.c_str()); const std::string mpmetis_com = BaseLib::joinPaths(exe_path, "mpmetis") + " -gtype=nodal " + "'" + @@ -149,7 +146,7 @@ int main(int argc, char* argv[]) if (status != 0) { INFO("Failed in system calling."); - INFO("Return value of system call %d ", status); + INFO("Return value of system call {:d} ", status); return EXIT_FAILURE; } } @@ -168,7 +165,7 @@ int main(int argc, char* argv[]) { std::unique_ptr<MeshLib::Mesh> mesh( MeshLib::IO::readMeshFromFile(filename)); - INFO("Mesh '%s' from file '%s' read: %d nodes, %d elements.", + INFO("Mesh '{:s}' from file '{:s}' read: {:d} nodes, {:d} elements.", mesh->getName().c_str(), filename.c_str(), mesh->getNumberOfNodes(), mesh->getNumberOfElements()); @@ -205,8 +202,8 @@ int main(int argc, char* argv[]) mesh_partitioner.writeBinary(output_file_name_wo_extension); } - INFO("Total runtime: %g s.", run_timer.elapsed()); - INFO("Total CPU time: %g s.", CPU_timer.elapsed()); + INFO("Total runtime: {:g} s.", run_timer.elapsed()); + INFO("Total CPU time: {:g} s.", CPU_timer.elapsed()); return EXIT_SUCCESS; } diff --git a/Applications/Utils/ModelPreparation/convertVtkDataArrayToVtkDataArray.cpp b/Applications/Utils/ModelPreparation/convertVtkDataArrayToVtkDataArray.cpp index 86f7babd067654b3075f231ac0ff8ed70b39f18f..3353c2838da9fcc9a6baf71af1bd4b2780fc1102 100644 --- a/Applications/Utils/ModelPreparation/convertVtkDataArrayToVtkDataArray.cpp +++ b/Applications/Utils/ModelPreparation/convertVtkDataArrayToVtkDataArray.cpp @@ -15,8 +15,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "MeshLib/IO/readMeshFromFile.h" @@ -56,8 +54,6 @@ std::pair<bool, std::string> castPropertyVectorToPropertyVector( int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Converts a double or floating point cell data array of a vtk " "unstructured grid into a int or double cell data array.\n\n" @@ -156,7 +152,7 @@ int main(int argc, char* argv[]) if (!success) { - ERR("%s", err_msg.c_str()); + ERR("{:s}", err_msg.c_str()); return -1; } diff --git a/Applications/Utils/ModelPreparation/createNeumannBc.cpp b/Applications/Utils/ModelPreparation/createNeumannBc.cpp index 8fbc92b3bad2e213b5bfef704ea75efef68f5041..d1d00e853d93b3f5353d494af1c9d9460d0b16fe 100644 --- a/Applications/Utils/ModelPreparation/createNeumannBc.cpp +++ b/Applications/Utils/ModelPreparation/createNeumannBc.cpp @@ -10,7 +10,6 @@ #include <fstream> #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "MeshLib/Elements/Element.h" #include "MeshLib/IO/readMeshFromFile.h" @@ -40,7 +39,7 @@ std::vector<double> getSurfaceIntegratedValuesForNodes( if (!mesh.getProperties().existsPropertyVector<double>(prop_name)) { - ERR("Need element property, but the property '%s' is not " + ERR("Need element property, but the property '{:s}' is not " "available.", prop_name.c_str()); return std::vector<double>(); @@ -67,15 +66,13 @@ std::vector<double> getSurfaceIntegratedValuesForNodes( integrated_node_area_vec.push_back(integrated_node_area); } - INFO ("Total surface area: %g", total_area); + INFO("Total surface area: {:g}", total_area); return integrated_node_area_vec; } int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logo_setup; - TCLAP::CmdLine cmd( "Integrates the given element property and outputs an OGS-5 direct " "Neumann boundary condition. The mesh has to contain a property " @@ -142,7 +139,7 @@ int main(int argc, char* argv[]) } catch (std::runtime_error const& e) { - WARN("%s", e.what()); + WARN("{:s}", e.what()); return nullptr; } }(); diff --git a/Applications/Utils/ModelPreparation/scaleProperty.cpp b/Applications/Utils/ModelPreparation/scaleProperty.cpp index 3f271338bdacafb83c3e766dcd41b4c8ff840f1d..50dd95f0a4c1209ffcaa7a73d7a5cf109e3c0d11 100644 --- a/Applications/Utils/ModelPreparation/scaleProperty.cpp +++ b/Applications/Utils/ModelPreparation/scaleProperty.cpp @@ -15,7 +15,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "MeshLib/IO/readMeshFromFile.h" #include "MeshLib/IO/writeMeshToFile.h" @@ -23,8 +22,6 @@ int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logo_setup; - TCLAP::CmdLine cmd( "Scales a property of a mesh.\n\n" "OpenGeoSys-6 software, version " + diff --git a/Applications/Utils/OGSFileConverter/main.cpp b/Applications/Utils/OGSFileConverter/main.cpp index cba8f51a3728045c1810c744a066ae2422c87b4f..e24dfec5ec127aab5dc877f2cc0fbacd88340a54 100644 --- a/Applications/Utils/OGSFileConverter/main.cpp +++ b/Applications/Utils/OGSFileConverter/main.cpp @@ -10,19 +10,14 @@ #include "OGSFileConverter.h" #include <clocale> - #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" - #include <QApplication> int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "A conversion tool for ogs5 and ogs6 files.\n\n" "OpenGeoSys-6 software, version " + diff --git a/Applications/Utils/PostProcessing/postLIE.cpp b/Applications/Utils/PostProcessing/postLIE.cpp index 4c043b9ca31025d3125575c3930327e2c55fc740..6befe24640c001ca249d98cd078e1d21123fa9c4 100644 --- a/Applications/Utils/PostProcessing/postLIE.cpp +++ b/Applications/Utils/PostProcessing/postLIE.cpp @@ -15,7 +15,6 @@ #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/xml_parser.hpp> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" #include "MeshLib/IO/readMeshFromFile.h" @@ -61,7 +60,7 @@ void postVTU(std::string const& int_vtu_filename, vec_junction_nodeID_matIDs); // create a new VTU file - INFO("create %s", out_vtu_filename.c_str()); + INFO("create {:s}", out_vtu_filename.c_str()); MeshLib::IO::writeMeshToFile(post.getOutputMesh(), out_vtu_filename); } @@ -70,7 +69,7 @@ void postPVD(std::string const& in_pvd_filename, { auto const in_pvd_file_dir = BaseLib::extractPath(in_pvd_filename); auto const out_pvd_file_dir = BaseLib::extractPath(out_pvd_filename); - INFO("start reading the PVD file %s", in_pvd_filename.c_str()); + INFO("start reading the PVD file {:s}", in_pvd_filename.c_str()); boost::property_tree::ptree pt; read_xml(in_pvd_filename, pt, boost::property_tree::xml_parser::trim_whitespace); @@ -94,7 +93,7 @@ void postPVD(std::string const& in_pvd_filename, } auto const org_vtu_filepath = BaseLib::joinPaths(org_vtu_dir, org_vtu_filebasename); - INFO("processing %s...", org_vtu_filepath.c_str()); + INFO("processing {:s}...", org_vtu_filepath.c_str()); // post-process the VTU and save into the new file auto const dest_vtu_filename = "post_" + org_vtu_filebasename; @@ -107,7 +106,7 @@ void postPVD(std::string const& in_pvd_filename, } // save into the new PVD file - INFO("save into the new PVD file %s", out_pvd_filename.c_str()); + INFO("save into the new PVD file {:s}", out_pvd_filename.c_str()); boost::property_tree::xml_writer_settings<std::string> settings('\t', 1); write_xml(out_pvd_filename, pt, std::locale(), settings); } @@ -116,8 +115,6 @@ void postPVD(std::string const& in_pvd_filename, int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Post-process results of the LIE approach.\n\n" "OpenGeoSys-6 software, version " + @@ -148,7 +145,7 @@ int main(int argc, char* argv[]) } else { - OGS_FATAL("The given file type (%s) is not supported.", + OGS_FATAL("The given file type ({:s}) is not supported.", in_file_ext.c_str()); } diff --git a/Applications/Utils/SWMMConverter/SWMMConverter.cpp b/Applications/Utils/SWMMConverter/SWMMConverter.cpp index e6a3ff4270d5a81b020e54107586362736436ad3..d1f4cf4c0366eed03f0e5d6da5b69ae6137239bc 100644 --- a/Applications/Utils/SWMMConverter/SWMMConverter.cpp +++ b/Applications/Utils/SWMMConverter/SWMMConverter.cpp @@ -10,8 +10,6 @@ #include "Applications/FileIO/SWMM/SWMMInterface.h" -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -83,7 +81,7 @@ int writeMeshOutput(std::string const& input_file, std::string const extension = std::string("." + BaseLib::getFileExtension(output_file)); std::size_t const n_time_steps(swmm->getNumberOfTimeSteps()); - INFO("Number of simulation time steps: %d", n_time_steps); + INFO("Number of simulation time steps: {:d}", n_time_steps); for (std::size_t i = 0; i < n_time_steps; i++) { if (node_args) @@ -166,8 +164,6 @@ int writeCsvOutput(std::string input_file, int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup setup; - TCLAP::CmdLine cmd( "Read files for the Storm Water Management Model (SWMM) and converts " "them into OGS data structures.\n\n" diff --git a/Applications/Utils/SimpleMeshCreation/createMeshElemPropertiesFromASCRaster.cpp b/Applications/Utils/SimpleMeshCreation/createMeshElemPropertiesFromASCRaster.cpp index 1b05df5ba3a091f7f18ef74078be9a7d01d57319..3a103ca06e6bc1ab406f6d18d34f623391dae6fa 100644 --- a/Applications/Utils/SimpleMeshCreation/createMeshElemPropertiesFromASCRaster.cpp +++ b/Applications/Utils/SimpleMeshCreation/createMeshElemPropertiesFromASCRaster.cpp @@ -16,7 +16,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/FileIO/AsciiRasterInterface.h" #include "InfoLib/GitInfo.h" #include "BaseLib/FileTools.h" @@ -34,8 +33,6 @@ int main(int argc, char* argv[]) { - ApplicationsLib::LogogSetup logo_setup; - TCLAP::CmdLine cmd( "Generates properties for mesh elements of an input mesh deploying a " "ASC raster file.\n\n" diff --git a/Applications/Utils/SimpleMeshCreation/generateStructuredMesh.cpp b/Applications/Utils/SimpleMeshCreation/generateStructuredMesh.cpp index e2dd122cbfe731f3acd97dc48b03640579ae25c1..f9495fadf000e2fa884c266af467e1f15a281bfb 100644 --- a/Applications/Utils/SimpleMeshCreation/generateStructuredMesh.cpp +++ b/Applications/Utils/SimpleMeshCreation/generateStructuredMesh.cpp @@ -13,8 +13,6 @@ #include <tclap/CmdLine.h> -#include "Applications/ApplicationsLib/LogogSetup.h" - #include "InfoLib/GitInfo.h" #include "BaseLib/Error.h" #include "BaseLib/Subdivision.h" @@ -59,8 +57,6 @@ unsigned getDimension(MeshLib::MeshElemType eleType) int main (int argc, char* argv[]) { - ApplicationsLib::LogogSetup logog_setup; - TCLAP::CmdLine cmd( "Structured mesh generator.\n" "The documentation is available at " @@ -165,7 +161,7 @@ int main (int argc, char* argv[]) { if (dim_used[i] && !vec_lengthArg[i]->isSet()) { - ERR("Missing input: Length for dimension [%d] is required but " + ERR("Missing input: Length for dimension [{:d}] is required but " "missing.", i); return EXIT_FAILURE; @@ -235,7 +231,8 @@ int main (int argc, char* argv[]) if (mesh) { - INFO("Mesh created: %d nodes, %d elements.", mesh->getNumberOfNodes(), mesh->getNumberOfElements()); + INFO("Mesh created: {:d} nodes, {:d} elements.", + mesh->getNumberOfNodes(), mesh->getNumberOfElements()); // write into a file MeshLib::IO::writeMeshToFile(*(mesh.get()), mesh_out.getValue()); diff --git a/BaseLib/Algorithm.h b/BaseLib/Algorithm.h index 84d867bc065dbc09075b779944ed32d1c10b94f5..38461a984ccb67928d67026f848e8e4021a45d98 100644 --- a/BaseLib/Algorithm.h +++ b/BaseLib/Algorithm.h @@ -15,7 +15,9 @@ #include <cassert> #include <typeindex> #include <typeinfo> + #include "Error.h" +#include "StringTools.h" namespace BaseLib { @@ -72,7 +74,7 @@ typename std::iterator_traits<InputIt>::reference findElementOrError( auto it = std::find_if(begin, end, predicate); if (it == end) { - OGS_FATAL("Element not found in the input range; %s", error.c_str()); + OGS_FATAL("Element not found in the input range; {:s}", error.c_str()); } return *it; } @@ -91,7 +93,7 @@ void insertIfTypeIndexKeyUniqueElseError(Map& map, Key const& key, auto const inserted = map.emplace(key, std::forward<Value>(value)); if (!inserted.second) { // insertion failed, i.e., key already exists - OGS_FATAL("%s Key `%s' already exists.", error_message.c_str(), + OGS_FATAL("{:s} Key `{:s}' already exists.", error_message.c_str(), tostring(key.hash_code()).c_str()); } } @@ -108,7 +110,7 @@ void insertIfKeyUniqueElseError(Map& map, Key const& key, Value&& value, auto const inserted = map.emplace(key, std::forward<Value>(value)); if (!inserted.second) { // insertion failed, i.e., key already exists - OGS_FATAL("%s Key `%s' already exists.", error_message.c_str(), + OGS_FATAL("{:s} Key `{:s}' already exists.", error_message.c_str(), tostring(key).c_str()); } } @@ -127,14 +129,14 @@ void insertIfKeyValueUniqueElseError(Map& map, Key const& key, Value&& value, if (std::find_if(map.cbegin(), map.cend(), value_compare) != map.cend()) { - OGS_FATAL("%s Value `%s' already exists.", error_message.c_str(), + OGS_FATAL("{:s} Value `{:s}' already exists.", error_message.c_str(), tostring(value).c_str()); } auto const inserted = map.emplace(key, std::forward<Value>(value)); if (!inserted.second) { // insertion failed, i.e., key already exists - OGS_FATAL("%s Key `%s' already exists.", error_message.c_str(), + OGS_FATAL("{:s} Key `{:s}' already exists.", error_message.c_str(), tostring(key).c_str()); } } @@ -151,7 +153,7 @@ typename Map::mapped_type& getOrError(Map& map, Key const& key, auto it = map.find(key); if (it == map.end()) { - OGS_FATAL("%s Key `%s' does not exist.", error_message.c_str(), + OGS_FATAL("{:s} Key `{:s}' does not exist.", error_message.c_str(), tostring(key).c_str()); } @@ -165,7 +167,7 @@ typename Map::mapped_type const& getOrError(Map const& map, Key const& key, auto it = map.find(key); if (it == map.end()) { - OGS_FATAL("%s Key `%s' does not exist.", error_message.c_str(), + OGS_FATAL("{:s} Key `{:s}' does not exist.", error_message.c_str(), tostring(key).c_str()); } @@ -184,7 +186,7 @@ typename Container::value_type const& getIfOrError( auto it = std::find_if(begin(container), end(container), predicate); if (it == end(container)) { - OGS_FATAL("Could not find element matching the predicate: %s", + OGS_FATAL("Could not find element matching the predicate: {:s}", error_message.c_str()); } return *it; diff --git a/BaseLib/CMakeLists.txt b/BaseLib/CMakeLists.txt index 390520d234a74081c506cc959b4b382fb42376d6..3e2485215a2c67598048e5f1588440fd83c3da47 100644 --- a/BaseLib/CMakeLists.txt +++ b/BaseLib/CMakeLists.txt @@ -8,7 +8,9 @@ endif() # Create the library ogs_add_library(BaseLib ${SOURCES}) -target_link_libraries(BaseLib PUBLIC logog Boost::boost) +target_link_libraries( + BaseLib + PUBLIC Boost::boost spdlog::spdlog) if(MSVC) target_link_libraries(BaseLib PUBLIC WinMM) # needed for timeGetTime diff --git a/BaseLib/ConfigTree.cpp b/BaseLib/ConfigTree.cpp index a678b9da581e670c40b8ffb67d5f286b9ebceed5..a5c52150ca6c394095eb48f1ebd7d9fb8545bad2 100644 --- a/BaseLib/ConfigTree.cpp +++ b/BaseLib/ConfigTree.cpp @@ -11,8 +11,8 @@ #include "ConfigTree.h" #include <forward_list> -#include <logog/include/logog.hpp> #include <utility> +#include "Logging.h" #include "Error.h" @@ -85,7 +85,7 @@ ConfigTree::~ConfigTree() try { checkAndInvalidate(); } catch (std::exception& e) { - ERR("%s", e.what()); + ERR("{:s}", e.what()); configtree_destructor_error_messages.push_front(e.what()); } } @@ -232,15 +232,15 @@ void ConfigTree::warning(const std::string& message) const void ConfigTree::onerror(const std::string& filename, const std::string& path, const std::string& message) { - OGS_FATAL("ConfigTree: In file `%s' at path <%s>: %s", - filename.c_str(), path.c_str(), message.c_str()); + OGS_FATAL("ConfigTree: In file `{:s}' at path <{:s}>: {:s}", + filename.c_str(), path.c_str(), message.c_str()); } void ConfigTree::onwarning(const std::string& filename, const std::string& path, const std::string& message) { - WARN("ConfigTree: In file `%s' at path <%s>: %s", - filename.c_str(), path.c_str(), message.c_str()); + WARN("ConfigTree: In file `{:s}' at path <{:s}>: {:s}", filename.c_str(), + path.c_str(), message.c_str()); } void ConfigTree::assertNoSwallowedErrors() @@ -254,7 +254,7 @@ void ConfigTree::assertNoSwallowedErrors() "file(s):"); for (auto const& msg : configtree_destructor_error_messages) { - ERR("%s", msg.c_str()); + ERR("{:s}", msg.c_str()); } OGS_FATAL("There have been errors when parsing the configuration file(s)."); diff --git a/BaseLib/ConfigTreeUtil.cpp b/BaseLib/ConfigTreeUtil.cpp index 6a6d060bc4bdb10119d9d04485cb45dd8fc4ef99..3e41ee6fb251afb9978651c90a82789b5d60353e 100644 --- a/BaseLib/ConfigTreeUtil.cpp +++ b/BaseLib/ConfigTreeUtil.cpp @@ -11,7 +11,7 @@ #include "ConfigTreeUtil.h" #include <boost/property_tree/xml_parser.hpp> -#include <logog/include/logog.hpp> +#include "Logging.h" #include "Error.h" @@ -63,17 +63,17 @@ makeConfigTree(const std::string& filepath, const bool be_ruthless, } catch (boost::property_tree::xml_parser_error const& e) { - OGS_FATAL("Error while parsing XML file `%s' at line %lu: %s.", + OGS_FATAL("Error while parsing XML file `{:s}' at line {:d}: {:s}.", e.filename().c_str(), e.line(), e.message().c_str()); } - DBUG("Project configuration from file '%s' read.", filepath.c_str()); + DBUG("Project configuration from file '{:s}' read.", filepath.c_str()); if (auto child = ptree.get_child_optional(toplevel_tag)) { return ConfigTreeTopLevel(filepath, be_ruthless, std::move(*child)); } - OGS_FATAL("Tag <%s> has not been found in file `%s'.", toplevel_tag.c_str(), - filepath.c_str()); + OGS_FATAL("Tag <{:s}> has not been found in file `{:s}'.", + toplevel_tag.c_str(), filepath.c_str()); } } // namespace BaseLib diff --git a/BaseLib/DateTools.cpp b/BaseLib/DateTools.cpp index 16be485ee3a932cc30625ccfcf065cba7ccc627d..973244a4307776fae32c6389661930f296259dae 100644 --- a/BaseLib/DateTools.cpp +++ b/BaseLib/DateTools.cpp @@ -19,7 +19,7 @@ #include <ctime> #include <sstream> -#include <logog/include/logog.hpp> +#include "Logging.h" namespace BaseLib { diff --git a/BaseLib/Error.h b/BaseLib/Error.h index e10b793ac1f3388c3c57359039dc6e3cef875ea4..e4fce46b5754f0ec2bc3b47b3f0a60047d1b4c7c 100644 --- a/BaseLib/Error.h +++ b/BaseLib/Error.h @@ -10,57 +10,23 @@ #pragma once -#ifdef OGS_FATAL_ABORT - #include <cstdlib> -#include <logog/include/logog.hpp> - -namespace BaseLib -{ -namespace detail -{ -template <typename Msg> -[[noreturn]] - bool error_impl(Msg&& msg) -{ - ERR("%s", msg.data()); - std::abort(); -} - -} // namespace detail - -} // namespace BaseLib +#include "Logging.h" +#ifdef OGS_FATAL_ABORT +#define OGS_FATAL(...) \ + { \ + BaseLib::console->critical("{}:{} {}() ", __FILE__, __LINE__, \ + __FUNCTION__, fmt::format(__VA_ARGS__)); \ + std::abort(); \ + } #else // OGS_FATAL_ABORT - #include <stdexcept> - -namespace BaseLib -{ -namespace detail -{ -template <typename Msg> -[[noreturn]] - bool error_impl(Msg&& msg) -{ - throw std::runtime_error(std::forward<Msg>(msg)); -} - -} // namespace detail - -} // namespace BaseLib - +#define OGS_FATAL(...) \ + { \ + BaseLib::console->critical("{}:{} {}() ", __FILE__, __LINE__, \ + __FUNCTION__, fmt::format(__VA_ARGS__)); \ + throw std::runtime_error(fmt::format(__VA_ARGS__)); \ + } #endif // OGS_FATAL_ABORT -#include "FileTools.h" -#include "StringTools.h" - -#define OGS_STR(x) #x -#define OGS_STRINGIFY(x) OGS_STR(x) -#define OGS_LOCATION \ - (" at " + BaseLib::extractBaseName(__FILE__) + \ - ", line " OGS_STRINGIFY(__LINE__)) - -#define OGS_FATAL(fmt, ...) \ - BaseLib::detail::error_impl(BaseLib::format(fmt, ##__VA_ARGS__) + \ - OGS_LOCATION) diff --git a/BaseLib/FileFinder.cpp b/BaseLib/FileFinder.cpp index bfcd7ca812a972bc990a6abc0499069620d3887d..fb697517306ef6ef0e03890faeaa194a67f24699 100644 --- a/BaseLib/FileFinder.cpp +++ b/BaseLib/FileFinder.cpp @@ -16,8 +16,7 @@ #include <fstream> -#include <logog/include/logog.hpp> - +#include "Logging.h" namespace BaseLib { diff --git a/BaseLib/FileTools.cpp b/BaseLib/FileTools.cpp index 835635b1996cf87d95a03b0448701a3696450bbd..3f881e8c30291d5dc82bf7542e4e2afa64a95bf5 100644 --- a/BaseLib/FileTools.cpp +++ b/BaseLib/FileTools.cpp @@ -228,7 +228,7 @@ void removeFiles(std::vector<std::string> const& files) int const success = std::remove(file.c_str()); if (success == 0) { - DBUG("Removed '%s'", file.c_str()); + DBUG("Removed '{:s}'", file.c_str()); } else { @@ -236,7 +236,7 @@ void removeFiles(std::vector<std::string> const& files) { continue; } - ERR("Removing file '%s' failed with error %d.", file.c_str(), + ERR("Removing file '{:s}' failed with error {:d}.", file.c_str(), errno); std::perror("Error: "); OGS_FATAL("Unrecoverable error happened while removing a file."); diff --git a/BaseLib/FileTools.h b/BaseLib/FileTools.h index 33ce35c9af98196e042f5c4e0432178f66b03a82..008d40ac399bea5ba45ba7486f7ba1a77e0e66d4 100644 --- a/BaseLib/FileTools.h +++ b/BaseLib/FileTools.h @@ -18,7 +18,7 @@ #include <string> #include <vector> -#include <logog/include/logog.hpp> +#include "Logging.h" namespace BaseLib { @@ -75,9 +75,9 @@ std::vector<T> readBinaryArray(std::string const& filename, std::size_t const n) { std::ifstream in(filename.c_str()); if (!in) { - ERR("readBinaryArray(): Error while reading from file '%s'.", + ERR("readBinaryArray(): Error while reading from file '{:s}'.", filename.c_str()); - ERR("Could not open file '%s' for input.", filename.c_str()); + ERR("Could not open file '{:s}' for input.", filename.c_str()); in.close(); return std::vector<T>(); } @@ -95,9 +95,11 @@ std::vector<T> readBinaryArray(std::string const& filename, std::size_t const n) return result; } - ERR("readBinaryArray(): Error while reading from file '%s'.", + ERR("readBinaryArray(): Error while reading from file '{:s}'.", filename.c_str()); - ERR("Read different number of values. Expected %d, got %d.", n, result.size()); + ERR("Read different number of values. Expected {:d}, got {:d}.", + n, + result.size()); if (!in.eof()) ERR("EOF reached.\n"); diff --git a/BaseLib/Histogram.h b/BaseLib/Histogram.h index 0ee8c81a8166255da97c41bebd76096436f7c737..10666050f2eae4607fafdd4518c3a8d91cef691e 100644 --- a/BaseLib/Histogram.h +++ b/BaseLib/Histogram.h @@ -20,8 +20,7 @@ #include <utility> #include <vector> -#include <logog/include/logog.hpp> - +#include "Logging.h" namespace BaseLib { diff --git a/BaseLib/IO/Writer.cpp b/BaseLib/IO/Writer.cpp index 7c5c375c6e359326b2d2ec11aaf15e473a45324b..bd597a1e367d965623c0ad331da98ddcec48d436 100644 --- a/BaseLib/IO/Writer.cpp +++ b/BaseLib/IO/Writer.cpp @@ -17,7 +17,7 @@ #include <fstream> #include <limits> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" namespace BaseLib { @@ -54,7 +54,7 @@ int Writer::writeToFile(std::string const& filename) // check file stream if (!fileStream) { - ERR("Could not open file '%s'!", filename.c_str()); + ERR("Could not open file '{:s}'!", filename.c_str()); return 0; } diff --git a/BaseLib/IO/XmlIO/Qt/XMLQtInterface.cpp b/BaseLib/IO/XmlIO/Qt/XMLQtInterface.cpp index 1208448c2dbccb11e2b58c22a297303e81109cf3..f9b4a3b10fff958fcd5f6260736fb52de225f1a6 100644 --- a/BaseLib/IO/XmlIO/Qt/XMLQtInterface.cpp +++ b/BaseLib/IO/XmlIO/Qt/XMLQtInterface.cpp @@ -13,8 +13,6 @@ #include "XMLQtInterface.h" -#include <fstream> - #include <QByteArray> #include <QCoreApplication> #include <QCryptographicHash> @@ -23,10 +21,11 @@ #include <QXmlSchema> #include <QXmlSchemaValidator> #include <QXmlStreamReader> - -#include <logog/include/logog.hpp> +#include <fstream> #include <utility> +#include "BaseLib/Logging.h" + namespace BaseLib { namespace IO @@ -41,7 +40,8 @@ int XMLQtInterface::readFile(const QString &fileName) QFile file(fileName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { - ERR("XMLQtInterface::readFile(): Can't open xml-file %s.", fileName.toStdString().c_str()); + ERR("XMLQtInterface::readFile(): Can't open xml-file {:s}.", + fileName.toStdString().c_str()); return 0; } _fileData = file.readAll(); @@ -73,8 +73,8 @@ int XMLQtInterface::isValid() const } INFO( - "XMLQtInterface::isValid(): XML file %s is invalid (in reference " - "to schema %s).", + "XMLQtInterface::isValid(): XML file {:s} is invalid (in reference " + "to schema {:s}).", _fileName.toStdString().c_str(), _schemaFile.toStdString().c_str()); } else @@ -88,7 +88,7 @@ int XMLQtInterface::isValid() const } INFO( - "XMLQtInterface::isValid(): XML file %s is invalid (in reference " + "XMLQtInterface::isValid(): XML file {:s} is invalid (in reference " "to its schema).", _fileName.toStdString().c_str()); } diff --git a/BaseLib/Logging.cpp b/BaseLib/Logging.cpp new file mode 100644 index 0000000000000000000000000000000000000000..82e505757cc680f0ac49a82f1ccb67b434599fdf --- /dev/null +++ b/BaseLib/Logging.cpp @@ -0,0 +1,50 @@ +/** + * \file + * + * \copyright + * Copyright (c) 2012-2020, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#include "Logging.h" + +#include <spdlog/spdlog.h> +#include <spdlog/sinks/stdout_color_sinks.h> + +#include <map> + +#ifdef USE_PETSC +#include <mpi.h> +#include <petscsys.h> +#endif + +#include "Error.h" + +namespace BaseLib +{ +#ifdef USE_PETSC +std::shared_ptr<spdlog::logger> console = spdlog::stdout_color_mt("ogs"); +#else // USE_PETSC +std::shared_ptr<spdlog::logger> console = spdlog::stdout_color_st("ogs"); +#endif // USE_PETSC + +void setConsoleLogLevel(std::string const& level_string) +{ + using namespace spdlog::level; + std::map<std::string, level_enum> string_to_log_level = { + {"none", off}, {"critical", critical}, {"error", err}, {"warn", warn}, + {"info", info}, {"debug", debug}, {"all", trace}}; + + auto const level = string_to_log_level.find(level_string); + if (level == string_to_log_level.end()) + { + ERR("'{:s}' is not a valid log level!", level_string); + OGS_FATAL("Wrong log level string."); + } + console->set_level(level->second); + spdlog::set_default_logger(console); +} +} // namespace BaseLib diff --git a/BaseLib/Logging.h b/BaseLib/Logging.h new file mode 100644 index 0000000000000000000000000000000000000000..04fcd295e2c6bee72ace61b1ea13c44664899911 --- /dev/null +++ b/BaseLib/Logging.h @@ -0,0 +1,50 @@ +/** + * \file + * + * \copyright + * Copyright (c) 2012-2020, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#pragma once + +#include <spdlog/logger.h> + +#include <memory> +#include <string> + +namespace BaseLib +{ +extern std::shared_ptr<spdlog::logger> console; +void setConsoleLogLevel(std::string const& level_string); + +} // namespace BaseLib + +template <typename... Args> +void DBUG(char const* fmt, Args const&... args) +{ + BaseLib::console->debug(fmt, args...); +} +template <typename... Args> +void INFO(char const* fmt, Args const&... args) +{ + BaseLib::console->info(fmt, args...); +} +template <typename... Args> +void WARN(char const* fmt, Args const&... args) +{ + BaseLib::console->warn(fmt, args...); +} +template <typename... Args> +void ERR(char const* fmt, Args const&... args) +{ + BaseLib::console->error(fmt, args...); +} +template <typename... Args> +void CRITICAL(char const* fmt, Args const&... args) +{ + BaseLib::console->critical(fmt, args...); +} diff --git a/BaseLib/LogogCustomCout.h b/BaseLib/LogogCustomCout.h deleted file mode 100644 index 9bf7b8022c07d435d8d00f20440e8bb047f4d0bc..0000000000000000000000000000000000000000 --- a/BaseLib/LogogCustomCout.h +++ /dev/null @@ -1,69 +0,0 @@ -/** - * \file - * \copyright - * Copyright (c) 2012-2020, OpenGeoSys Community (http://www.opengeosys.org) - * Distributed under a Modified BSD License. - * See accompanying file LICENSE.txt or - * http://www.opengeosys.org/project/license - * - */ - -#pragma once - -#include <iostream> - -#include <logog/include/logog.hpp> - -#ifdef USE_MPI -#include <mpi.h> -#endif - -namespace BaseLib -{ - -/// Custom target for logog output -class LogogCustomCout : public logog::Target -{ -public: -#ifdef USE_MPI - /** - * Constructor when MPI is involved - * - * @param all_rank_output_level Minimum level to output messages from all MPI processes - * @param mpi_comm MPI communicator - */ - LogogCustomCout(LOGOG_LEVEL_TYPE all_rank_output_level = LOGOG_LEVEL_INFO, MPI_Comm mpi_comm = MPI_COMM_WORLD) - : _all_rank_output_level(all_rank_output_level), _is_rank0 (getRank(mpi_comm)==0) - {} -#endif - - virtual int Receive( const logog::Topic &topic ) - { -#ifdef USE_MPI - if (topic.Level() > _all_rank_output_level && !_is_rank0) - return 0; -#endif - return logog::Target::Receive(topic); - } - - virtual int Output( const LOGOG_STRING &data ) - { - LOGOG_COUT << (const LOGOG_CHAR *)data << std::flush; - return 0; - } - -private: -#ifdef USE_MPI - int getRank(MPI_Comm mpi_comm) const - { - int rank = 0; - MPI_Comm_rank(mpi_comm, &rank); - return rank; - } - - const LOGOG_LEVEL_TYPE _all_rank_output_level; - const bool _is_rank0; -#endif -}; - -} // namespace BaseLib diff --git a/BaseLib/LogogSimpleFormatter.h b/BaseLib/LogogSimpleFormatter.h deleted file mode 100644 index 1bde2a5b43ec758ef339e9297f374f2659bd45fc..0000000000000000000000000000000000000000 --- a/BaseLib/LogogSimpleFormatter.h +++ /dev/null @@ -1,35 +0,0 @@ -/** - * \file - * \author Lars Bilke - * \date 2012-09-13 - * \brief Definition of the LogogSimpleFormatter class. - * - * \copyright - * Copyright (c) 2012-2020, OpenGeoSys Community (http://www.opengeosys.org) - * Distributed under a Modified BSD License. - * See accompanying file LICENSE.txt or - * http://www.opengeosys.org/project/license - * - */ - -#pragma once - -#include <logog/include/logog.hpp> - -namespace BaseLib -{ -/** - * \brief LogogSimpleFormatter strips file name and line number from logog - * output. - * See http://johnwbyrd.github.com/logog/customformatting.html for details. - **/ -class LogogSimpleFormatter : public logog::FormatterMSVC -{ - TOPIC_FLAGS GetTopicFlags(const logog::Topic& topic) override - { - return (logog::Formatter::GetTopicFlags(topic) & - ~(TOPIC_FILE_NAME_FLAG | TOPIC_LINE_NUMBER_FLAG)); - } -}; - -} // namespace BaseLib diff --git a/BaseLib/StringTools.cpp b/BaseLib/StringTools.cpp index 4faa7ee99099187b88bf4a2c7f7d1c624073c021..d420900d1407bbee2ff467c8746face319cb5164 100644 --- a/BaseLib/StringTools.cpp +++ b/BaseLib/StringTools.cpp @@ -21,8 +21,8 @@ #include <cstdarg> #include <cstdio> #include <iomanip> -#include <logog/include/logog.hpp> #include <random> +#include "Logging.h" namespace BaseLib { @@ -125,4 +125,4 @@ std::string randomString(std::size_t const length) return s; } -} // end namespace BaseLib +} // end namespace BaseLib diff --git a/BaseLib/StringTools.h b/BaseLib/StringTools.h index ebaa82e523b920d6b4b67db9ccff7407bf834d2d..62f9c5600264d2d7a965899de09873da9807acfb 100644 --- a/BaseLib/StringTools.h +++ b/BaseLib/StringTools.h @@ -80,9 +80,6 @@ template<typename T> std::string tostring(T const& value) //! \overload std::string const& tostring(std::string const& value); -//! returns printf-like formatted string -std::string format(const char* format_string, ... ); - //! Returns a random string of the given length containing just a-z,A-Z,0-9 std::string randomString(std::size_t length); diff --git a/BaseLib/Subdivision.cpp b/BaseLib/Subdivision.cpp index 7fb36ee5ba58739f7a988d8b35b2a9986cbbfa34..22284ee49441981db9c09de6ea5d83a8476afb1a 100644 --- a/BaseLib/Subdivision.cpp +++ b/BaseLib/Subdivision.cpp @@ -27,8 +27,8 @@ GradualSubdivision::GradualSubdivision(const double L, // Cf. geometric series formula. if (multiplier < 1.0 && dL0 / (1.0 - multiplier) < L) { OGS_FATAL( - "Using dL0=%g and multiplier=%g the generated subdivisions can not " - "sum up to a total length of %g.", + "Using dL0={:g} and multiplier={:g} the generated subdivisions can " + "not sum up to a total length of {:g}.", dL0, multiplier, L); diff --git a/BaseLib/TemplateLogogFormatterSuppressedGCC-impl.h b/BaseLib/TemplateLogogFormatterSuppressedGCC-impl.h deleted file mode 100644 index 9ddde3750419db9f65fa162841882103002be061..0000000000000000000000000000000000000000 --- a/BaseLib/TemplateLogogFormatterSuppressedGCC-impl.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * \file - * \copyright - * Copyright (c) 2012-2020, OpenGeoSys Community (http://www.opengeosys.org) - * Distributed under a Modified BSD License. - * See accompanying file LICENSE.txt or - * http://www.opengeosys.org/project/license - * - */ - -namespace BaseLib { - -#ifdef USE_MPI -template <int T_SUPPPRESS_TOPIC_FLAG> -TemplateLogogFormatterSuppressedGCC<T_SUPPPRESS_TOPIC_FLAG> -::TemplateLogogFormatterSuppressedGCC(MPI_Comm mpi_comm) -{ - int rank = 0; - MPI_Comm_rank(mpi_comm, &rank); - _str_mpi_rank = "[" + std::to_string(rank) + "] "; -} -#endif - -template <int T_SUPPPRESS_TOPIC_FLAG> -LOGOG_STRING & -TemplateLogogFormatterSuppressedGCC<T_SUPPPRESS_TOPIC_FLAG> -::Format( const logog::Topic &topic, const logog::Target &target ) -{ - TOPIC_FLAGS flags; - flags = GetTopicFlags( topic ); - - m_sMessageBuffer.clear(); - -#ifdef USE_MPI - m_sMessageBuffer.append(_str_mpi_rank.c_str()); -#endif - - if ( flags & TOPIC_FILE_NAME_FLAG ) - { - m_sMessageBuffer.append( topic.FileName() ); - m_sMessageBuffer.append( ':' ); - } - - if ( flags & TOPIC_LINE_NUMBER_FLAG ) - { - m_sIntBuffer.assign( topic.LineNumber() ); - m_sMessageBuffer.append( m_sIntBuffer ); - - m_sMessageBuffer.append( LOGOG_CONST_STRING(": ")); - } - - RenderTimeOfDay(); - - if ( flags & TOPIC_LEVEL_FLAG ) - { - m_sMessageBuffer.append( ErrorDescription( topic.Level())); - m_sMessageBuffer.append( LOGOG_CONST_STRING(": ")); - } - - if ( flags & TOPIC_GROUP_FLAG ) - { - m_sMessageBuffer.append( LOGOG_CONST_STRING("{") ); - m_sMessageBuffer.append( topic.Group() ); - m_sMessageBuffer.append( LOGOG_CONST_STRING("} ") ); - } - - if ( flags & TOPIC_CATEGORY_FLAG ) - { - m_sMessageBuffer.append( LOGOG_CONST_STRING("[")); - m_sMessageBuffer.append( topic.Category() ); - m_sMessageBuffer.append( LOGOG_CONST_STRING("] ")); - } - - if ( flags & TOPIC_MESSAGE_FLAG ) - { - m_sMessageBuffer.append( topic.Message() ); - m_sMessageBuffer.append( (LOGOG_CHAR)'\n' ); - } - - if (target.GetNullTerminatesStrings()) - { - m_sMessageBuffer.append((LOGOG_CHAR)'\0'); - } - - return m_sMessageBuffer; -} - -} // namespace BaseLib diff --git a/BaseLib/TemplateLogogFormatterSuppressedGCC.h b/BaseLib/TemplateLogogFormatterSuppressedGCC.h deleted file mode 100644 index b3b9608b599e4cd39faf5cbbc28e887c29817273..0000000000000000000000000000000000000000 --- a/BaseLib/TemplateLogogFormatterSuppressedGCC.h +++ /dev/null @@ -1,58 +0,0 @@ -/** - * \file - * \author Norihiro Watanabe - * \date 2012-12-06 - * \brief Definition of the TemplateLogogFormatterSuppressedGCC class. - * - * \copyright - * Copyright (c) 2012-2020, OpenGeoSys Community (http://www.opengeosys.org) - * Distributed under a Modified BSD License. - * See accompanying file LICENSE.txt or - * http://www.opengeosys.org/project/license - * - */ - -#pragma once - -#include <string> - -#include <logog/include/logog.hpp> -#ifdef USE_MPI -#include <mpi.h> -#endif - -#include "StringTools.h" - -namespace BaseLib { - -/** - * \brief TemplateLogogFormatterSuppressedGCC strips topics given as a template - * parameter from logog::FormatterGCC. - * See http://johnwbyrd.github.com/logog/customformatting.html for details. - **/ -template <int T_SUPPPRESS_TOPIC_FLAG> -class TemplateLogogFormatterSuppressedGCC : public logog::FormatterGCC -{ -public: -#ifdef USE_MPI - TemplateLogogFormatterSuppressedGCC(MPI_Comm mpi_comm = MPI_COMM_WORLD); -#endif - - TOPIC_FLAGS GetTopicFlags(const logog::Topic& topic) override - { - return ( logog::Formatter::GetTopicFlags( topic ) & - ~( T_SUPPPRESS_TOPIC_FLAG )); - } - - LOGOG_STRING& Format(const logog::Topic& topic, - const logog::Target& target) override; - -private: -#ifdef USE_MPI - std::string _str_mpi_rank; -#endif -}; - -} // namespace BaseLib - -#include "TemplateLogogFormatterSuppressedGCC-impl.h" diff --git a/CMakeLists.txt b/CMakeLists.txt index 3356098886cbcbaee6bb967182d5c8bb2c43f1f5..9a996686f90cde6ab2e3860a8d36d43e1e41ed82 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -263,7 +263,8 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/autocheck/include ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/tclap/include ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/json/include - ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/exprtk) + ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/exprtk + ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/spdlog/include) # vtkdiff if(EXISTS ${PROJECT_SOURCE_DIR}/ThirdParty/vtkdiff/CMakeLists.txt) diff --git a/ChemistryLib/CMakeLists.txt b/ChemistryLib/CMakeLists.txt index c9461b3baf5d5ba82546619c79a1da8898b5fec5..d55cdfa247fd7048a6f7f2824b4f06e8945bf4b6 100644 --- a/ChemistryLib/CMakeLists.txt +++ b/ChemistryLib/CMakeLists.txt @@ -10,6 +10,6 @@ ogs_add_library(ChemistryLib ${SOURCES}) include(GenerateExportHeader) generate_export_header(ChemistryLib) -target_link_libraries(ChemistryLib PUBLIC iphreeqc PRIVATE NumLib) +target_link_libraries(ChemistryLib PUBLIC iphreeqc PRIVATE NumLib spdlog::spdlog) set_target_properties(ChemistryLib PROPERTIES CXX_STANDARD 14) diff --git a/ChemistryLib/CreateChemicalSolverInterface.cpp b/ChemistryLib/CreateChemicalSolverInterface.cpp index 8259f50d7e2185626eb5105b515093f9a5ef6ced..a69a5f0d481504dcc06a953ab81befd0d242ba31 100644 --- a/ChemistryLib/CreateChemicalSolverInterface.cpp +++ b/ChemistryLib/CreateChemicalSolverInterface.cpp @@ -9,6 +9,10 @@ */ #include "CreateChemicalSolverInterface.h" + +#include <iphreeqc/src/src/phreeqcpp/cxxKinetics.h> + +#include "BaseLib/FileTools.h" #include "Common/CreateReactionRate.h" #include "MeshLib/Mesh.h" #include "PhreeqcIO.h" @@ -34,8 +38,6 @@ #include "PhreeqcKernelData/CreateKineticReactant.h" #include "PhreeqcKernelData/ReactionRate.h" -#include <iphreeqc/src/src/phreeqcpp/cxxKinetics.h> - namespace { std::string parseDatabasePath(BaseLib::ConfigTree const& config) @@ -48,11 +50,11 @@ std::string parseDatabasePath(BaseLib::ConfigTree const& config) if (!BaseLib::IsFileExisting(path_to_database)) { - OGS_FATAL("Not found the specified thermodynamicdatabase: %s", + OGS_FATAL("Not found the specified thermodynamicdatabase: {:s}", path_to_database.c_str()); } - INFO("Found the specified thermodynamic database: %s", + INFO("Found the specified thermodynamic database: {:s}", path_to_database.c_str()); return path_to_database; @@ -83,7 +85,8 @@ createChemicalSolverInterface<ChemicalSolver::Phreeqc>( "Required mesh with name '" + mesh_name + "' not found."); assert(mesh.getID() != 0); - DBUG("Found mesh '%s' with id %d.", mesh.getName().c_str(), mesh.getID()); + DBUG("Found mesh '{:s}' with id {:d}.", mesh.getName().c_str(), + mesh.getID()); auto path_to_database = parseDatabasePath(config); diff --git a/ChemistryLib/PhreeqcIO.cpp b/ChemistryLib/PhreeqcIO.cpp index 4c9c9198b6139b1e7846bc63ef72e45650605e09..c196dc4238087b835f68ec144737b777439bbe5f 100644 --- a/ChemistryLib/PhreeqcIO.cpp +++ b/ChemistryLib/PhreeqcIO.cpp @@ -8,14 +8,17 @@ * */ +#include "PhreeqcIO.h" + +#include <iphreeqc/src/src/IPhreeqc.h> + #include <boost/algorithm/string.hpp> #include <cmath> -#include <iostream> +#include <fstream> #include "BaseLib/Algorithm.h" #include "BaseLib/ConfigTreeUtil.h" #include "MeshLib/Mesh.h" -#include "PhreeqcIO.h" #include "PhreeqcIOData/AqueousSolution.h" #include "PhreeqcIOData/Dump.h" #include "PhreeqcIOData/EquilibriumReactant.h" @@ -26,8 +29,6 @@ #include "PhreeqcIOData/Surface.h" #include "PhreeqcIOData/UserPunch.h" -#include <iphreeqc/src/src/IPhreeqc.h> - namespace ChemistryLib { namespace PhreeqcIOData @@ -84,14 +85,14 @@ PhreeqcIO::PhreeqcIO(std::string const project_file_name, { OGS_FATAL( "Failed in loading the specified thermodynamic database file: " - "%s.", + "{:s}.", _database.c_str()); } if (SetSelectedOutputFileOn(phreeqc_instance_id, 1) != IPQ_OK) { OGS_FATAL( - "Failed to fly the flag for the specified file %s where phreeqc " + "Failed to fly the flag for the specified file {:s} where phreeqc " "will write output.", _output->basic_output_setups.output_file.c_str()); } @@ -229,7 +230,8 @@ void PhreeqcIO::setAqueousSolutionsPrevFromDumpFile() std::ifstream in(dump_file); if (!in) { - OGS_FATAL("Could not open phreeqc dump file '%s'.", dump_file.c_str()); + OGS_FATAL("Could not open phreeqc dump file '{:s}'.", + dump_file.c_str()); } std::size_t const num_chemical_systems = _mesh.getNumberOfBaseNodes(); @@ -237,7 +239,7 @@ void PhreeqcIO::setAqueousSolutionsPrevFromDumpFile() if (!in) { - OGS_FATAL("Error when reading phreeqc dump file '%s'", + OGS_FATAL("Error when reading phreeqc dump file '{:s}'", dump_file.c_str()); } @@ -246,12 +248,13 @@ void PhreeqcIO::setAqueousSolutionsPrevFromDumpFile() void PhreeqcIO::writeInputsToFile(double const dt) { - DBUG("Writing phreeqc inputs into file '%s'.", _phreeqc_input_file.c_str()); + DBUG("Writing phreeqc inputs into file '{:s}'.", + _phreeqc_input_file.c_str()); std::ofstream out(_phreeqc_input_file, std::ofstream::out); if (!out) { - OGS_FATAL("Could not open file '%s' for writing phreeqc inputs.", + OGS_FATAL("Could not open file '{:s}' for writing phreeqc inputs.", _phreeqc_input_file.c_str()); } @@ -259,7 +262,7 @@ void PhreeqcIO::writeInputsToFile(double const dt) if (!out) { - OGS_FATAL("Failed in generating phreeqc input file '%s'.", + OGS_FATAL("Failed in generating phreeqc input file '{:s}'.", _phreeqc_input_file.c_str()); } @@ -373,7 +376,7 @@ void PhreeqcIO::execute() OutputErrorString(phreeqc_instance_id); OGS_FATAL( "Failed in performing speciation calculation with the generated " - "phreeqc input file '%s'.", + "phreeqc input file '{:s}'.", _phreeqc_input_file.c_str()); } } @@ -382,13 +385,13 @@ void PhreeqcIO::readOutputsFromFile() { auto const& basic_output_setups = _output->basic_output_setups; auto const& phreeqc_result_file = basic_output_setups.output_file; - DBUG("Reading phreeqc results from file '%s'.", + DBUG("Reading phreeqc results from file '{:s}'.", phreeqc_result_file.c_str()); std::ifstream in(phreeqc_result_file); if (!in) { - OGS_FATAL("Could not open phreeqc result file '%s'.", + OGS_FATAL("Could not open phreeqc result file '{:s}'.", phreeqc_result_file.c_str()); } @@ -396,7 +399,7 @@ void PhreeqcIO::readOutputsFromFile() if (!in) { - OGS_FATAL("Error when reading phreeqc result file '%s'", + OGS_FATAL("Error when reading phreeqc result file '{:s}'", phreeqc_result_file.c_str()); } @@ -436,7 +439,7 @@ std::istream& operator>>(std::istream& in, PhreeqcIO& phreeqc_io) if (!std::getline(in, line)) { OGS_FATAL( - "Error when reading calculation result of Solution %u after " + "Error when reading calculation result of Solution {:d} after " "the reaction.", global_id); } @@ -460,17 +463,20 @@ std::istream& operator>>(std::istream& in, PhreeqcIO& phreeqc_io) catch (const std::invalid_argument& e) { OGS_FATAL( - "Invalid argument. Could not convert string '%s' to " - "double for chemical system %d, column %d. Exception " - "'%s' was thrown.", + "Invalid argument. Could not convert string '{:s}' to " + "double for chemical system {:d}, column {:d}. " + "Exception " + "'{:s}' was thrown.", items[item_id].c_str(), global_id, item_id, e.what()); } catch (const std::out_of_range& e) { OGS_FATAL( - "Out of range error. Could not convert string '%s' to " - "double for chemical system %d, column %d. Exception " - "'%s' was thrown.", + "Out of range error. Could not convert string '{:s}' " + "to " + "double for chemical system {:d}, column {:d}. " + "Exception " + "'{:s}' was thrown.", items[item_id].c_str(), global_id, item_id, e.what()); } accepted_items.push_back(value); diff --git a/ChemistryLib/PhreeqcIOData/CreateSolutionComponent.cpp b/ChemistryLib/PhreeqcIOData/CreateSolutionComponent.cpp index 2801451193bf136b8fd5a1a54871fc0a4cbecd00..45b01d8e8696403e887ee6c5ef9e3e9022db3832 100644 --- a/ChemistryLib/PhreeqcIOData/CreateSolutionComponent.cpp +++ b/ChemistryLib/PhreeqcIOData/CreateSolutionComponent.cpp @@ -46,7 +46,8 @@ std::vector<Component> createSolutionComponents( process_id_to_component_name_map.end()) { OGS_FATAL( - "Component %s given in <solution>/<components> is not found in " + "Component {:s} given in <solution>/<components> is not found " + "in " "specified coupled processes (see " "<process>/<process_variables>/<concentration>).", component.name.c_str()); diff --git a/ChemistryLib/PhreeqcKernel.cpp b/ChemistryLib/PhreeqcKernel.cpp index fe545e63c62beb48670d67f9d316b2051721dc3e..5648119467f8249c8a0d51fab6026b9d8bb4351d 100644 --- a/ChemistryLib/PhreeqcKernel.cpp +++ b/ChemistryLib/PhreeqcKernel.cpp @@ -131,7 +131,7 @@ void PhreeqcKernel::loadDatabase(std::string const& database) std::ifstream in(database); if (!in) { - OGS_FATAL("Unable to open database file '%s'.", database.c_str()); + OGS_FATAL("Unable to open database file '{:s}'.", database.c_str()); } assert(phrq_io->get_istream() == nullptr); phrq_io->push_istream(&in, false); @@ -153,7 +153,7 @@ void PhreeqcKernel::reinitializeRates() malloc(sizeof(char) * reaction_rate.commands().size() + 1)); if (rates[rate_id].commands == nullptr) { - OGS_FATAL("Could not allocate memory for rate[%d] commands.", + OGS_FATAL("Could not allocate memory for rate[{:d}] commands.", rate_id); } reaction_rate.commands().copy(rates[rate_id].commands, diff --git a/ChemistryLib/PhreeqcKernelData/CreateInitialAqueousSolution.cpp b/ChemistryLib/PhreeqcKernelData/CreateInitialAqueousSolution.cpp index 8aa8d3e0778d96ac33ef1e3f91edf7d41cf96bd6..2afda65161f70ec86d64835f59065dee85c9f6aa 100644 --- a/ChemistryLib/PhreeqcKernelData/CreateInitialAqueousSolution.cpp +++ b/ChemistryLib/PhreeqcKernelData/CreateInitialAqueousSolution.cpp @@ -49,7 +49,8 @@ InitialAqueousSolution createInitialAqueousSolution( process_id_to_component_name_map.end()) { OGS_FATAL( - "Component %s given in <solution>/<components> is not found in " + "Component {:s} given in <solution>/<components> is not found " + "in " "specified coupled processes (see " "<process>/<process_variables>/<concentration>).", component.first.c_str()); diff --git a/GeoLib/AABB.h b/GeoLib/AABB.h index 49676faa835517fb729f4843bd100beaa4f1c8bc..0327145144ba58c963546f0a45d5a2734060cda6 100644 --- a/GeoLib/AABB.h +++ b/GeoLib/AABB.h @@ -24,8 +24,6 @@ #include <tuple> #include <vector> -#include <logog/include/logog.hpp> - #include "BaseLib/Error.h" #include "MathLib/Point3d.h" #include "MathLib/MathTools.h" diff --git a/GeoLib/AnalyticalGeometry.cpp b/GeoLib/AnalyticalGeometry.cpp index eb19bfb4b165366e65ae4361bb85e29dc2b227c1..51d13a3740753eda8887c344c716b7d9d96eec5a 100644 --- a/GeoLib/AnalyticalGeometry.cpp +++ b/GeoLib/AnalyticalGeometry.cpp @@ -18,7 +18,7 @@ #include <cmath> #include <limits> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <Eigen/Dense> @@ -440,7 +440,7 @@ std::vector<MathLib::Point3d> lineSegmentIntersect2d( err.precision(std::numeric_limits<double>::digits10); err << ab << " x " << cd; OGS_FATAL( - "The case of parallel line segments (%s) is not handled yet. " + "The case of parallel line segments ({:s}) is not handled yet. " "Aborting.", err.str().c_str()); } @@ -468,7 +468,7 @@ std::vector<MathLib::Point3d> lineSegmentIntersect2d( err.precision(std::numeric_limits<double>::digits10); err << ab << " x " << cd; OGS_FATAL( - "The case of parallel line segments (%s) " + "The case of parallel line segments ({:s}) " "is not handled yet. Aborting.", err.str().c_str()); } diff --git a/GeoLib/CMakeLists.txt b/GeoLib/CMakeLists.txt index d6118a16d65d19235b175101d982d910da32c201..0168f1789fab5c8822dc56b4d524539cfa7844bb 100644 --- a/GeoLib/CMakeLists.txt +++ b/GeoLib/CMakeLists.txt @@ -12,7 +12,7 @@ endif() # Create the library ogs_add_library(GeoLib ${SOURCES}) -target_link_libraries(GeoLib PUBLIC BaseLib MathLib logog PRIVATE tet) +target_link_libraries(GeoLib PUBLIC BaseLib MathLib PRIVATE tet spdlog::spdlog) if(OGS_BUILD_GUI) target_link_libraries(GeoLib PUBLIC Qt5::Xml Qt5::XmlPatterns) diff --git a/GeoLib/DuplicateGeometry.cpp b/GeoLib/DuplicateGeometry.cpp index c1ecc93560f89865d2c32c7306a250fbeffbf20f..85e1fd7db0450fdf914dd25efa8a53f19119b54f 100644 --- a/GeoLib/DuplicateGeometry.cpp +++ b/GeoLib/DuplicateGeometry.cpp @@ -10,8 +10,8 @@ #include "DuplicateGeometry.h" -#include <logog/include/logog.hpp> #include <utility> +#include "BaseLib/Logging.h" #include "GeoLib/GEOObjects.h" #include "GeoLib/Point.h" @@ -35,7 +35,7 @@ void DuplicateGeometry::duplicate(std::string const& input_name) std::vector<GeoLib::Point*> const*const pnts (_geo_objects.getPointVec(input_name)); if (pnts == nullptr) { - ERR("Geometry '%s' not found.", input_name.c_str()); + ERR("Geometry '{:s}' not found.", input_name.c_str()); return; } diff --git a/GeoLib/GEOObjects.cpp b/GeoLib/GEOObjects.cpp index 9ff9a848c754c72e6eeab22b9eab0928c1642681..b9dc4335b3128f0b9dfc929f96ebcf3e6dbfda3c 100644 --- a/GeoLib/GEOObjects.cpp +++ b/GeoLib/GEOObjects.cpp @@ -15,7 +15,7 @@ #include "GEOObjects.h" #include <fstream> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "Triangle.h" @@ -68,7 +68,7 @@ const std::vector<Point*>* GEOObjects::getPointVec(const std::string &name) cons return _pnt_vecs[idx]->getVector(); } - DBUG("GEOObjects::getPointVec() - No entry found with name '%s'.", + DBUG("GEOObjects::getPointVec() - No entry found with name '{:s}'.", name.c_str()); return nullptr; } @@ -81,7 +81,7 @@ const PointVec* GEOObjects::getPointVecObj(const std::string &name) const return _pnt_vecs[idx]; } - DBUG("GEOObjects::getPointVecObj() - No entry found with name '%s'.", + DBUG("GEOObjects::getPointVecObj() - No entry found with name '{:s}'.", name.c_str()); return nullptr; } @@ -104,7 +104,7 @@ bool GEOObjects::removePointVec(std::string const& name) return true; } } - DBUG("GEOObjects::removePointVec() - No entry found with name '%s'.", + DBUG("GEOObjects::removePointVec() - No entry found with name '{:s}'.", name.c_str()); return false; } @@ -129,7 +129,7 @@ const std::vector<GeoLib::Point*>* GEOObjects::getStationVec( { return (*it)->getVector(); } - DBUG("GEOObjects::getStationVec() - No entry found with name '%s'.", + DBUG("GEOObjects::getStationVec() - No entry found with name '{:s}'.", name.c_str()); return nullptr; } @@ -205,7 +205,7 @@ const std::vector<Polyline*>* GEOObjects::getPolylineVec(const std::string &name } } - DBUG("GEOObjects::getPolylineVec() - No entry found with name '%s'.", + DBUG("GEOObjects::getPolylineVec() - No entry found with name '{:s}'.", name.c_str()); return nullptr; } @@ -221,7 +221,7 @@ const PolylineVec* GEOObjects::getPolylineVecObj(const std::string &name) const } } - DBUG("GEOObjects::getPolylineVecObj() - No entry found with name '%s'.", + DBUG("GEOObjects::getPolylineVecObj() - No entry found with name '{:s}'.", name.c_str()); return nullptr; } @@ -239,7 +239,7 @@ bool GEOObjects::removePolylineVec(std::string const& name) } } - DBUG("GEOObjects::removePolylineVec() - No entry found with name '%s'.", + DBUG("GEOObjects::removePolylineVec() - No entry found with name '{:s}'.", name.c_str()); return false; } @@ -300,7 +300,7 @@ const std::vector<Surface*>* GEOObjects::getSurfaceVec(const std::string &name) return _sfc_vecs[i]->getVector(); } } - DBUG("GEOObjects::getSurfaceVec() - No entry found with name '%s'.", + DBUG("GEOObjects::getSurfaceVec() - No entry found with name '{:s}'.", name.c_str()); return nullptr; } @@ -318,7 +318,7 @@ bool GEOObjects::removeSurfaceVec(const std::string &name) } } - DBUG("GEOObjects::removeSurfaceVec() - No entry found with name '%s'.", + DBUG("GEOObjects::removeSurfaceVec() - No entry found with name '{:s}'.", name.c_str()); return false; } @@ -333,7 +333,7 @@ const SurfaceVec* GEOObjects::getSurfaceVecObj(const std::string &name) const return _sfc_vecs[i]; } } - DBUG("GEOObjects::getSurfaceVecObj() - No entry found with name '%s'.", + DBUG("GEOObjects::getSurfaceVecObj() - No entry found with name '{:s}'.", name.c_str()); return nullptr; } @@ -667,13 +667,13 @@ int GEOObjects::geoPointsToStations(std::string const& geo_name, GeoLib::PointVec const* const pnt_obj(getPointVecObj(geo_name)); if (pnt_obj == nullptr) { - ERR("Point vector %s not found.", geo_name.c_str()); + ERR("Point vector {:s} not found.", geo_name.c_str()); return -1; } std::vector<GeoLib::Point*> const& pnts = *pnt_obj->getVector(); if (pnts.empty()) { - ERR("Point vector %s is empty.", geo_name.c_str()); + ERR("Point vector {:s} is empty.", geo_name.c_str()); return -1; } std::size_t const n_pnts(pnts.size()); @@ -752,9 +752,11 @@ const GeoLib::GeoObject* GEOObjects::getGeoObject( }; if (!geo_obj) { - DBUG("GEOObjects::getGeoObject(): Could not find %s '%s' in geometry.", - GeoLib::convertGeoTypeToString(type).c_str(), - geo_obj_name.c_str()); + DBUG( + "GEOObjects::getGeoObject(): Could not find {:s} '{:s}' in " + "geometry.", + GeoLib::convertGeoTypeToString(type).c_str(), + geo_obj_name.c_str()); } return geo_obj; } @@ -780,8 +782,10 @@ GeoLib::GeoObject const* GEOObjects::getGeoObject( } if (!geo_obj) { - DBUG("GEOObjects::getGeoObject(): Could not find '%s' in geometry %s.", - geo_obj_name.c_str(), geo_name.c_str()); + DBUG( + "GEOObjects::getGeoObject(): Could not find '{:s}' in geometry " + "{:s}.", + geo_obj_name.c_str(), geo_name.c_str()); } return geo_obj; } diff --git a/GeoLib/Grid.h b/GeoLib/Grid.h index 8421aa96c44cc6e2054a443ec4c1eb46f2144b3d..8266d9efcae0f4c3fc5301249722b02bba6c6dc3 100644 --- a/GeoLib/Grid.h +++ b/GeoLib/Grid.h @@ -17,7 +17,7 @@ #include <bitset> #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" // GeoLib #include "AABB.h" @@ -225,9 +225,10 @@ Grid<POINT>::Grid(InputIterator first, InputIterator last, std::size_t const pos(coords[0]+coords[1]*_n_steps[0]+coords[2]*n_plane); _grid_cell_nodes_map[pos].push_back(const_cast<POINT*>(copyOrAddress(*it))); } else { - ERR("Grid constructor: error computing indices [%d, %d, %d], " - "max indices [%d, %d, %d].", coords[0], coords[1], coords[2], - _n_steps[0], _n_steps[1], _n_steps[2]); + ERR("Grid constructor: error computing indices [{:d}, {:d}, {:d}], " + "max indices [{:d}, {:d}, {:d}].", + coords[0], coords[1], coords[2], _n_steps[0], _n_steps[1], + _n_steps[2]); } it++; } diff --git a/GeoLib/IO/TINInterface.cpp b/GeoLib/IO/TINInterface.cpp index 7e4e44e01f474dcfc96576ab92c78fcb55c6c63e..5b109b3f7277dbff392a1aa335440e073c8a2752 100644 --- a/GeoLib/IO/TINInterface.cpp +++ b/GeoLib/IO/TINInterface.cpp @@ -11,7 +11,7 @@ #include <fstream> #include <limits> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -34,7 +34,7 @@ GeoLib::Surface* TINInterface::readTIN(std::string const& fname, // open file std::ifstream in(fname.c_str()); if (!in) { - WARN("readTIN(): could not open stream from %s.", fname.c_str()); + WARN("readTIN(): could not open stream from {:s}.", fname.c_str()); if (errors) { errors->push_back("readTINFile error opening stream from " + fname); @@ -66,7 +66,7 @@ GeoLib::Surface* TINInterface::readTIN(std::string const& fname, } // read first point if (!(input >> p0[0] >> p0[1] >> p0[2])) { - ERR("Could not read coords of 1st point of triangle %d.", id); + ERR("Could not read coords of 1st point of triangle {:d}.", id); if (errors) { errors->push_back( @@ -81,7 +81,7 @@ GeoLib::Surface* TINInterface::readTIN(std::string const& fname, } // read second point if (!(input >> p1[0] >> p1[1] >> p1[2])) { - ERR("Could not read coords of 2nd point of triangle %d.", id); + ERR("Could not read coords of 2nd point of triangle {:d}.", id); if (errors) { errors->push_back( @@ -96,7 +96,7 @@ GeoLib::Surface* TINInterface::readTIN(std::string const& fname, } // read third point if (!(input >> p2[0] >> p2[1] >> p2[2])) { - ERR("Could not read coords of 3rd point of triangle %d.", id); + ERR("Could not read coords of 3rd point of triangle {:d}.", id); if (errors) { errors->push_back( @@ -113,7 +113,7 @@ GeoLib::Surface* TINInterface::readTIN(std::string const& fname, // check area of triangle double const d_eps(std::numeric_limits<double>::epsilon()); if (MathLib::calcTriangleArea(p0, p1, p2) < d_eps) { - ERR("readTIN: Triangle %d has zero area.", id); + ERR("readTIN: Triangle {:d} has zero area.", id); if (errors) { errors->push_back(std::string("readTIN: Triangle ") + @@ -156,7 +156,8 @@ void TINInterface::writeSurfaceAsTIN(GeoLib::Surface const& surface, std::string { std::ofstream os (file_name.c_str()); if (!os) { - WARN("writeSurfaceAsTIN(): could not open stream to %s.", file_name.c_str()); + WARN("writeSurfaceAsTIN(): could not open stream to {:s}.", + file_name.c_str()); return; } os.precision(std::numeric_limits<double>::digits10); diff --git a/GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.cpp b/GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.cpp index 2dee219f70edccedb11510b1e0e4e1d10bc89b8b..b035188374e928f9f847943c0c5c8ba3975b64ba 100644 --- a/GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.cpp +++ b/GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.cpp @@ -15,7 +15,7 @@ #include "BoostXmlGmlInterface.h" #include <boost/property_tree/xml_parser.hpp> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Algorithm.h" #include "BaseLib/ConfigTreeUtil.h" @@ -169,7 +169,7 @@ void BoostXmlGmlInterface::readPolylines( if (search == _idx_map.end()) { OGS_FATAL( - "Polyline `%s' contains the point id `%d', but the " + "Polyline `{:s}' contains the point id `{:d}', but the " "id is not in the point list.", p_name->c_str(), pt_idx); } @@ -231,8 +231,9 @@ void BoostXmlGmlInterface::readSurfaces( if (search == _idx_map.end()) { OGS_FATAL( - "The element list of the surface `%s' contains the " - "invalid point id `%d'.", + "The element list of the surface `{:s}' contains " + "the " + "invalid point id `{:d}'.", s_name->c_str(), pt_idx); } return search->second; @@ -262,7 +263,7 @@ bool BoostXmlGmlInterface::write() GeoLib::PointVec const*const pnt_vec(_geo_objects.getPointVecObj(_exportName)); if (! pnt_vec) { ERR("BoostXmlGmlInterface::write(): No PointVec within the geometry " - "'%s'.", + "'{:s}'.", _exportName.c_str()); return false; } @@ -270,13 +271,13 @@ bool BoostXmlGmlInterface::write() std::vector<GeoLib::Point*> const*const pnts(pnt_vec->getVector()); if (! pnts) { ERR("BoostXmlGmlInterface::write(): No vector of points within the " - "geometry '%s'.", + "geometry '{:s}'.", _exportName.c_str()); return false; } if (pnts->empty()) { ERR("BoostXmlGmlInterface::write(): No points within the geometry " - "'%s'.", + "'{:s}'.", _exportName.c_str()); return false; } @@ -320,7 +321,7 @@ void BoostXmlGmlInterface::addSurfacesToPropertyTree( if (!sfc_vec) { INFO( "BoostXmlGmlInterface::addSurfacesToPropertyTree(): " - "No surfaces within the geometry '%s'.", + "No surfaces within the geometry '{:s}'.", _exportName.c_str()); return; } @@ -330,7 +331,7 @@ void BoostXmlGmlInterface::addSurfacesToPropertyTree( { INFO( "BoostXmlGmlInterface::addSurfacesToPropertyTree(): " - "No surfaces within the geometry '%s'.", + "No surfaces within the geometry '{:s}'.", _exportName.c_str()); return; } @@ -362,7 +363,7 @@ void BoostXmlGmlInterface::addPolylinesToPropertyTree( if (!vec) { INFO( "BoostXmlGmlInterface::addPolylinesToPropertyTree(): " - "No polylines within the geometry '%s'.", + "No polylines within the geometry '{:s}'.", _exportName.c_str()); return; } @@ -372,7 +373,7 @@ void BoostXmlGmlInterface::addPolylinesToPropertyTree( { INFO( "BoostXmlGmlInterface::addPolylinesToPropertyTree(): " - "No polylines within the geometry '%s'.", + "No polylines within the geometry '{:s}'.", _exportName.c_str()); return; } diff --git a/GeoLib/IO/XmlIO/Qt/XmlGmlInterface.cpp b/GeoLib/IO/XmlIO/Qt/XmlGmlInterface.cpp index 319d5ff33bb16f0e3acc6e928ab20b9844b1317b..aff68e29f5a7d7299c4510f1065692eef7977bbb 100644 --- a/GeoLib/IO/XmlIO/Qt/XmlGmlInterface.cpp +++ b/GeoLib/IO/XmlIO/Qt/XmlGmlInterface.cpp @@ -18,7 +18,7 @@ #include <QTextCodec> #include <QtXml/QDomDocument> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileFinder.h" #include "GeoLib/Triangle.h" @@ -229,7 +229,7 @@ void XmlGmlInterface::readPolylines( ply_names->insert(std::pair<std::string, std::size_t>(ply_name, idx)); } else { WARN( - "Polyline '%s' exists already. Polyline %d will be " + "Polyline '{:s}' exists already. Polyline {:d} will be " "inserted without a name.", ply_name.c_str(), idx); } @@ -248,7 +248,7 @@ void XmlGmlInterface::readPolylines( polyline.attribute("name").toStdString(); } OGS_FATAL( - "Polyline `%s' contains the point id `%d' which is " + "Polyline `{:s}' contains the point id `{:d}' which is " "not in the point list.", polyline_name.c_str(), pt_idx); } @@ -295,7 +295,7 @@ void XmlGmlInterface::readSurfaces( surface_name = surface.attribute("name").toStdString(); } OGS_FATAL( - "Surface `%s' contains the point id `%d', which is " + "Surface `{:s}' contains the point id `{:d}', which is " "not in the point list.", surface_name.c_str(), pt_idx); } diff --git a/GeoLib/IO/XmlIO/Qt/XmlStnInterface.cpp b/GeoLib/IO/XmlIO/Qt/XmlStnInterface.cpp index 4c03bf10b0b87f14d4f9df6f3382081b830a6d6a..bb8a33f9d517c6dc037a43af2be27027d060091c 100644 --- a/GeoLib/IO/XmlIO/Qt/XmlStnInterface.cpp +++ b/GeoLib/IO/XmlIO/Qt/XmlStnInterface.cpp @@ -19,7 +19,7 @@ #include <QFile> #include <QtXml/QDomDocument> #include <RapidXML/rapidxml.hpp> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/DateTools.h" #include "BaseLib/FileTools.h" @@ -217,8 +217,8 @@ void XmlStnInterface::readStratigraphy( const QDomNode &stratRoot, } else WARN( - "XmlStnInterface::readStratigraphy(): Skipped layer '%s' " - "in borehole '%s' because of thickness 0.0.", + "XmlStnInterface::readStratigraphy(): Skipped layer '{:s}' " + "in borehole '{:s}' because of thickness 0.0.", horizonName.c_str(), borehole->getName().c_str()); } else diff --git a/GeoLib/PointVec.cpp b/GeoLib/PointVec.cpp index 7b88a549f9c048ca0228061d2537a46ce4f65c50..f1292ff47f25aeef2ac1409b1d0cce91f60391c1 100644 --- a/GeoLib/PointVec.cpp +++ b/GeoLib/PointVec.cpp @@ -14,7 +14,7 @@ #include <numeric> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "PointVec.h" @@ -111,7 +111,7 @@ PointVec::PointVec( } if (number_of_all_input_pnts > _data_vec->size()) - WARN("PointVec::PointVec(): there are %d double points.", + WARN("PointVec::PointVec(): there are {:d} double points.", number_of_all_input_pnts - _data_vec->size()); correctNameIDMapping(); @@ -149,7 +149,7 @@ void PointVec::push_back(Point* pnt, std::string const* const name) if (it != _name_id_map->end()) { _id_to_name_map.emplace_back(""); - WARN("PointVec::push_back(): two points share the name %s.", + WARN("PointVec::push_back(): two points share the name {:s}.", name->c_str()); return; } diff --git a/GeoLib/Polygon.cpp b/GeoLib/Polygon.cpp index 37690defb2e17b155bf9d0063713d67c6c082944..7c01731b3028f2ce061a786af8161befbea62cdd 100644 --- a/GeoLib/Polygon.cpp +++ b/GeoLib/Polygon.cpp @@ -14,7 +14,6 @@ #include "Polygon.h" -#include <logog/include/logog.hpp> #include <boost/math/constants/constants.hpp> #include "BaseLib/quicksort.h" diff --git a/GeoLib/Polyline.cpp b/GeoLib/Polyline.cpp index d73db8ba10274ee6c383c5207b9dbd6d6facb9f6..f8976916064158a6ed4aed9eec6d435519f4e146 100644 --- a/GeoLib/Polyline.cpp +++ b/GeoLib/Polyline.cpp @@ -15,9 +15,9 @@ #include "Polyline.h" #include <algorithm> -#include <logog/include/logog.hpp> -#include "BaseLib/Error.h" #include "AnalyticalGeometry.h" +#include "BaseLib/Error.h" +#include "BaseLib/Logging.h" #include "MathLib/GeometricBasics.h" namespace GeoLib @@ -230,7 +230,10 @@ bool Polyline::isCoplanar() const { if (!MathLib::isCoplanar(p0, p1, p2, *this->getPoint(i))) { - DBUG ("Point %d is not coplanar to the first three points of the line.", i); + DBUG( + "Point {:d} is not coplanar to the first three points of the " + "line.", + i); return false; } } @@ -590,7 +593,7 @@ bool containsEdge (const Polyline& ply, std::size_t id0, std::size_t id1) { if (id0 == id1) { - ERR("no valid edge id0 == id1 == %d.", id0); + ERR("no valid edge id0 == id1 == {:d}.", id0); return false; } if (id0 > id1) diff --git a/GeoLib/QuadTree.h b/GeoLib/QuadTree.h index 58a9eb75b92a796ac8078472066f794a69fb0d28..0ae7fda4190074631b4275d562f984044ad5d5be 100644 --- a/GeoLib/QuadTree.h +++ b/GeoLib/QuadTree.h @@ -17,9 +17,10 @@ #include <cassert> #include <limits> #include <list> -#include <logog/include/logog.hpp> #include <utility> +#include "BaseLib/Logging.h" + namespace GeoLib { /** @@ -74,7 +75,16 @@ public: _ur[0] = _ll[0] + _ur[1] - _ll[1]; } - DBUG("QuadTree(): lower left: (%f,%f,%f), upper right: (%f,%f,%f), depth: %d", _ll[0], _ll[1], _ll[2], _ur[0], _ur[1], _ur[2], _depth); + DBUG( + "QuadTree(): lower left: ({:f},{:f},{:f}), upper right: " + "({:f},{:f},{:f}), depth: {:d}", + _ll[0], + _ll[1], + _ll[2], + _ur[0], + _ur[1], + _ur[2], + _depth); } /** diff --git a/GeoLib/Raster.cpp b/GeoLib/Raster.cpp index a589c62459eaeee51439ca0966a724ecd7cecae6..7cdd4653a028405f54c7364d53184597aeff5835 100644 --- a/GeoLib/Raster.cpp +++ b/GeoLib/Raster.cpp @@ -13,8 +13,6 @@ #include <fstream> -#include <logog/include/logog.hpp> - #include "Raster.h" // BaseLib diff --git a/GeoLib/SensorData.cpp b/GeoLib/SensorData.cpp index 693e26ecbe42fe5744f4ba08e74e20cc00f06fda..e254f5cf21f1675406b1a097ea640281882191ee 100644 --- a/GeoLib/SensorData.cpp +++ b/GeoLib/SensorData.cpp @@ -17,7 +17,7 @@ #include <cstdlib> #include <fstream> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/StringTools.h" #include "BaseLib/DateTools.h" @@ -85,8 +85,8 @@ const std::vector<float>* SensorData::getTimeSeries(SensorDataType time_series_n return _data_vecs[i]; } } - ERR("Error in SensorData::getTimeSeries() - Time series '%d' not found.", - time_series_name); + ERR("Error in SensorData::getTimeSeries() - Time series '{:s}' not found.", + convertSensorDataType2String(time_series_name)); return nullptr; } @@ -96,7 +96,8 @@ int SensorData::readDataFromFile(const std::string &file_name) if (!in.is_open()) { - INFO("SensorData::readDataFromFile() - Could not open file %s.", file_name.c_str()); + INFO("SensorData::readDataFromFile() - Could not open file {:s}.", + file_name.c_str()); return 0; } diff --git a/GeoLib/Station.cpp b/GeoLib/Station.cpp index 6dc8a71c260220393f3047149991b83ed349e63f..09304564edbbe49bbb7fc7f3f0112f932e771a76 100644 --- a/GeoLib/Station.cpp +++ b/GeoLib/Station.cpp @@ -17,7 +17,7 @@ #include <cstdlib> #include <utility> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/StringTools.h" diff --git a/GeoLib/StationBorehole.cpp b/GeoLib/StationBorehole.cpp index 8682faa678911e16e89f1e4a7ef550a6ab1b70bf..9d859c80f7de54a50ed999daae35d48905e8353e 100644 --- a/GeoLib/StationBorehole.cpp +++ b/GeoLib/StationBorehole.cpp @@ -19,7 +19,7 @@ #include <cstdlib> #include <fstream> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/StringTools.h" #include "BaseLib/DateTools.h" diff --git a/GeoLib/Surface.cpp b/GeoLib/Surface.cpp index cf8e002b80483d04f02b5c2773c53afad40756a0..28b7638ddcc220e95f953442719e50e51f1caf00 100644 --- a/GeoLib/Surface.cpp +++ b/GeoLib/Surface.cpp @@ -9,8 +9,6 @@ #include <list> -#include <logog/include/logog.hpp> - #include "Surface.h" // GeoLib diff --git a/GeoLib/SurfaceGrid.cpp b/GeoLib/SurfaceGrid.cpp index 48bbf28a9f251dad51dbc38112ec5cb13b716f1a..2118db1e9fc49c1decf3d87326304533bacf017b 100644 --- a/GeoLib/SurfaceGrid.cpp +++ b/GeoLib/SurfaceGrid.cpp @@ -14,7 +14,7 @@ #include <algorithm> #include <bitset> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Error.h" @@ -127,10 +127,11 @@ void SurfaceGrid::sortTrianglesInGridCells(Surface const*const sfc) Point const& p0(*((*sfc)[l]->getPoint(0))); Point const& p1(*((*sfc)[l]->getPoint(1))); Point const& p2(*((*sfc)[l]->getPoint(2))); - ERR("Sorting triangle %d [(%f,%f,%f), (%f,%f,%f), (%f,%f,%f) into " + ERR("Sorting triangle {:d} [({:f},{:f},{:f}), ({:f},{:f},{:f}), " + "({:f},{:f},{:f}) into " "grid.", - l, p0[0], p0[1], p0[2], p1[0], p1[1], p1[2], p2[0], p2[1], p2[2] - ); + l, p0[0], p0[1], p0[2], p1[0], p1[1], p1[2], p2[0], p2[1], + p2[2]); OGS_FATAL(""); } } @@ -190,8 +191,11 @@ SurfaceGrid::getGridCellCoordinates(MathLib::Point3d const& p) const }}; if (coords[0]>=_n_steps[0] || coords[1]>=_n_steps[1] || coords[2]>=_n_steps[2]) { - DBUG("Computed indices (%d,%d,%d), max grid cell indices (%d,%d,%d)", - coords[0], coords[1], coords[2], _n_steps[0], _n_steps[1], _n_steps[2]); + DBUG( + "Computed indices ({:d},{:d},{:d}), max grid cell indices " + "({:d},{:d},{:d})", + coords[0], coords[1], coords[2], _n_steps[0], _n_steps[1], + _n_steps[2]); return boost::optional<std::array<std::size_t, 3>>(); } return boost::optional<std::array<std::size_t, 3>>(coords); diff --git a/GeoLib/TemplateVec.h b/GeoLib/TemplateVec.h index 57c00822cee2db1e3823a7651bdcbfde3e579b16..0d29410f17ebbca6fa6f91772296a83e2815e590 100644 --- a/GeoLib/TemplateVec.h +++ b/GeoLib/TemplateVec.h @@ -22,7 +22,7 @@ #include <utility> #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Error.h" @@ -204,7 +204,7 @@ public: _name_id_map->insert(NameIdPair(*name, _data_vec->size() - 1)); } else { WARN( - "Name '%s' exists already. The object will be inserted " + "Name '{:s}' exists already. The object will be inserted " "without a name", name->c_str()); } diff --git a/MaterialLib/Adsorption/Adsorption.cpp b/MaterialLib/Adsorption/Adsorption.cpp index 4461066a81af0dde7fd3cdf4ad936a4f22a93ec8..c7769841885bda55fe36b922c0eb586b4498bbf6 100644 --- a/MaterialLib/Adsorption/Adsorption.cpp +++ b/MaterialLib/Adsorption/Adsorption.cpp @@ -8,7 +8,7 @@ */ #include "Adsorption.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MaterialLib/PhysicalConstant.h" namespace { @@ -126,7 +126,8 @@ double AdsorptionReaction::getEntropy(const double T_Ads, const double A) const if (W_p <= 0.0 || W_m <= 0.0) { - ERR("characteristic curve in negative region (W-, W+): %g, %g", W_m, W_p); + ERR("characteristic curve in negative region (W-, W+): {:g}, {:g}", W_m, + W_p); return 0.0; } diff --git a/MaterialLib/Adsorption/Reaction.cpp b/MaterialLib/Adsorption/Reaction.cpp index 70bc4246d6e3c0b69230667e2bfe058dad3cb2b6..3ee1739c8923327ef78927950a4f6f92c18c4f66 100644 --- a/MaterialLib/Adsorption/Reaction.cpp +++ b/MaterialLib/Adsorption/Reaction.cpp @@ -7,7 +7,7 @@ * http://www.opengeosys.org/project/license */ -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/StringTools.h" @@ -82,7 +82,7 @@ newInstance(BaseLib::ConfigTree const& conf) return std::make_unique<ReactionCaOH2>(conf); } - OGS_FATAL("Unknown reactive system: %s.", type.c_str()); + OGS_FATAL("Unknown reactive system: {:s}.", type.c_str()); return nullptr; } diff --git a/MaterialLib/Adsorption/ReactionCaOH2.cpp b/MaterialLib/Adsorption/ReactionCaOH2.cpp index 9279cfd256df1f6d41a906e3e91ead94671619e2..9bd1f3564974319ae7a350bfe64b748a0ce60b62 100644 --- a/MaterialLib/Adsorption/ReactionCaOH2.cpp +++ b/MaterialLib/Adsorption/ReactionCaOH2.cpp @@ -9,10 +9,10 @@ #include "ReactionCaOH2.h" #include <cassert> -#include <logog/include/logog.hpp> +#include "Adsorption.h" #include "BaseLib/Error.h" +#include "BaseLib/Logging.h" #include "MaterialLib/PhysicalConstant.h" -#include "Adsorption.h" namespace Adsorption { diff --git a/MaterialLib/Adsorption/ReactionSinusoidal.h b/MaterialLib/Adsorption/ReactionSinusoidal.h index 9ecd5ddeb1810da3eef4ad203efecb0ad30337b6..0282d81370a3ea50c529c7b32f7754bb518d369d 100644 --- a/MaterialLib/Adsorption/ReactionSinusoidal.h +++ b/MaterialLib/Adsorption/ReactionSinusoidal.h @@ -9,7 +9,7 @@ #pragma once -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "Reaction.h" #include "BaseLib/ConfigTree.h" diff --git a/MaterialLib/CMakeLists.txt b/MaterialLib/CMakeLists.txt index 69ba77725b8f775800327b4ac5c6083a3d7b6fcb..e52f9fda620cc2ff2a08e4b75084ecc2ffc8861f 100644 --- a/MaterialLib/CMakeLists.txt +++ b/MaterialLib/CMakeLists.txt @@ -40,7 +40,8 @@ include(GenerateExportHeader) generate_export_header(MaterialLib) target_include_directories(MaterialLib PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) -target_link_libraries(MaterialLib PRIVATE MathLib MeshLib ParameterLib) +target_link_libraries(MaterialLib PRIVATE MathLib MeshLib ParameterLib + spdlog::spdlog) if(OGS_USE_MFRONT) target_link_libraries(MaterialLib PUBLIC MaterialLib_SolidModels_MFront) diff --git a/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp b/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp index 762b09c196f710a32413f4218dcde539e31d462f..8d52f12c675d26322b62c8a75fbf5f53d99069df 100644 --- a/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp +++ b/MaterialLib/Fluid/Density/CreateFluidDensityModel.cpp @@ -168,7 +168,7 @@ std::unique_ptr<FluidProperty> createFluidDensityModel( } OGS_FATAL( - "The density type %s is unavailable.\n" + "The density type {:s} is unavailable.\n" "The available types are: \n\tConstant, \n\tLiquidDensity, " "\n\tTemperatureDependent, \n\tIdealGasLaw." "\n\tWaterDensityIAPWSIF97Region1\n", diff --git a/MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.cpp b/MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.cpp index 355a0fbeb982e54c72be2ce3cd0cfca205388211..289a011c9f8f610e466e48fdda9066ff9ee899f5 100644 --- a/MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.cpp +++ b/MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.cpp @@ -37,7 +37,7 @@ std::unique_ptr<FluidProperty> createSpecificFluidHeatCapacityModel( // TODO: add more models OGS_FATAL( - "The specific heat capacity type %s is unavailable.\n" + "The specific heat capacity type {:s} is unavailable.\n" "The available type is \n\tConstant\n", type.data()); } diff --git a/MaterialLib/Fluid/ThermalConductivity/CreateFluidThermalConductivityModel.cpp b/MaterialLib/Fluid/ThermalConductivity/CreateFluidThermalConductivityModel.cpp index 4dbb1d33dd4c83384618e28460d77546a7b24b70..55a4e4c9ba99cb78e55c22a4578314fed9ac3e84 100644 --- a/MaterialLib/Fluid/ThermalConductivity/CreateFluidThermalConductivityModel.cpp +++ b/MaterialLib/Fluid/ThermalConductivity/CreateFluidThermalConductivityModel.cpp @@ -37,7 +37,7 @@ std::unique_ptr<FluidProperty> createFluidThermalConductivityModel( // TODO: add more models OGS_FATAL( - "The viscosity type %s is unavailable.\n" + "The viscosity type {:s} is unavailable.\n" "The available type is \n\tConstant\n", type.data()); } diff --git a/MaterialLib/Fluid/Viscosity/CreateViscosityModel.cpp b/MaterialLib/Fluid/Viscosity/CreateViscosityModel.cpp index 9cfd71b9305b00118096d46b3a5805ae4d9b6768..7e1e1f916233356c5bb9ba163e3f3b44d4467ada 100644 --- a/MaterialLib/Fluid/Viscosity/CreateViscosityModel.cpp +++ b/MaterialLib/Fluid/Viscosity/CreateViscosityModel.cpp @@ -131,7 +131,7 @@ std::unique_ptr<FluidProperty> createViscosityModel( } OGS_FATAL( - "The fluid type %s for Vogels model is unavailable.\n" + "The fluid type {:s} for Vogels model is unavailable.\n" "The available fluid types are Water, CO2 and CH4\n", fluid_type.data()); } @@ -143,7 +143,7 @@ std::unique_ptr<FluidProperty> createViscosityModel( } OGS_FATAL( - "The viscosity type %s is unavailable.\n" + "The viscosity type {:s} is unavailable.\n" "The available types are \n\tConstant, \n\tLinearPressure " "\n\tTemperatureDependent, \n\tVogels\n", type.data()); diff --git a/MaterialLib/FractureModels/Coulomb.cpp b/MaterialLib/FractureModels/Coulomb.cpp index 4db3b9e11f1db9f7e23703b8058d784b1627abf3..8b91ff246d5495ca5f88cf22cd4eddd314ae3214 100644 --- a/MaterialLib/FractureModels/Coulomb.cpp +++ b/MaterialLib/FractureModels/Coulomb.cpp @@ -171,7 +171,7 @@ void Coulomb<DisplacementDim>::computeConstitutiveRelation( auto const update_solution = [&](ResidualVectorType const& increment) { solution += increment; - /*DBUG("analytical = %g", + /*DBUG("analytical = {:g}", Fs / (mat.Ks + mat.Kn * std::tan(mat.psi) * std::tan(mat.phi))) */ state.w_p = state.w_p_prev + diff --git a/MaterialLib/FractureModels/Permeability/CreateConstantPermeability.cpp b/MaterialLib/FractureModels/Permeability/CreateConstantPermeability.cpp index 31232955fea89f6fec9aacbbf68550d4878da608..50482028aa8407751920de673cf00ce1722078dd 100644 --- a/MaterialLib/FractureModels/Permeability/CreateConstantPermeability.cpp +++ b/MaterialLib/FractureModels/Permeability/CreateConstantPermeability.cpp @@ -28,7 +28,8 @@ std::unique_ptr<Permeability> createConstantPermeability( if (permeability < 0) { OGS_FATAL( - "The permeability parameter must be non-negative. Given value %g.", + "The permeability parameter must be non-negative. Given value " + "{:g}.", permeability); } diff --git a/MaterialLib/FractureModels/Permeability/CreatePermeabilityModel.cpp b/MaterialLib/FractureModels/Permeability/CreatePermeabilityModel.cpp index 0f5d5daae9cdf684001894e97f9aa37298f7f030..55b26532630a442f831f8871c9812c8aba63e6a0 100644 --- a/MaterialLib/FractureModels/Permeability/CreatePermeabilityModel.cpp +++ b/MaterialLib/FractureModels/Permeability/CreatePermeabilityModel.cpp @@ -32,7 +32,7 @@ std::unique_ptr<Permeability> createPermeabilityModel( { return MaterialLib::Fracture::Permeability::createCubicLaw(config); } - OGS_FATAL("Unknown fracture permeability model type \"%s\".", + OGS_FATAL("Unknown fracture permeability model type \"{:s}\".", permeability_model_type.c_str()); } } // namespace MaterialLib::Fracture::Permeability diff --git a/MaterialLib/MPL/Component.h b/MaterialLib/MPL/Component.h index 05aaca3c6dd6505e50595ad40946c3f4018bb363..3305b0facb836dd08f31d503a7b537d46ad6a712 100644 --- a/MaterialLib/MPL/Component.h +++ b/MaterialLib/MPL/Component.h @@ -93,7 +93,7 @@ void checkRequiredProperties(Component const& c, { if (!c.hasProperty(p)) { - OGS_FATAL("The property '%s' is missing in the component '%s'.", + OGS_FATAL("The property '{:s}' is missing in the component '{:s}'.", property_enum_to_string[p].c_str(), c.name.c_str()); } } diff --git a/MaterialLib/MPL/CreateComponent.cpp b/MaterialLib/MPL/CreateComponent.cpp index 1014b57be6503f36023d40eaeb27e2db7530f195..e41d46f8db6ccc2963c9f2b58e101ab38c2c6231 100644 --- a/MaterialLib/MPL/CreateComponent.cpp +++ b/MaterialLib/MPL/CreateComponent.cpp @@ -97,8 +97,9 @@ std::vector<std::unique_ptr<Component>> createComponents( return c->name == component_name; }) != components.end()) { - OGS_FATAL("Found duplicates with the same component name tag '%s'.", - component->name.c_str()); + OGS_FATAL( + "Found duplicates with the same component name tag '{:s}'.", + component->name.c_str()); } components.push_back(std::move(component)); diff --git a/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.cpp b/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.cpp index f4e31dc2700a401330c00cc47ec8a0f76bedc792..15e2b79efdfe83bb89614502270ed981a020f3bd 100644 --- a/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.cpp +++ b/MaterialLib/MPL/CreateMaterialSpatialDistributionMap.cpp @@ -29,17 +29,19 @@ createMaterialSpatialDistributionMap( if (max_material_id > static_cast<int>(media.size() - 1)) { WARN( - "The maximum value of MaterialIDs in mesh is %d. As the given " - "number of porous media definitions in the project file is %d, the " - "maximum value of MaterialIDs in mesh must be %d (index starts " + "The maximum value of MaterialIDs in mesh is {:d}. As the given " + "number of porous media definitions in the project file is {:d}, " + "the " + "maximum value of MaterialIDs in mesh must be {:d} (index starts " "with zero).", max_material_id, media.size(), max_material_id - 1); } if (max_material_id < static_cast<int>(media.size() - 1)) WARN( - "There are %d porous medium definitions in the project file but " - "only %d different values in the MaterialIDs vector/data_array in " + "There are {:d} porous medium definitions in the project file but " + "only {:d} different values in the MaterialIDs vector/data_array " + "in " "the mesh.", media.size(), max_material_id - 1); diff --git a/MaterialLib/MPL/CreatePhase.cpp b/MaterialLib/MPL/CreatePhase.cpp index 234d85f1bea70d4948c4a45abd773e29f1a55ec5..2cb89190c327b2eba33d858b125bf1de98036553 100644 --- a/MaterialLib/MPL/CreatePhase.cpp +++ b/MaterialLib/MPL/CreatePhase.cpp @@ -56,7 +56,7 @@ std::unique_ptr<MaterialPropertyLib::Phase> createPhase( { ERR(type.c_str()); } - OGS_FATAL("Wrong phase type '%s' given.", phase_type.c_str()); + OGS_FATAL("Wrong phase type '{:s}' given.", phase_type.c_str()); } // Parsing of optional components. @@ -75,7 +75,7 @@ std::unique_ptr<MaterialPropertyLib::Phase> createPhase( { OGS_FATAL( "Neither tag <components> nor tag <properties> has been set for " - "the phase '%s'.", + "the phase '{:s}'.", phase_type.c_str()); } @@ -114,7 +114,7 @@ std::vector<std::unique_ptr<Phase>> createPhases( return p->name == phase_name; }) != phases.end()) { - OGS_FATAL("Found duplicates with the same phase name tag '%s'.", + OGS_FATAL("Found duplicates with the same phase name tag '{:s}'.", phase->name.c_str()); } diff --git a/MaterialLib/MPL/CreateProperty.cpp b/MaterialLib/MPL/CreateProperty.cpp index 90d7d0b978b1efece4d9bf0a141df5397ec87670..85458e860943babf28e7f02147d1385bd448506d 100644 --- a/MaterialLib/MPL/CreateProperty.cpp +++ b/MaterialLib/MPL/CreateProperty.cpp @@ -135,7 +135,7 @@ std::unique_ptr<MaterialPropertyLib::Property> createProperty( } // If none of the above property types are found, OGS throws an error. - OGS_FATAL("The specified component property type '%s' was not recognized", + OGS_FATAL("The specified component property type '{:s}' was not recognized", property_type.c_str()); } } // namespace diff --git a/MaterialLib/MPL/MaterialSpatialDistributionMap.cpp b/MaterialLib/MPL/MaterialSpatialDistributionMap.cpp index f44b07644ffa1589b7385b71a05f0e1c63dd5049..7f122ceb1babdc3e4785edfa9fb61857cbf1e4b6 100644 --- a/MaterialLib/MPL/MaterialSpatialDistributionMap.cpp +++ b/MaterialLib/MPL/MaterialSpatialDistributionMap.cpp @@ -38,9 +38,9 @@ void MaterialSpatialDistributionMap::checkElementHasMedium(std::size_t const ele if (_media.find(material_id) == _media.end()) { OGS_FATAL( - "There is no medium definition for element %d with material " - "ID %d. Please define a medium for each material.", - element_id, material_id); + "There is no medium definition for element {:d} with material " + "ID {:d}. Please define a medium for each material.", + element_id, material_id); } } diff --git a/MaterialLib/MPL/Medium.h b/MaterialLib/MPL/Medium.h index f3defca3d60a1098ac4f41445d47637fd14c6681..58355279ce2745a34c47d51cd9e4bf001e207fd6 100644 --- a/MaterialLib/MPL/Medium.h +++ b/MaterialLib/MPL/Medium.h @@ -97,8 +97,9 @@ void checkRequiredProperties(Medium const& medium, { if (!medium.hasProperty(p)) { - OGS_FATAL("The property '%s' is missing in the medium definition.", - property_enum_to_string[p].c_str()); + OGS_FATAL( + "The property '{:s}' is missing in the medium definition.", + property_enum_to_string[p].c_str()); } } } diff --git a/MaterialLib/MPL/Phase.h b/MaterialLib/MPL/Phase.h index 140c42f672236258213da6d02551d5969985033c..feba1546d5f1579ae3342f0ab28d49a661933a80 100644 --- a/MaterialLib/MPL/Phase.h +++ b/MaterialLib/MPL/Phase.h @@ -72,7 +72,7 @@ void checkRequiredProperties(Phase const& phase, Container const& required_prope { if (!phase.hasProperty(p)) { - OGS_FATAL("The property '%s' is missing in the %s phase.", + OGS_FATAL("The property '{:s}' is missing in the {:s} phase.", property_enum_to_string[p].c_str(), phase.name.c_str()); } } diff --git a/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.cpp index e4e01bb5891a272b6cbf51c2b9be973ba2512163..4a2e23f8c8b12f3b2e85758e20b373916df5c5e6 100644 --- a/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.cpp +++ b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.cpp @@ -30,7 +30,7 @@ SaturationVanGenuchten::SaturationVanGenuchten( if (!(_m > 0 && _m < 1)) { OGS_FATAL( - "The exponent value m = %g of van Genuchten saturation model, is " + "The exponent value m = {:g} of van Genuchten saturation model, is " "out of its range of (0, 1)", _m); } diff --git a/MaterialLib/MPL/Properties/CreateCurveProperty.cpp b/MaterialLib/MPL/Properties/CreateCurveProperty.cpp index c22dbafa9d4942b9b1be7861bc15700122b311a0..337a22fba0a75980d279f142a1f6963a4ffad7f4 100644 --- a/MaterialLib/MPL/Properties/CreateCurveProperty.cpp +++ b/MaterialLib/MPL/Properties/CreateCurveProperty.cpp @@ -30,7 +30,7 @@ std::unique_ptr<CurveProperty> createCurveProperty( //! \ogs_file_param{properties__property__Curve__curve} auto curve_name = config.getConfigParameter<std::string>("curve"); - DBUG("Using curve '%s'", curve_name.c_str()); + DBUG("Using curve '{:s}'", curve_name.c_str()); auto const& curve = *BaseLib::getOrError(curves, curve_name, "Could not find curve."); @@ -38,7 +38,7 @@ std::unique_ptr<CurveProperty> createCurveProperty( auto const independent_variable_string = //! \ogs_file_param{properties__property__Curve__independent_variable} config.getConfigParameter<std::string>("independent_variable"); - DBUG("Using independent_variable '%s'", + DBUG("Using independent_variable '{:s}'", independent_variable_string.c_str()); auto const independent_variable = MaterialPropertyLib::convertStringToVariable( diff --git a/MaterialLib/MPL/Properties/CreatePermeabilityOrthotropicPowerLaw.cpp b/MaterialLib/MPL/Properties/CreatePermeabilityOrthotropicPowerLaw.cpp index 092d9b4f8b111ca26ee094e8758db6e090ad7736..9bd132b8b170672e36f6c4d53270b4f23cf3bd3f 100644 --- a/MaterialLib/MPL/Properties/CreatePermeabilityOrthotropicPowerLaw.cpp +++ b/MaterialLib/MPL/Properties/CreatePermeabilityOrthotropicPowerLaw.cpp @@ -31,7 +31,7 @@ std::unique_ptr<Property> createPermeabilityOrthotropicPowerLaw( { OGS_FATAL( "The number of intrinsic permeabilities must be two or three, but " - "%d were given.", + "{:d} were given.", intrinsic_permeabilities.size()); } @@ -42,7 +42,8 @@ std::unique_ptr<Property> createPermeabilityOrthotropicPowerLaw( if (exponents.size() != 3 && exponents.size() != 2) { OGS_FATAL( - "The number of exponents must be two or three, but %d were given.", + "The number of exponents must be two or three, but {:d} were " + "given.", exponents.size()); } @@ -50,7 +51,7 @@ std::unique_ptr<Property> createPermeabilityOrthotropicPowerLaw( { OGS_FATAL( "The number of intrinsic permeabilities and exponents must be " - "equal, but they are %d and %d, respectively.", + "equal, but they are {:d} and {:d}, respectively.", intrinsic_permeabilities.size(), exponents.size()); } diff --git a/MaterialLib/MPL/Properties/CreateSaturationDependentSwelling.cpp b/MaterialLib/MPL/Properties/CreateSaturationDependentSwelling.cpp index d5395a5fa4475d3eaf4236daf2a7e2075e4293bb..f0226ae89bc61bdbb1495537f25a67bb57c5606f 100644 --- a/MaterialLib/MPL/Properties/CreateSaturationDependentSwelling.cpp +++ b/MaterialLib/MPL/Properties/CreateSaturationDependentSwelling.cpp @@ -28,7 +28,7 @@ std::unique_ptr<SaturationDependentSwelling> createSaturationDependentSwelling( if (swelling_pressures.size() != 3) { OGS_FATAL( - "The number of swelling pressures must be three, but %d were " + "The number of swelling pressures must be three, but {:d} were " "given.", swelling_pressures.size()); } @@ -39,7 +39,7 @@ std::unique_ptr<SaturationDependentSwelling> createSaturationDependentSwelling( if (exponents.size() != 3) { - OGS_FATAL("The number of exponents must be three, but %d were given.", + OGS_FATAL("The number of exponents must be three, but {:d} were given.", exponents.size()); } @@ -47,7 +47,7 @@ std::unique_ptr<SaturationDependentSwelling> createSaturationDependentSwelling( { OGS_FATAL( "The number of swelling pressures and exponents must be equal, but " - "they are %d and %d, respectively.", + "they are {:d} and {:d}, respectively.", swelling_pressures.size(), exponents.size()); } diff --git a/MaterialLib/MPL/Properties/PermeabilityOrthotropicPowerLaw.cpp b/MaterialLib/MPL/Properties/PermeabilityOrthotropicPowerLaw.cpp index 21cf8c38c4bdc5eb7ad1cfe00c29cf091c8059a1..25abb24255c9c96767b57d092f6bd6ae7576fe11 100644 --- a/MaterialLib/MPL/Properties/PermeabilityOrthotropicPowerLaw.cpp +++ b/MaterialLib/MPL/Properties/PermeabilityOrthotropicPowerLaw.cpp @@ -42,7 +42,7 @@ void PermeabilityOrthotropicPowerLaw<DisplacementDim>::setScale( { OGS_FATAL( "The property 'PermeabilityOrthotropicPowerLaw' must be " - "given in the 'Solid' phase, not in '%s' phase.", + "given in the 'Solid' phase, not in '{:s}' phase.", _phase->name.c_str()); } } diff --git a/MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp b/MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp index d6889fdb435ca955389b7fc283cd06c4f65f4d44..4b7a31d83247b7d54afffa1440fcd8622f4c41a1 100644 --- a/MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp +++ b/MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp @@ -26,7 +26,7 @@ void PorosityFromMassBalance::setScale( { OGS_FATAL( "The property 'PorosityFromMassBalance' must be " - "given in the 'Solid' phase, not in '%s' phase.", + "given in the 'Solid' phase, not in '{:s}' phase.", _phase->name.c_str()); } } diff --git a/MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.cpp b/MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.cpp index 9161df966dca9a829273878c37f8c080766835b5..7cc97329c940c8737a4d33a2cd7ea5050ff19478 100644 --- a/MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.cpp +++ b/MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.cpp @@ -30,8 +30,8 @@ RelPermVanGenuchten::RelPermVanGenuchten( if (!(_m > 0 && _m < 1)) { OGS_FATAL( - "The exponent value m = %g of van Genuchten relative permeability " - "model, is out of its range of (0, 1)", + "The exponent value m = {:g} of van Genuchten relative " + "permeability model, is out of its range of (0, 1)", _m); } } diff --git a/MaterialLib/MPL/Properties/SaturationDependentSwelling.cpp b/MaterialLib/MPL/Properties/SaturationDependentSwelling.cpp index a36343200f8da5ade7b581aaa822cd2117af4615..3c89e83b674c606e32381f7418cd5d307bee631c 100644 --- a/MaterialLib/MPL/Properties/SaturationDependentSwelling.cpp +++ b/MaterialLib/MPL/Properties/SaturationDependentSwelling.cpp @@ -42,7 +42,7 @@ void SaturationDependentSwelling::setScale( { OGS_FATAL( "The property 'SaturationDependentSwelling' must be " - "given in the 'Solid' phase, not in '%s' phase.", + "given in the 'Solid' phase, not in '{:s}' phase.", _phase->name.c_str()); } } diff --git a/MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp b/MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp index e15ee0ae0c12022b82ab31f3986ef598fda7c77b..25e06ce87cc20c00cf7466fd8640aaaf100e4642 100644 --- a/MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp +++ b/MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp @@ -26,7 +26,7 @@ void TransportPorosityFromMassBalance::setScale( { OGS_FATAL( "The property 'TransportPorosityFromMassBalance' must be " - "given in the 'Solid' phase, not in '%s' phase.", + "given in the 'Solid' phase, not in '{:s}' phase.", _phase->name.c_str()); } } diff --git a/MaterialLib/MPL/Property.cpp b/MaterialLib/MPL/Property.cpp index 6e4e1aa9e16d6a7987ee641e4ffff3855820827f..829814d516f89b3ecd8a013cebd40b061cfe6a1e 100644 --- a/MaterialLib/MPL/Property.cpp +++ b/MaterialLib/MPL/Property.cpp @@ -51,7 +51,7 @@ PropertyDataType fromVector(std::vector<double> const& values) default: { OGS_FATAL( - "Conversion of a %d-vector to PropertyDataType is not " + "Conversion of a {:d}-vector to PropertyDataType is not " "implemented.", values.size()); } diff --git a/MaterialLib/MPL/PropertyType.h b/MaterialLib/MPL/PropertyType.h index 61daf950eea0a54ab3c28905680cded1b63222d8..3b44b4c59182101648139173558e2d6c67cd09a0 100644 --- a/MaterialLib/MPL/PropertyType.h +++ b/MaterialLib/MPL/PropertyType.h @@ -270,7 +270,7 @@ inline PropertyType convertStringToProperty(std::string const& inString) } OGS_FATAL( - "The property name '%s' does not correspond to any known property", + "The property name '{:s}' does not correspond to any known property", inString.c_str()); return PropertyType::number_of_properties; // to avoid the 'no return' diff --git a/MaterialLib/MPL/Utils/FormEigenTensor.cpp b/MaterialLib/MPL/Utils/FormEigenTensor.cpp index 1628825b1284568de6019581c6dae0e46cc69c5d..4d90d3314994cdacc3db76a85e2f3b02de213ea4 100644 --- a/MaterialLib/MPL/Utils/FormEigenTensor.cpp +++ b/MaterialLib/MPL/Utils/FormEigenTensor.cpp @@ -31,7 +31,7 @@ struct FormEigenTensor { return values.asDiagonal(); } - OGS_FATAL("Cannot convert 2d vector to %dx%d diagonal matrix.", + OGS_FATAL("Cannot convert 2d vector to {:d}x{:d} diagonal matrix.", GlobalDim, GlobalDim); } @@ -42,7 +42,7 @@ struct FormEigenTensor { return values.asDiagonal(); } - OGS_FATAL("Cannot convert 3d vector to %dx%d diagonal matrix.", + OGS_FATAL("Cannot convert 3d vector to {:d}x{:d} diagonal matrix.", GlobalDim, GlobalDim); } @@ -52,7 +52,7 @@ struct FormEigenTensor if constexpr (GlobalDim == 2) { return values; } - OGS_FATAL("Cannot convert a 2d tensor to %dx%d matrix", GlobalDim, + OGS_FATAL("Cannot convert a 2d tensor to {:d}x{:d} matrix", GlobalDim, GlobalDim); } Eigen::Matrix<double, GlobalDim, GlobalDim> operator()( @@ -61,7 +61,7 @@ struct FormEigenTensor if constexpr (GlobalDim == 3) { return values; } - OGS_FATAL("Cannot convert a 3d tensor to %dx%d matrix", GlobalDim, + OGS_FATAL("Cannot convert a 3d tensor to {:d}x{:d} matrix", GlobalDim, GlobalDim); } @@ -92,7 +92,7 @@ struct FormEigenTensor return result; } - OGS_FATAL("Cannot convert a symmetric 3d tensor to %dx%d matrix", + OGS_FATAL("Cannot convert a symmetric 3d tensor to {:d}x{:d} matrix", GlobalDim); } }; diff --git a/MaterialLib/MPL/VariableType.cpp b/MaterialLib/MPL/VariableType.cpp index 4b048981c0330f04b179cca8f1336e43fdc52ebe..a93a464ef6cacef0e914769466186237ab4b0d43 100644 --- a/MaterialLib/MPL/VariableType.cpp +++ b/MaterialLib/MPL/VariableType.cpp @@ -46,7 +46,7 @@ Variable convertStringToVariable(std::string const& input) } OGS_FATAL( - "The variable name '%s' does not correspond to any known variable", + "The variable name '{:s}' does not correspond to any known variable", input.c_str()); return Variable::number_of_variables; // to avoid the 'no return' warning diff --git a/MaterialLib/PorousMedium/CreatePorousMediaProperties.cpp b/MaterialLib/PorousMedium/CreatePorousMediaProperties.cpp index bfbe3030d795ea9051e4f636e9fc182b939df2dc..2bbf1a2075654e8784b6f17f6fd2b46857c85cfc 100644 --- a/MaterialLib/PorousMedium/CreatePorousMediaProperties.cpp +++ b/MaterialLib/PorousMedium/CreatePorousMediaProperties.cpp @@ -84,17 +84,19 @@ PorousMediaProperties createPorousMediaProperties( if (max_material_id > static_cast<int>(mat_ids.size() - 1)) { OGS_FATAL( - "The maximum value of MaterialIDs in mesh is %d. As the " + "The maximum value of MaterialIDs in mesh is {:d}. As the " "given number of porous media definitions in the project " - "file is %d, the maximum value of MaterialIDs in mesh must be %d " + "file is {:d}, the maximum value of MaterialIDs in mesh must be " + "{:d} " "(index starts with zero).", max_material_id, mat_ids.size(), max_material_id - 1); } if (max_material_id < static_cast<int>(mat_ids.size() - 1)) WARN( - "There are %d porous medium definitions in the project file but " - "only %d different values in the MaterialIDs vector/data_array in " + "There are {:d} porous medium definitions in the project file but " + "only {:d} different values in the MaterialIDs vector/data_array " + "in " "the mesh.", mat_ids.size(), max_material_id - 1); diff --git a/MaterialLib/PorousMedium/Permeability/Permeability.h b/MaterialLib/PorousMedium/Permeability/Permeability.h index e3275f332d275edbfc35a30972ba7bbd7963c972..612e89bcd0928162ab74eee14cd22e9da62e4613 100644 --- a/MaterialLib/PorousMedium/Permeability/Permeability.h +++ b/MaterialLib/PorousMedium/Permeability/Permeability.h @@ -33,8 +33,8 @@ public: _dimension * _dimension) { OGS_FATAL( - "The given parameter has %d components, but the permeability " - "tensor is defined for a %d dimensional problem.", + "The given parameter has {:d} components, but the permeability " + "tensor is defined for a {:d} dimensional problem.", permeability_parameter.getNumberOfComponents(), _dimension); } } diff --git a/MaterialLib/PorousMedium/Permeability/createPermeabilityModel.cpp b/MaterialLib/PorousMedium/Permeability/createPermeabilityModel.cpp index 229570dfe709fbea377fee6ab575c85c78e89a92..88e116358651136c83e387ec2c06f0fb8fee598c 100644 --- a/MaterialLib/PorousMedium/Permeability/createPermeabilityModel.cpp +++ b/MaterialLib/PorousMedium/Permeability/createPermeabilityModel.cpp @@ -48,8 +48,8 @@ std::unique_ptr<Permeability> createPermeabilityModel( dimension * dimension) { OGS_FATAL( - "The given parameter has %d components, but the permeability " - "tensor is defined for a %d dimensional problem.", + "The given parameter has {:d} components, but the permeability " + "tensor is defined for a {:d} dimensional problem.", permeability_parameter.getNumberOfComponents(), dimension); } @@ -71,15 +71,15 @@ std::unique_ptr<Permeability> createPermeabilityModel( dimension * dimension) { OGS_FATAL( - "The given parameter has %d components, but the permeability " - "tensor is defined for a %d dimensional problem.", + "The given parameter has {:d} components, but the permeability " + "tensor is defined for a {:d} dimensional problem.", permeability_parameter.getNumberOfComponents(), dimension); } return std::make_unique<DupuitPermeability>(permeability_parameter, dimension); } - OGS_FATAL("The permeability type '%s' is unavailable.\n", + OGS_FATAL("The permeability type '{:s}' is unavailable.\n", "The available types are \n\tConstant.", type.data()); } diff --git a/MaterialLib/PorousMedium/Porosity/createPorosityModel.cpp b/MaterialLib/PorousMedium/Porosity/createPorosityModel.cpp index 4f2f86d644bce39b9606781bf9b647a77867c64f..7edcbccaf8ab63a19cf19bfb72997b3d1b3b4ec8 100644 --- a/MaterialLib/PorousMedium/Porosity/createPorosityModel.cpp +++ b/MaterialLib/PorousMedium/Porosity/createPorosityModel.cpp @@ -39,7 +39,7 @@ std::unique_ptr<Porosity> createPorosityModel( return std::make_unique<Porosity>(constant_porosity); } - OGS_FATAL("The porosity type %s is unavailable.\n", + OGS_FATAL("The porosity type {:s} is unavailable.\n", "The available type is Constant.", type.data()); } diff --git a/MaterialLib/PorousMedium/Storage/createStorageModel.cpp b/MaterialLib/PorousMedium/Storage/createStorageModel.cpp index 9e3fa67e75f5f5300e03cc372a47cd5eaa9dcdf2..18371ac9113bf884d915cd687654f049dc21da80 100644 --- a/MaterialLib/PorousMedium/Storage/createStorageModel.cpp +++ b/MaterialLib/PorousMedium/Storage/createStorageModel.cpp @@ -34,7 +34,7 @@ std::unique_ptr<Storage> createStorageModel(BaseLib::ConfigTree const& config) config.getConfigParameter<double>("value")); } - OGS_FATAL("The storage type %s is unavailable.\n", type.data(), + OGS_FATAL("The storage type {:s} is unavailable.\n", type.data(), "The available type is Constant."); } diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/CapillaryPressure/CreateCapillaryPressureModel.cpp b/MaterialLib/PorousMedium/UnsaturatedProperty/CapillaryPressure/CreateCapillaryPressureModel.cpp index 5a906ea39096c987ed0213c80505298ed015f1c0..c0aec2cc24096431b0f9670ac8880cf45dc39dd2 100644 --- a/MaterialLib/PorousMedium/UnsaturatedProperty/CapillaryPressure/CreateCapillaryPressureModel.cpp +++ b/MaterialLib/PorousMedium/UnsaturatedProperty/CapillaryPressure/CreateCapillaryPressureModel.cpp @@ -49,7 +49,7 @@ static std::unique_ptr<CapillaryPressureSaturation> createBrooksCorey( if (auto const Sg_r_ptr = config.getConfigParameterOptional<double>("sg_r")) { DBUG( - "Using value %g for nonwetting phase residual saturation in " + "Using value {:g} for nonwetting phase residual saturation in " "capillary pressure model.", (*Sg_r_ptr)); Sg_r = *Sg_r_ptr; @@ -94,7 +94,7 @@ static std::unique_ptr<CapillaryPressureSaturation> createVanGenuchten( if (auto const Sg_r_ptr = config.getConfigParameterOptional<double>("sg_r")) { DBUG( - "Using value %g for nonwetting phase residual saturation in " + "Using value {:g} for nonwetting phase residual saturation in " "capillary pressure model.", (*Sg_r_ptr)); Sg_r = *Sg_r_ptr; @@ -119,7 +119,7 @@ static std::unique_ptr<CapillaryPressureSaturation> createVanGenuchten( //! \ogs_file_param{material__porous_medium__capillary_pressure__vanGenuchten__has_regularized} config.getConfigParameterOptional<bool>("has_regularized")) { - DBUG("capillary pressure model: %s", + DBUG("capillary pressure model: {:s}", (*has_regularized_conf) ? "true" : "false"); has_regularized = *has_regularized_conf; } @@ -157,7 +157,7 @@ std::unique_ptr<CapillaryPressureSaturation> createCapillaryPressureModel( } OGS_FATAL( - "The capillary pressure saturation models %s are unavailable.\n" + "The capillary pressure saturation models {:s} are unavailable.\n" "The available types are: \n\tBrooksCorey, \n\tvanGenuchten,", "\n\tCurve.\n", type.data()); diff --git a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp index d17f94c2cba889a3b15f4a1db8186f1bd9735019..8848037181f73e6efd9a72e357651e094e27b8f4 100644 --- a/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp +++ b/MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.cpp @@ -199,7 +199,7 @@ std::unique_ptr<RelativePermeability> createRelativePermeabilityModel( } OGS_FATAL( - "The relative permeability model %s is unavailable.\n" + "The relative permeability model {:s} is unavailable.\n" "The available models are:" "\n\tWettingPhaseVanGenuchten," "\n\tNonWettingPhaseVanGenuchten," diff --git a/MaterialLib/SolidModels/CreateConstitutiveRelation.cpp b/MaterialLib/SolidModels/CreateConstitutiveRelation.cpp index aec10048af81bb850d0f999cb78c7da5989c5484..d99a9ab5c512cff81a394b6168d194ca35eb3297 100644 --- a/MaterialLib/SolidModels/CreateConstitutiveRelation.cpp +++ b/MaterialLib/SolidModels/CreateConstitutiveRelation.cpp @@ -82,7 +82,7 @@ createConstitutiveRelation( "option."); #endif // OGS_USE_MFRONT } - OGS_FATAL("Cannot construct constitutive relation of given type '%s'.", + OGS_FATAL("Cannot construct constitutive relation of given type '{:s}'.", type.c_str()); } @@ -114,7 +114,7 @@ createConstitutiveRelations( { OGS_FATAL( "Multiple constitutive relations were specified for the same " - "material id %d. Keep in mind, that if no material id is " + "material id {:d}. Keep in mind, that if no material id is " "specified, it is assumed to be 0 by default.", material_id); } @@ -127,7 +127,7 @@ createConstitutiveRelations( constitutive_relation_config)); } - DBUG("Found %d constitutive relations.", constitutive_relations.size()); + DBUG("Found {:d} constitutive relations.", constitutive_relations.size()); return constitutive_relations; } diff --git a/MaterialLib/SolidModels/CreateEhlers.h b/MaterialLib/SolidModels/CreateEhlers.h index a76bebe77413500eabf37df52125f6554127b9be..0cf567ee0b85c1974c983b74dd867c9c39fdae6d 100644 --- a/MaterialLib/SolidModels/CreateEhlers.h +++ b/MaterialLib/SolidModels/CreateEhlers.h @@ -29,19 +29,19 @@ inline std::unique_ptr<DamagePropertiesParameters> createDamageProperties( auto& alpha_d = ParameterLib::findParameter<double>(config, "alpha_d", parameters, 1); - DBUG("Use '%s' as alpha_d.", alpha_d.name.c_str()); + DBUG("Use '{:s}' as alpha_d.", alpha_d.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__damage_properties__beta_d} auto& beta_d = ParameterLib::findParameter<double>(config, "beta_d", parameters, 1); - DBUG("Use '%s' as beta_d.", beta_d.name.c_str()); + DBUG("Use '{:s}' as beta_d.", beta_d.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__damage_properties__h_d} auto& h_d = ParameterLib::findParameter<double>(config, "h_d", parameters, 1); - DBUG("Use '%s' as h_d.", h_d.name.c_str()); + DBUG("Use '{:s}' as h_d.", h_d.name.c_str()); return std::make_unique<DamagePropertiesParameters>( DamagePropertiesParameters{alpha_d, beta_d, h_d}); @@ -60,97 +60,97 @@ std::unique_ptr<SolidEhlers<DisplacementDim>> createEhlers( auto& shear_modulus = ParameterLib::findParameter<double>( config, "shear_modulus", parameters, 1); - DBUG("Use '%s' as shear modulus parameter.", shear_modulus.name.c_str()); + DBUG("Use '{:s}' as shear modulus parameter.", shear_modulus.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__bulk_modulus} auto& bulk_modulus = ParameterLib::findParameter<double>( config, "bulk_modulus", parameters, 1); - DBUG("Use '%s' as bulk modulus parameter.", bulk_modulus.name.c_str()); + DBUG("Use '{:s}' as bulk modulus parameter.", bulk_modulus.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__kappa} auto& kappa = ParameterLib::findParameter<double>(config, "kappa", parameters, 1); - DBUG("Use '%s' as kappa.", kappa.name.c_str()); + DBUG("Use '{:s}' as kappa.", kappa.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__beta} auto& beta = ParameterLib::findParameter<double>(config, "beta", parameters, 1); - DBUG("Use '%s' as beta.", beta.name.c_str()); + DBUG("Use '{:s}' as beta.", beta.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__gamma} auto& gamma = ParameterLib::findParameter<double>(config, "gamma", parameters, 1); - DBUG("Use '%s' as gamma.", gamma.name.c_str()); + DBUG("Use '{:s}' as gamma.", gamma.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__hardening_modulus} auto& hardening_modulus = ParameterLib::findParameter<double>( config, "hardening_modulus", parameters, 1); - DBUG("Use '%s' as hardening modulus parameter.", + DBUG("Use '{:s}' as hardening modulus parameter.", hardening_modulus.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__alpha} auto& alpha = ParameterLib::findParameter<double>(config, "alpha", parameters, 1); - DBUG("Use '%s' as alpha.", alpha.name.c_str()); + DBUG("Use '{:s}' as alpha.", alpha.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__delta} auto& delta = ParameterLib::findParameter<double>(config, "delta", parameters, 1); - DBUG("Use '%s' as delta.", delta.name.c_str()); + DBUG("Use '{:s}' as delta.", delta.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__eps} auto& eps = ParameterLib::findParameter<double>(config, "eps", parameters, 1); - DBUG("Use '%s' as eps.", eps.name.c_str()); + DBUG("Use '{:s}' as eps.", eps.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__m} auto& m = ParameterLib::findParameter<double>(config, "m", parameters, 1); - DBUG("Use '%s' as m.", m.name.c_str()); + DBUG("Use '{:s}' as m.", m.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__alphap} auto& alphap = ParameterLib::findParameter<double>(config, "alphap", parameters, 1); - DBUG("Use '%s' as alphap.", alphap.name.c_str()); + DBUG("Use '{:s}' as alphap.", alphap.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__deltap} auto& deltap = ParameterLib::findParameter<double>(config, "deltap", parameters, 1); - DBUG("Use '%s' as deltap.", deltap.name.c_str()); + DBUG("Use '{:s}' as deltap.", deltap.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__epsp} auto& epsp = ParameterLib::findParameter<double>(config, "epsp", parameters, 1); - DBUG("Use '%s' as epsp.", epsp.name.c_str()); + DBUG("Use '{:s}' as epsp.", epsp.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__mp} auto& paremeter_mp = ParameterLib::findParameter<double>(config, "mp", parameters, 1); - DBUG("Use '%s' as mp.", paremeter_mp.name.c_str()); + DBUG("Use '{:s}' as mp.", paremeter_mp.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__betap} auto& betap = ParameterLib::findParameter<double>(config, "betap", parameters, 1); - DBUG("Use '%s' as betap.", betap.name.c_str()); + DBUG("Use '{:s}' as betap.", betap.name.c_str()); //! \ogs_file_param_special{material__solid__constitutive_relation__Ehlers__gammap} auto& gammap = ParameterLib::findParameter<double>(config, "gammap", parameters, 1); - DBUG("Use '%s' as gammap.", gammap.name.c_str()); + DBUG("Use '{:s}' as gammap.", gammap.name.c_str()); auto tangent_type = //! \ogs_file_param{material__solid__constitutive_relation__Ehlers__tangent_type} diff --git a/MaterialLib/SolidModels/CreateLinearElasticIsotropic.h b/MaterialLib/SolidModels/CreateLinearElasticIsotropic.h index e9fa96316adcd4953a0c1a21d83f1c8d7535141b..0866f924cc0565d1553e096e9fe02172ddb48789 100644 --- a/MaterialLib/SolidModels/CreateLinearElasticIsotropic.h +++ b/MaterialLib/SolidModels/CreateLinearElasticIsotropic.h @@ -36,14 +36,16 @@ createLinearElasticIsotropic( //! \ogs_file_param_special{material__solid__constitutive_relation__LinearElasticIsotropic__youngs_modulus} config, "youngs_modulus", parameters, 1); - DBUG("Use '%s' as youngs_modulus parameter.", youngs_modulus.name.c_str()); + DBUG("Use '{:s}' as youngs_modulus parameter.", + youngs_modulus.name.c_str()); // Poissons ratio auto& poissons_ratio = ParameterLib::findParameter<double>( //! \ogs_file_param_special{material__solid__constitutive_relation__LinearElasticIsotropic__poissons_ratio} config, "poissons_ratio", parameters, 1); - DBUG("Use '%s' as poissons_ratio parameter.", poissons_ratio.name.c_str()); + DBUG("Use '{:s}' as poissons_ratio parameter.", + poissons_ratio.name.c_str()); typename LinearElasticIsotropic<DisplacementDim>::MaterialProperties mp{ youngs_modulus, poissons_ratio}; diff --git a/MaterialLib/SolidModels/CreateLinearElasticOrthotropic.cpp b/MaterialLib/SolidModels/CreateLinearElasticOrthotropic.cpp index bff7e3fdc2ad497969326b389ebed10c27518cbd..1a0c48b859a8395ca5399d0b8efbb028bf9873c2 100644 --- a/MaterialLib/SolidModels/CreateLinearElasticOrthotropic.cpp +++ b/MaterialLib/SolidModels/CreateLinearElasticOrthotropic.cpp @@ -35,19 +35,19 @@ createLinearElasticOrthotropic( auto& youngs_moduli = ParameterLib::findParameter<double>( //! \ogs_file_param_special{material__solid__constitutive_relation__LinearElasticOrthotropic__youngs_moduli} config, "youngs_moduli", parameters, 3); - DBUG("Use '%s' as youngs_moduli parameter.", youngs_moduli.name.c_str()); + DBUG("Use '{:s}' as youngs_moduli parameter.", youngs_moduli.name.c_str()); // Shear moduli auto& shear_moduli = ParameterLib::findParameter<double>( //! \ogs_file_param_special{material__solid__constitutive_relation__LinearElasticOrthotropic__shear_moduli} config, "shear_moduli", parameters, 3); - DBUG("Use '%s' as shear_moduli parameter.", shear_moduli.name.c_str()); + DBUG("Use '{:s}' as shear_moduli parameter.", shear_moduli.name.c_str()); // Poissons ratios auto& poissons_ratios = ParameterLib::findParameter<double>( //! \ogs_file_param_special{material__solid__constitutive_relation__LinearElasticOrthotropic__poissons_ratios} config, "poissons_ratios", parameters, 3); - DBUG("Use '%s' as poissons_ratios parameter.", + DBUG("Use '{:s}' as poissons_ratios parameter.", poissons_ratios.name.c_str()); typename LinearElasticOrthotropic<DisplacementDim>::MaterialProperties mp{ diff --git a/MaterialLib/SolidModels/CreateLubby2.h b/MaterialLib/SolidModels/CreateLubby2.h index 9441adb1055a5fe4dfbdd7bc58e13a75f4e4f948..346dce709fb6f9ac8520e4030ef410baae748af2 100644 --- a/MaterialLib/SolidModels/CreateLubby2.h +++ b/MaterialLib/SolidModels/CreateLubby2.h @@ -35,7 +35,7 @@ std::unique_ptr<Lubby2<DisplacementDim>> createLubby2( //! \ogs_file_param_special{material__solid__constitutive_relation__Lubby2__kelvin_shear_modulus} config, "kelvin_shear_modulus", parameters, 1); - DBUG("Use '%s' as kelvin shear modulus parameter.", + DBUG("Use '{:s}' as kelvin shear modulus parameter.", kelvin_shear_modulus.name.c_str()); // Kelvin viscosity. @@ -43,7 +43,7 @@ std::unique_ptr<Lubby2<DisplacementDim>> createLubby2( //! \ogs_file_param_special{material__solid__constitutive_relation__Lubby2__kelvin_viscosity} config, "kelvin_viscosity", parameters, 1); - DBUG("Use '%s' as kelvin viscosity parameter.", + DBUG("Use '{:s}' as kelvin viscosity parameter.", kelvin_viscosity.name.c_str()); // Maxwell shear modulus. @@ -51,7 +51,7 @@ std::unique_ptr<Lubby2<DisplacementDim>> createLubby2( //! \ogs_file_param_special{material__solid__constitutive_relation__Lubby2__maxwell_shear_modulus} config, "maxwell_shear_modulus", parameters, 1); - DBUG("Use '%s' as maxwell shear modulus parameter.", + DBUG("Use '{:s}' as maxwell shear modulus parameter.", maxwell_shear_modulus.name.c_str()); // Maxwell bulk modulus. @@ -59,7 +59,7 @@ std::unique_ptr<Lubby2<DisplacementDim>> createLubby2( //! \ogs_file_param_special{material__solid__constitutive_relation__Lubby2__maxwell_bulk_modulus} config, "maxwell_bulk_modulus", parameters, 1); - DBUG("Use '%s' as maxwell bulk modulus parameter.", + DBUG("Use '{:s}' as maxwell bulk modulus parameter.", maxwell_bulk_modulus.name.c_str()); // Maxwell viscosity. @@ -67,7 +67,7 @@ std::unique_ptr<Lubby2<DisplacementDim>> createLubby2( //! \ogs_file_param_special{material__solid__constitutive_relation__Lubby2__maxwell_viscosity} config, "maxwell_viscosity", parameters, 1); - DBUG("Use '%s' as maxwell viscosity parameter.", + DBUG("Use '{:s}' as maxwell viscosity parameter.", maxwell_viscosity.name.c_str()); // Dependency parameter for mK. @@ -75,7 +75,7 @@ std::unique_ptr<Lubby2<DisplacementDim>> createLubby2( //! \ogs_file_param_special{material__solid__constitutive_relation__Lubby2__dependency_parameter_mk} config, "dependency_parameter_mk", parameters, 1); - DBUG("Use '%s' as dependency parameter mK.", + DBUG("Use '{:s}' as dependency parameter mK.", dependency_parameter_mK.name.c_str()); // Dependency parameter for mvK. @@ -83,7 +83,7 @@ std::unique_ptr<Lubby2<DisplacementDim>> createLubby2( //! \ogs_file_param_special{material__solid__constitutive_relation__Lubby2__dependency_parameter_mvk} config, "dependency_parameter_mvk", parameters, 1); - DBUG("Use '%s' as dependency parameter mvK.", + DBUG("Use '{:s}' as dependency parameter mvK.", dependency_parameter_mvK.name.c_str()); // Dependency parameter for mvM. @@ -91,7 +91,7 @@ std::unique_ptr<Lubby2<DisplacementDim>> createLubby2( //! \ogs_file_param_special{material__solid__constitutive_relation__Lubby2__dependency_parameter_mvm} config, "dependency_parameter_mvm", parameters, 1); - DBUG("Use '%s' as dependency parameter mvM.", + DBUG("Use '{:s}' as dependency parameter mvM.", dependency_parameter_mvM.name.c_str()); Lubby2MaterialProperties mp{ diff --git a/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.cpp b/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.cpp index 16d33eb199d3b1f3458b851dda1418f783da2804..55c9d0caaccd040ac1b58d8e521b6be61532305f 100644 --- a/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.cpp +++ b/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.cpp @@ -26,13 +26,13 @@ NumLib::NewtonRaphsonSolverParameters createNewtonRaphsonSolverParameters( //! \ogs_file_param{nonlinear_solver__maximum_iterations} config.getConfigParameter<int>("maximum_iterations"); - DBUG("\tmaximum_iterations: %d.", maximum_iterations); + DBUG("\tmaximum_iterations: {:d}.", maximum_iterations); auto const error_tolerance = //! \ogs_file_param{nonlinear_solver__error_tolerance} config.getConfigParameter<double>("error_tolerance"); - DBUG("\terror_tolerance: %g.", error_tolerance); + DBUG("\terror_tolerance: {:g}.", error_tolerance); return {maximum_iterations, error_tolerance}; } diff --git a/MaterialLib/SolidModels/Ehlers.cpp b/MaterialLib/SolidModels/Ehlers.cpp index bb694bc071b1ccd559ef7676b9f8420970d432ee..e63408c6f4c045d55273bca150ffe2085d786014 100644 --- a/MaterialLib/SolidModels/Ehlers.cpp +++ b/MaterialLib/SolidModels/Ehlers.cpp @@ -675,7 +675,7 @@ SolidEhlers<DisplacementDim>::integrateStress( { OGS_FATAL( "Unimplemented tangent type behaviour for the tangent type " - "'%d'.", + "'{:d}'.", _tangent_type); } } diff --git a/MaterialLib/SolidModels/Ehlers.h b/MaterialLib/SolidModels/Ehlers.h index 0838e47b2a2bf370bc5cf697aaa0bc03de7f5c2b..0fd26b599802892492d5d7b2c91b22d998281f66 100644 --- a/MaterialLib/SolidModels/Ehlers.h +++ b/MaterialLib/SolidModels/Ehlers.h @@ -55,7 +55,7 @@ inline TangentType makeTangentType(std::string const& s) { return TangentType::Plastic; } - OGS_FATAL("Not valid string '%s' to create a tangent type from.", + OGS_FATAL("Not valid string '{:s}' to create a tangent type from.", s.c_str()); } diff --git a/MaterialLib/SolidModels/MFront/CMakeLists.txt b/MaterialLib/SolidModels/MFront/CMakeLists.txt index d1e05c8f8508c73c071093d522d72bbb93b1f942..b1b5fa5c1ae5c8d91d1acf890d68bfc1eed07894 100644 --- a/MaterialLib/SolidModels/MFront/CMakeLists.txt +++ b/MaterialLib/SolidModels/MFront/CMakeLists.txt @@ -5,8 +5,8 @@ list(APPEND SOURCES MFront.cpp MFront.h) ogs_add_library(MaterialLib_SolidModels_MFront ${SOURCES}) target_link_libraries(MaterialLib_SolidModels_MFront - PUBLIC BaseLib NumLib logog OgsMFrontBehaviour - PRIVATE MathLib MeshLib) + PUBLIC BaseLib NumLib OgsMFrontBehaviour + PRIVATE MathLib MeshLib spdlog::spdlog) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/ThirdParty/MGIS") diff --git a/MaterialLib/SolidModels/MFront/CreateMFront.cpp b/MaterialLib/SolidModels/MFront/CreateMFront.cpp index a1615bf935c8dcb319e01a018bba18cacd290499..49550899a3cd9a1ed6ffd972172870b34f5df55a 100644 --- a/MaterialLib/SolidModels/MFront/CreateMFront.cpp +++ b/MaterialLib/SolidModels/MFront/CreateMFront.cpp @@ -20,13 +20,13 @@ void varInfo(std::string const& msg, std::vector<mgis::behaviour::Variable> const& vars, mgis::behaviour::Hypothesis hypothesis) { - INFO("#%s: %lu (array size %lu).", + INFO("#{:s}: {:d} (array size {:d}).", msg.c_str(), vars.size(), mgis::behaviour::getArraySize(vars, hypothesis)); for (auto& var : vars) { - INFO(" --> type `%s' with name `%s', size %lu, offset %lu.", + INFO(" --> type `{:s}' with name `{:s}', size {:d}, offset {:d}.", MaterialLib::Solids::MFront::varTypeToString(var.type), var.name.c_str(), mgis::behaviour::getVariableSize(var, hypothesis), @@ -37,11 +37,11 @@ void varInfo(std::string const& msg, /// Prints info about MFront parameters. void varInfo(std::string const& msg, std::vector<std::string> const& parameters) { - INFO("#%s: %lu.", msg.c_str(), parameters.size()); + INFO("#{:s}: {:d}.", msg.c_str(), parameters.size()); // mgis::behaviour::getArraySize(vars, hypothesis)); for (auto const& parameter : parameters) { - INFO(" --> with name `%s'.", parameter.c_str()); + INFO(" --> with name `{:s}'.", parameter.c_str()); } } } // anonymous namespace @@ -98,13 +98,13 @@ std::unique_ptr<MechanicsBase<DisplacementDim>> createMFront( auto behaviour = mgis::behaviour::load(lib_path, behaviour_name, hypothesis); - INFO("Behaviour: `%s'.", behaviour.behaviour.c_str()); - INFO("Hypothesis: `%s'.", mgis::behaviour::toString(hypothesis)); - INFO("Source: `%s'.", behaviour.source.c_str()); - INFO("TFEL version: `%s'.", behaviour.tfel_version.c_str()); - INFO("Behaviour type: `%s'.", btypeToString(behaviour.btype)); - INFO("Kinematic: `%s'.", toString(behaviour.kinematic)); - INFO("Symmetry: `%s'.", toString(behaviour.symmetry)); + INFO("Behaviour: `{:s}'.", behaviour.behaviour.c_str()); + INFO("Hypothesis: `{:s}'.", mgis::behaviour::toString(hypothesis)); + INFO("Source: `{:s}'.", behaviour.source.c_str()); + INFO("TFEL version: `{:s}'.", behaviour.tfel_version.c_str()); + INFO("Behaviour type: `{:s}'.", btypeToString(behaviour.btype)); + INFO("Kinematic: `{:s}'.", toString(behaviour.kinematic)); + INFO("Symmetry: `{:s}'.", toString(behaviour.symmetry)); varInfo("Mat. props.", behaviour.mps, hypothesis); varInfo("Gradients", behaviour.gradients, hypothesis); @@ -146,7 +146,7 @@ std::unique_ptr<MechanicsBase<DisplacementDim>> createMFront( auto const it = map_name_to_param.find(mp.name); if (it == map_name_to_param.end()) OGS_FATAL( - "Material Property `%s' has not been configured in the " + "Material Property `{:s}' has not been configured in the " "project file.", mp.name.c_str()); @@ -156,16 +156,17 @@ std::unique_ptr<MechanicsBase<DisplacementDim>> createMFront( auto const* param = &ParameterLib::findParameter<double>( param_name, parameters, num_comp); - INFO("Using OGS parameter `%s' for material property `%s'.", + INFO("Using OGS parameter `{:s}' for material property `{:s}'.", param_name.c_str(), mp.name.c_str()); using V = mgis::behaviour::Variable; if (mp.type == V::STENSOR || mp.type == V::TENSOR) { WARN( - "Material property `%s' is a tensorial quantity. You, the " + "Material property `{:s}' is a tensorial quantity. You, " + "the " "user, have to make sure that the component order of " - "parameter `%s' matches the one required by MFront!", + "parameter `{:s}' matches the one required by MFront!", mp.name.c_str(), param_name.c_str()); } @@ -181,7 +182,7 @@ std::unique_ptr<MechanicsBase<DisplacementDim>> createMFront( for (auto& e : map_name_to_param) { - ERR(" name: `%s', parameter: `%s'.", e.first.c_str(), + ERR(" name: `{:s}', parameter: `{:s}'.", e.first.c_str(), e.second.c_str()); } diff --git a/MaterialLib/SolidModels/MFront/MFront.cpp b/MaterialLib/SolidModels/MFront/MFront.cpp index 3095289b6f3ba2654be69b00f46adb055df7af3c..8c0713d87189e33d1618ae3b433f39adf5408f18 100644 --- a/MaterialLib/SolidModels/MFront/MFront.cpp +++ b/MaterialLib/SolidModels/MFront/MFront.cpp @@ -111,7 +111,7 @@ const char* toString(mgis::behaviour::Behaviour::Kinematic kin) return "FINITESTRAINKINEMATIC_ETO_PK1"; } - OGS_FATAL("Unknown kinematic %d.", kin); + OGS_FATAL("Unknown kinematic {:d}.", kin); } const char* toString(mgis::behaviour::Behaviour::Symmetry sym) @@ -125,7 +125,7 @@ const char* toString(mgis::behaviour::Behaviour::Symmetry sym) return "ORTHOTROPIC"; } - OGS_FATAL("Unknown symmetry %d.", sym); + OGS_FATAL("Unknown symmetry {:d}.", sym); } const char* btypeToString(int btype) { @@ -139,7 +139,7 @@ const char* btypeToString(int btype) if (btype == B::COHESIVEZONEMODEL) return "COHESIVEZONEMODEL"; - OGS_FATAL("Unknown behaviour type %d.", btype); + OGS_FATAL("Unknown behaviour type {:d}.", btype); } const char* varTypeToString(int v) { @@ -153,7 +153,7 @@ const char* varTypeToString(int v) if (v == V::TENSOR) return "TENSOR"; - OGS_FATAL("Unknown variable type %d.", v); + OGS_FATAL("Unknown variable type {:d}.", v); } template <int DisplacementDim> @@ -181,7 +181,7 @@ MFront<DisplacementDim>::MFront( if (mgis::behaviour::getVariableSize(_behaviour.gradients[0], hypothesis) != MFront<DisplacementDim>::KelvinVector::SizeAtCompileTime) - OGS_FATAL("Strain must have %ld components instead of %lu.", + OGS_FATAL("Strain must have {:d} components instead of {:d}.", MFront<DisplacementDim>::KelvinVector::SizeAtCompileTime, mgis::behaviour::getVariableSize(_behaviour.gradients[0], hypothesis)); @@ -200,7 +200,7 @@ MFront<DisplacementDim>::MFront( if (mgis::behaviour::getVariableSize(_behaviour.thermodynamic_forces[0], hypothesis) != MFront<DisplacementDim>::KelvinVector::SizeAtCompileTime) - OGS_FATAL("Stress must have %ld components instead of %lu.", + OGS_FATAL("Stress must have {:d} components instead of {:d}.", MFront<DisplacementDim>::KelvinVector::SizeAtCompileTime, mgis::behaviour::getVariableSize( _behaviour.thermodynamic_forces[0], hypothesis)); @@ -216,7 +216,7 @@ MFront<DisplacementDim>::MFront( if (mgis::behaviour::getVariableSize(_behaviour.esvs[0], hypothesis) != 1) OGS_FATAL( - "Temperature must be a scalar instead of having %lu " + "Temperature must be a scalar instead of having {:d} " "components.", mgis::behaviour::getVariableSize( _behaviour.thermodynamic_forces[0], hypothesis)); @@ -224,13 +224,13 @@ MFront<DisplacementDim>::MFront( if (_behaviour.mps.size() != _material_properties.size()) { - ERR("There are %d material properties in the loaded behaviour:", + ERR("There are {:d} material properties in the loaded behaviour:", _behaviour.mps.size()); for (auto const& mp : _behaviour.mps) { - ERR("\t%s", mp.name.c_str()); + ERR("\t{:s}", mp.name.c_str()); } - OGS_FATAL("But the number of passed material properties is %d.", + OGS_FATAL("But the number of passed material properties is {:d}.", _material_properties.size()); } } diff --git a/MaterialLib/SolidModels/SelectSolidConstitutiveRelation.h b/MaterialLib/SolidModels/SelectSolidConstitutiveRelation.h index 0d915d3cec2f49abf537a07529e279c65ba43cbe..7daea399d2fedefed35133082f6fd13915797696 100644 --- a/MaterialLib/SolidModels/SelectSolidConstitutiveRelation.h +++ b/MaterialLib/SolidModels/SelectSolidConstitutiveRelation.h @@ -50,16 +50,16 @@ MechanicsBase<DisplacementDim>& selectSolidConstitutiveRelation( if (constitutive_relation == end(constitutive_relations)) { OGS_FATAL( - "No constitutive relation found for material id %d and element %d. " - "There are %d constitutive relations available.", + "No constitutive relation found for material id {:d} and element " + "{:d}. There are {:d} constitutive relations available.", material_id, element_id, constitutive_relations.size()); } if (constitutive_relation->second == nullptr) { OGS_FATAL( - "The constitutive relation found for material id %d and element %d " - "is a nullptr, which is impossible.", + "The constitutive relation found for material id {:d} and element " + "{:d} is a nullptr, which is impossible.", material_id, element_id); } diff --git a/MaterialLib/TwoPhaseModels/CreateTwoPhaseFlowMaterialProperties.cpp b/MaterialLib/TwoPhaseModels/CreateTwoPhaseFlowMaterialProperties.cpp index 78ff7ffad69c5aa6c0c8d024fcf3a6dea118e871..5ec91bf25cf6b67356de5f6237db38786c51f527 100644 --- a/MaterialLib/TwoPhaseModels/CreateTwoPhaseFlowMaterialProperties.cpp +++ b/MaterialLib/TwoPhaseModels/CreateTwoPhaseFlowMaterialProperties.cpp @@ -9,7 +9,7 @@ #include "CreateTwoPhaseFlowMaterialProperties.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Algorithm.h" #include "MaterialLib/Fluid/FluidProperty.h" diff --git a/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.cpp b/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.cpp index bbea95d169bea5b66a3010f13fe194f6cb1c29c5..5693aafba3e3251151f50feab13e553baba3d541 100644 --- a/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.cpp +++ b/MaterialLib/TwoPhaseModels/TwoPhaseFlowWithPPMaterialProperties.cpp @@ -10,8 +10,8 @@ #include "TwoPhaseFlowWithPPMaterialProperties.h" #include <boost/math/special_functions/pow.hpp> -#include <logog/include/logog.hpp> #include <utility> +#include "BaseLib/Logging.h" #include "MaterialLib/Fluid/FluidProperty.h" #include "MaterialLib/PorousMedium/Porosity/Porosity.h" diff --git a/MathLib/CMakeLists.txt b/MathLib/CMakeLists.txt index a27d9fa6cee26f681b9f884bf57e282e617cef4f..0a1a2bbeec6562e33141fe33443300900c600d3c 100644 --- a/MathLib/CMakeLists.txt +++ b/MathLib/CMakeLists.txt @@ -30,7 +30,10 @@ target_include_directories(MathLib PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) set_target_properties(MathLib PROPERTIES LINKER_LANGUAGE CXX) -target_link_libraries(MathLib PUBLIC BaseLib logog ${OpenMP_CXX_LIBRARIES}) +target_link_libraries( + MathLib + PUBLIC BaseLib ${OpenMP_CXX_LIBRARIES} + PRIVATE spdlog::spdlog) if(CVODE_FOUND) target_include_directories(MathLib PRIVATE ${CVODE_INCLUDE_DIRS}) diff --git a/MathLib/GeometricBasics.cpp b/MathLib/GeometricBasics.cpp index 267166a0d1afb983002348669a7421db3e08c305..8fd6bc43dc9d74bde74c5b47e5ca4c4b0701e94d 100644 --- a/MathLib/GeometricBasics.cpp +++ b/MathLib/GeometricBasics.cpp @@ -7,7 +7,7 @@ * http://www.opengeosys.org/project/license */ -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <Eigen/Dense> diff --git a/MathLib/InterpolationAlgorithms/PiecewiseLinearInterpolation.cpp b/MathLib/InterpolationAlgorithms/PiecewiseLinearInterpolation.cpp index 2cadad0470b542fd4aa7c6a8ef8230b7fb832805..fd51e249ad2a67042f3b03c7956a5316904d2c05 100644 --- a/MathLib/InterpolationAlgorithms/PiecewiseLinearInterpolation.cpp +++ b/MathLib/InterpolationAlgorithms/PiecewiseLinearInterpolation.cpp @@ -41,7 +41,7 @@ PiecewiseLinearInterpolation::PiecewiseLinearInterpolation( { const std::size_t i = std::distance(_supp_pnts.begin(), it); OGS_FATAL( - "Variable %d and variable %d are the same. " + "Variable {:d} and variable {:d} are the same. " "Piecewise linear interpolation is not possible\n", i, i + 1); } diff --git a/MathLib/KelvinVector.cpp b/MathLib/KelvinVector.cpp index e4391aa333c87b28cb7f917c69645e79c20b919c..2d45a12ad4af7cd51b4403f403f8ee31b4b6290b 100644 --- a/MathLib/KelvinVector.cpp +++ b/MathLib/KelvinVector.cpp @@ -102,7 +102,7 @@ Eigen::Matrix<double, 3, 3> kelvinVectorToTensor(Eigen::Matrix<double, return kelvinVectorToTensor(v6); } OGS_FATAL( - "Conversion of dynamic Kelvin vector of size %d to a tensor is not " + "Conversion of dynamic Kelvin vector of size {:d} to a tensor is not " "possible. Kelvin vector must be of size 4 or 6.", v.size()); } @@ -176,7 +176,7 @@ kelvinVectorToSymmetricTensor(Eigen::Matrix<double, } OGS_FATAL( "Kelvin vector to tensor conversion expected an input vector of size 4 " - "or 6, but a vector of size %d was given.", + "or 6, but a vector of size {:d} was given.", v.size()); } diff --git a/MathLib/KelvinVector.h b/MathLib/KelvinVector.h index 48f4c04940b5675e1fa877eb60662f6805957df7..45f5701db863f50290620d2a18954c9f0c7a6084 100644 --- a/MathLib/KelvinVector.h +++ b/MathLib/KelvinVector.h @@ -180,7 +180,7 @@ symmetricTensorToKelvinVector(Eigen::MatrixBase<Derived> const& v) if (v.cols() != 1) { OGS_FATAL( - "KelvinVector must be a column vector, but input has %d columns.", + "KelvinVector must be a column vector, but input has {:d} columns.", v.cols()); } @@ -201,7 +201,7 @@ symmetricTensorToKelvinVector(Eigen::MatrixBase<Derived> const& v) { OGS_FATAL( "Symmetric tensor to Kelvin vector conversion expected an input " - "vector of size 4 or 6, but a vector of size %d was given.", + "vector of size 4 or 6, but a vector of size {:d} was given.", v.size()); } return result; @@ -222,7 +222,7 @@ KelvinVectorType<DisplacementDim> symmetricTensorToKelvinVector( { OGS_FATAL( "Symmetric tensor to Kelvin vector conversion expected an input " - "vector of size %d, but a vector of size %d was given.", + "vector of size {:d}, but a vector of size {:d} was given.", kelvin_vector_size, values.size()); } diff --git a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp index 3c4fc97446629859ae6e727dbdad9d53ddb21c3a..a8f3955c1ce5d15059326a124e9ba9ed4944ac90 100644 --- a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp +++ b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp @@ -10,7 +10,7 @@ #include "EigenLinearSolver.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #ifdef USE_MKL #include <Eigen/PardisoSupport> @@ -55,7 +55,7 @@ class EigenDirectLinearSolver final : public EigenLinearSolverBase public: bool solve(Matrix& A, Vector const& b, Vector& x, EigenOption& opt) override { - INFO("-> solve with %s", + INFO("-> solve with {:s}", EigenOption::getSolverName(opt.solver_type).c_str()); if (!A.isCompressed()) { @@ -88,7 +88,7 @@ class EigenIterativeLinearSolver final : public EigenLinearSolverBase public: bool solve(Matrix& A, Vector const& b, Vector& x, EigenOption& opt) override { - INFO("-> solve with %s (precon %s)", + INFO("-> solve with {:s} (precon {:s})", EigenOption::getSolverName(opt.solver_type).c_str(), EigenOption::getPreconName(opt.precon_type).c_str()); _solver.setTolerance(opt.error_tolerance); @@ -106,8 +106,9 @@ public: } x = _solver.solveWithGuess(b, x); - INFO("\t iteration: %d/%ld", _solver.iterations(), opt.max_iterations); - INFO("\t residual: %e\n", _solver.error()); + INFO("\t iteration: {:d}/{:d}", _solver.iterations(), + opt.max_iterations); + INFO("\t residual: {:e}\n", _solver.error()); if(_solver.info()!=Eigen::Success) { ERR("Failed during Eigen linear solve"); diff --git a/MathLib/LinAlg/Eigen/EigenOption.cpp b/MathLib/LinAlg/Eigen/EigenOption.cpp index 782a4dd24ed3374853f451ec5c28e6e6247cf6ec..35271534c242af387030092a2dbca46c6226e409 100644 --- a/MathLib/LinAlg/Eigen/EigenOption.cpp +++ b/MathLib/LinAlg/Eigen/EigenOption.cpp @@ -48,7 +48,7 @@ EigenOption::SolverType EigenOption::getSolverType(const std::string &solver_nam return SolverType::GMRES; } - OGS_FATAL("Unknown Eigen solver type `%s'", solver_name.c_str()); + OGS_FATAL("Unknown Eigen solver type `{:s}'", solver_name.c_str()); } EigenOption::PreconType EigenOption::getPreconType(const std::string &precon_name) @@ -66,7 +66,7 @@ EigenOption::PreconType EigenOption::getPreconType(const std::string &precon_nam return PreconType::ILUT; } - OGS_FATAL("Unknown Eigen preconditioner type `%s'", precon_name.c_str()); + OGS_FATAL("Unknown Eigen preconditioner type `{:s}'", precon_name.c_str()); } std::string EigenOption::getSolverName(SolverType const solver_type) diff --git a/MathLib/LinAlg/Eigen/EigenTools.cpp b/MathLib/LinAlg/Eigen/EigenTools.cpp index 8fd3c2335d172f5c5f01089e8ca47b45b6a1f883..88fac8ea857a55141b025847074ec38a2a7ccc34 100644 --- a/MathLib/LinAlg/Eigen/EigenTools.cpp +++ b/MathLib/LinAlg/Eigen/EigenTools.cpp @@ -10,7 +10,7 @@ #include "EigenTools.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "EigenVector.h" diff --git a/MathLib/LinAlg/Eigen/EigenTools.h b/MathLib/LinAlg/Eigen/EigenTools.h index 0dd4ba27e817ef76e4e49f24e3c6d613eb2935d0..a64edfceaf7e9ebc829a9d1d42abf6bcac0b0c67 100644 --- a/MathLib/LinAlg/Eigen/EigenTools.h +++ b/MathLib/LinAlg/Eigen/EigenTools.h @@ -11,7 +11,7 @@ #pragma once #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Error.h" #include "EigenMatrix.h" // for EigenMatrix::IndexType diff --git a/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp b/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp index fe5e8cfcf8fde36c7517376cf1b74400d1767382..4c039ba886fe33162755c911135698d5e369a2ec 100644 --- a/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp +++ b/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp @@ -13,7 +13,7 @@ #ifdef _OPENMP #include <omp.h> #endif -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" #include "MathLib/LinAlg/Eigen/EigenMatrix.h" diff --git a/MathLib/LinAlg/Lis/LisCheck.h b/MathLib/LinAlg/Lis/LisCheck.h index 02c8f3cc70a254690328de940c0da3621d70e0b2..5396ea6795aefa869da25c90e7dfa189f0f269ea 100644 --- a/MathLib/LinAlg/Lis/LisCheck.h +++ b/MathLib/LinAlg/Lis/LisCheck.h @@ -15,8 +15,8 @@ #pragma once #include <vector> +#include "BaseLib/Logging.h" #include "lis.h" -#include <logog/include/logog.hpp> namespace MathLib { @@ -31,7 +31,7 @@ inline bool checkLisError(int err) { bool ok = (err == LIS_SUCCESS); if (!ok) { - ERR("***ERROR: Lis error code = %d", err); + ERR("***ERROR: Lis error code = {:d}", err); } return ok; } diff --git a/MathLib/LinAlg/Lis/LisLinearSolver.cpp b/MathLib/LinAlg/Lis/LisLinearSolver.cpp index 8db668e7e271179722b930a9776b0539c9d201a2..c5f82e5701f046b4adfa0d647385e41364d5bda2 100644 --- a/MathLib/LinAlg/Lis/LisLinearSolver.cpp +++ b/MathLib/LinAlg/Lis/LisLinearSolver.cpp @@ -18,7 +18,7 @@ #include "LisLinearSolver.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "LisCheck.h" #include "LisMatrix.h" @@ -50,21 +50,21 @@ bool LisLinearSolver::solve(LisMatrix &A, LisVector &b, LisVector &x) lis_solver_set_option( const_cast<char*>(_lis_option._option_string.c_str()), solver); #ifdef _OPENMP - INFO("-> number of threads: %i", (int) omp_get_max_threads()); + INFO("-> number of threads: {:i}", (int)omp_get_max_threads()); #endif { int precon; ierr = lis_solver_get_precon(solver, &precon); if (!checkLisError(ierr)) return false; - INFO("-> precon: %i", precon); + INFO("-> precon: {:i}", precon); } { int slv; ierr = lis_solver_get_solver(solver, &slv); if (!checkLisError(ierr)) return false; - INFO("-> solver: %i", slv); + INFO("-> solver: {:i}", slv); } // solve @@ -78,7 +78,7 @@ bool LisLinearSolver::solve(LisMatrix &A, LisVector &b, LisVector &x) if (!checkLisError(ierr)) return false; - INFO("-> status: %d", linear_solver_status); + INFO("-> status: {:d}", linear_solver_status); { int iter = 0; @@ -86,14 +86,14 @@ bool LisLinearSolver::solve(LisMatrix &A, LisVector &b, LisVector &x) if (!checkLisError(ierr)) return false; - INFO("-> iteration: %d", iter); + INFO("-> iteration: {:d}", iter); } { double resid = 0.0; ierr = lis_solver_get_residualnorm(solver, &resid); if (!checkLisError(ierr)) return false; - INFO("-> residual: %g", resid); + INFO("-> residual: {:g}", resid); } { double time, itime, ptime, p_ctime, p_itime; @@ -101,11 +101,11 @@ bool LisLinearSolver::solve(LisMatrix &A, LisVector &b, LisVector &x) &ptime, &p_ctime, &p_itime); if (!checkLisError(ierr)) return false; - INFO("-> time total (s): %g", time); - INFO("-> time iterations (s): %g", itime); - INFO("-> time preconditioning (s): %g", ptime); - INFO("-> time precond. create (s): %g", p_ctime); - INFO("-> time precond. iter (s): %g", p_itime); + INFO("-> time total (s): {:g}", time); + INFO("-> time iterations (s): {:g}", itime); + INFO("-> time preconditioning (s): {:g}", ptime); + INFO("-> time precond. create (s): {:g}", p_ctime); + INFO("-> time precond. iter (s): {:g}", p_itime); } // Clear solver diff --git a/MathLib/LinAlg/Lis/LisMatrix.cpp b/MathLib/LinAlg/Lis/LisMatrix.cpp index b44d44d76a6c25a2806e351085f93bddecf58fb7..2552a4befe876feed0d7cc3361bf0d92f21f700e 100644 --- a/MathLib/LinAlg/Lis/LisMatrix.cpp +++ b/MathLib/LinAlg/Lis/LisMatrix.cpp @@ -17,7 +17,7 @@ #include <cmath> #include <cstdlib> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Error.h" #include "LisVector.h" diff --git a/MathLib/LinAlg/Lis/LisOption.h b/MathLib/LinAlg/Lis/LisOption.h index 03dd2c7847f7a22f9064719ec687b20964b9dcf8..30160602b3a4e471eaedc78a5f3123e90ff3de62 100644 --- a/MathLib/LinAlg/Lis/LisOption.h +++ b/MathLib/LinAlg/Lis/LisOption.h @@ -17,7 +17,7 @@ #include <string> #include <map> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" #include "MathLib/LinAlg/LinearSolverOptions.h" @@ -47,7 +47,7 @@ struct LisOption final if (auto s = options->getConfigParameterOptional<std::string>("lis")) { if (!s->empty()) { _option_string += " " + *s; - INFO("Lis options: '%s'", _option_string.c_str()); + INFO("Lis options: '{:s}'", _option_string.c_str()); } } } diff --git a/MathLib/LinAlg/PETSc/PETScLinearSolver.h b/MathLib/LinAlg/PETSc/PETScLinearSolver.h index 6d367fb53c59054d550a65fbb3ced96a7527caf9..40a695cce5bd23cf14303ed2094a5fa3d4a269ee 100644 --- a/MathLib/LinAlg/PETSc/PETScLinearSolver.h +++ b/MathLib/LinAlg/PETSc/PETScLinearSolver.h @@ -20,7 +20,7 @@ #include <petscksp.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" diff --git a/MathLib/Nonlinear/Root1D.h b/MathLib/Nonlinear/Root1D.h index 0849a8c37c35dc6921c5bf5cafdb51ae2aad4527..a2934fd8a555ddbb62b156dd86f0fdc4d6032b13 100644 --- a/MathLib/Nonlinear/Root1D.h +++ b/MathLib/Nonlinear/Root1D.h @@ -14,8 +14,8 @@ #include <cmath> #include <limits> #include <type_traits> -#include <logog/include/logog.hpp> #include "BaseLib/Error.h" +#include "BaseLib/Logging.h" namespace MathLib { diff --git a/MathLib/ODE/CVodeSolver.cpp b/MathLib/ODE/CVodeSolver.cpp index 46b07195b583a4847969e13b00b489689255ab0a..655ce7140e23f860db369ca6f793acc52173b966 100644 --- a/MathLib/ODE/CVodeSolver.cpp +++ b/MathLib/ODE/CVodeSolver.cpp @@ -10,7 +10,7 @@ #include "CVodeSolver.h" #include <cassert> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <cvode/cvode.h> /* prototypes for CVODE fcts., consts. */ #include <nvector/nvector_serial.h> /* serial N_Vector types, fcts., macros */ @@ -33,8 +33,8 @@ void check_error(std::string const& f_name, int const error_flag) { if (error_flag != CV_SUCCESS) { - OGS_FATAL("CVodeSolver: %s failed with error flag %d.", f_name.c_str(), - error_flag); + OGS_FATAL("CVodeSolver: {:s} failed with error flag {:d}.", + f_name.c_str(), error_flag); } } @@ -59,10 +59,11 @@ void printStats(void* cvode_mem) check_error("CVodeGetNumGEvals", CVodeGetNumGEvals(cvode_mem, &nge)); DBUG("Sundials CVode solver. Statistics:"); - DBUG("nst = %-6ld nfe = %-6ld nsetups = %-6ld nfeLS = %-6ld nje = %ld", - nst, nfe, nsetups, nfeLS, nje); - DBUG("nni = %-6ld ncfn = %-6ld netf = %-6ld nge = %ld\n", nni, ncfn, - netf, nge); + DBUG( + "nst = {:<0d} nfe = {:<0d} nsetups = {:<0d} nfeLS = {:<0d} nje = {:d}", + nst, nfe, nsetups, nfeLS, nje); + DBUG("nni = {:<0d} ncfn = {:<0d} netf = {:<0d} nge = {:d}\n", nni, + ncfn, netf, nge); } //! @} @@ -134,7 +135,7 @@ CVodeSolverImpl::CVodeSolverImpl(const BaseLib::ConfigTree& config, //! \ogs_file_param{ode_solver__CVODE__linear_multistep_method} config.getConfigParameterOptional<std::string>("linear_multistep_method")) { - DBUG("setting linear multistep method (config: %s)", param->c_str()); + DBUG("setting linear multistep method (config: {:s})", param->c_str()); if (*param == "Adams") { @@ -146,7 +147,7 @@ CVodeSolverImpl::CVodeSolverImpl(const BaseLib::ConfigTree& config, } else { - OGS_FATAL("unknown linear multistep method: %s", param->c_str()); + OGS_FATAL("unknown linear multistep method: {:s}", param->c_str()); } } @@ -154,7 +155,8 @@ CVodeSolverImpl::CVodeSolverImpl(const BaseLib::ConfigTree& config, //! \ogs_file_param{ode_solver__CVODE__nonlinear_solver_iteration} config.getConfigParameterOptional<std::string>("nonlinear_solver_iteration")) { - DBUG("setting nonlinear solver iteration (config: %s)", param->c_str()); + DBUG("setting nonlinear solver iteration (config: {:s})", + param->c_str()); if (*param == "Functional") { @@ -166,7 +168,8 @@ CVodeSolverImpl::CVodeSolverImpl(const BaseLib::ConfigTree& config, } else { - OGS_FATAL("unknown nonlinear solver iteration: %s", param->c_str()); + OGS_FATAL("unknown nonlinear solver iteration: {:s}", + param->c_str()); } } diff --git a/MathLib/ODE/ODESolverBuilder.h b/MathLib/ODE/ODESolverBuilder.h index 3d44dbe21c965a87e36b65ad55e531c6dc7d6728..5919346c7a06f600a192f2e5d37493186ae0b723 100644 --- a/MathLib/ODE/ODESolverBuilder.h +++ b/MathLib/ODE/ODESolverBuilder.h @@ -10,7 +10,7 @@ #pragma once -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Error.h" #include "ODESolver.h" diff --git a/MeshGeoToolsLib/AppendLinesAlongPolyline.cpp b/MeshGeoToolsLib/AppendLinesAlongPolyline.cpp index 30d50ec3c94246f69b12c4e0b86e49052ea4272d..f5474e8dace997033683c5e6d1e08b9b2f4328fd 100644 --- a/MeshGeoToolsLib/AppendLinesAlongPolyline.cpp +++ b/MeshGeoToolsLib/AppendLinesAlongPolyline.cpp @@ -8,7 +8,7 @@ #include "AppendLinesAlongPolyline.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoLib/Polyline.h" #include "GeoLib/PolylineVec.h" @@ -52,7 +52,7 @@ std::unique_ptr<MeshLib::Mesh> appendLinesAlongPolylines( if (vec_nodes_on_ply.empty()) { std::string ply_name; ply_vec.getNameOfElementByID(k, ply_name); - INFO("No nodes found on polyline %s", ply_name.c_str()); + INFO("No nodes found on polyline {:s}", ply_name.c_str()); continue; } diff --git a/MeshGeoToolsLib/BoundaryElementsAlongPolyline.cpp b/MeshGeoToolsLib/BoundaryElementsAlongPolyline.cpp index 2ac93a42e3c0628e1b3fb53089976937b984d812..a44cb59745bc06cb1d488366ad3ced0d4ea281c9 100644 --- a/MeshGeoToolsLib/BoundaryElementsAlongPolyline.cpp +++ b/MeshGeoToolsLib/BoundaryElementsAlongPolyline.cpp @@ -147,7 +147,7 @@ MeshLib::Element* BoundaryElementsAlongPolyline::modifyEdgeNodeOrdering( } else { - OGS_FATAL("Not implemented for element type %s", + OGS_FATAL("Not implemented for element type {:s}", typeid(edge).name()); } diff --git a/MeshGeoToolsLib/BoundaryElementsAtPoint.cpp b/MeshGeoToolsLib/BoundaryElementsAtPoint.cpp index 1bda95b46e65404f1f83020e72fca5c63a276154..e0ecfe0b7453484ae9cc872944f8a85cfa0cb0bd 100644 --- a/MeshGeoToolsLib/BoundaryElementsAtPoint.cpp +++ b/MeshGeoToolsLib/BoundaryElementsAtPoint.cpp @@ -29,7 +29,7 @@ BoundaryElementsAtPoint::BoundaryElementsAtPoint( { OGS_FATAL( "BoundaryElementsAtPoint: the mesh node searcher was unable to " - "locate the point (%f, %f, %f) in the mesh.", + "locate the point ({:f}, {:f}, {:f}) in the mesh.", _point[0], _point[1], _point[2]); } if (node_ids.size() == 1) @@ -52,9 +52,10 @@ BoundaryElementsAtPoint::BoundaryElementsAtPoint( if (!multiple_nodes_allowed) { OGS_FATAL( - "BoundaryElementsAtPoint: the mesh node searcher found %d points " - "near the requested point (%f, %f, %f) in the mesh, while exactly " - "one is expected. Node (id=%d) (%f, %f, %f) has distance %f.", + "BoundaryElementsAtPoint: the mesh node searcher found {:d} points " + "near the requested point ({:f}, {:f}, {:f}) in the mesh, while " + "exactly one is expected. Node (id={:d}) ({:f}, {:f}, {:f}) has " + "distance {:f}.", node_ids.size(), _point[0], _point[1], _point[2], mesh_nodes[nearest_node_id]->getID(), (*mesh_nodes[nearest_node_id])[0], @@ -63,14 +64,13 @@ BoundaryElementsAtPoint::BoundaryElementsAtPoint( MathLib::sqrDist(*mesh_nodes[nearest_node_id], point)); } WARN( - "BoundaryElementsAtPoint: the mesh node searcher found %d points " - "near the requested point (%f, %f, %f) in the mesh, while exactly " - "one is expected. Node (id=%d) (%f, %f, %f) has distance %f.", + "BoundaryElementsAtPoint: the mesh node searcher found {:d} points " + "near the requested point ({:f}, {:f}, {:f}) in the mesh, while " + "exactly one is expected. Node (id={:d}) ({:f}, {:f}, {:f}) has " + "distance {:f}.", node_ids.size(), _point[0], _point[1], _point[2], - mesh_nodes[nearest_node_id]->getID(), - (*mesh_nodes[nearest_node_id])[0], - (*mesh_nodes[nearest_node_id])[1], - (*mesh_nodes[nearest_node_id])[2], + mesh_nodes[nearest_node_id]->getID(), (*mesh_nodes[nearest_node_id])[0], + (*mesh_nodes[nearest_node_id])[1], (*mesh_nodes[nearest_node_id])[2], MathLib::sqrDist(*mesh_nodes[nearest_node_id], point)); std::array<MeshLib::Node*, 1> const nodes = { diff --git a/MeshGeoToolsLib/CMakeLists.txt b/MeshGeoToolsLib/CMakeLists.txt index 4bafd9791befbbb8650795751bc0ea556e585e60..fa25cf3497c3787ce28193edac7e272614cb3217 100644 --- a/MeshGeoToolsLib/CMakeLists.txt +++ b/MeshGeoToolsLib/CMakeLists.txt @@ -6,4 +6,4 @@ ogs_add_library(MeshGeoToolsLib ${SOURCES}) target_link_libraries(MeshGeoToolsLib PUBLIC GeoLib MathLib - PRIVATE BaseLib MeshLib logog) + PRIVATE BaseLib MeshLib spdlog::spdlog) diff --git a/MeshGeoToolsLib/ConstructMeshesFromGeometries.cpp b/MeshGeoToolsLib/ConstructMeshesFromGeometries.cpp index 85e6bc55e9843fef1586a280e507f367edc9dac1..81ca8381a87a4180572414e8f5a1c1f138ca6b5f 100644 --- a/MeshGeoToolsLib/ConstructMeshesFromGeometries.cpp +++ b/MeshGeoToolsLib/ConstructMeshesFromGeometries.cpp @@ -9,7 +9,7 @@ #include "ConstructMeshesFromGeometries.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Elements/Element.h" #include "MeshLib/MeshEditing/DuplicateMeshComponents.h" @@ -58,7 +58,7 @@ constructAdditionalMeshesFromGeometries( auto const& geometry = *vec_data[i]; - DBUG("Creating mesh from geometry %s %s.", vec_name.c_str(), + DBUG("Creating mesh from geometry {:s} {:s}.", vec_name.c_str(), geometry_name.c_str()); additional_meshes.emplace_back(createMeshFromElementSelection( diff --git a/MeshGeoToolsLib/CreateSearchLength.cpp b/MeshGeoToolsLib/CreateSearchLength.cpp index bd8cb76a35c320888bc8d04e5d40b209dde63f75..b5371b158c00a1863392bdf622e404a63d35f144 100644 --- a/MeshGeoToolsLib/CreateSearchLength.cpp +++ b/MeshGeoToolsLib/CreateSearchLength.cpp @@ -44,7 +44,7 @@ std::unique_ptr<MeshGeoToolsLib::SearchLength> createSearchLengthAlgorithm( //! \ogs_file_param_special{prj__search_length_algorithm__heuristic} return std::make_unique<HeuristicSearchLength>(mesh); } - OGS_FATAL("Unknown search length algorithm type '%s'.", type.c_str()); + OGS_FATAL("Unknown search length algorithm type '{:s}'.", type.c_str()); } } // end namespace MeshGeoToolsLib diff --git a/MeshGeoToolsLib/GeoMapper.cpp b/MeshGeoToolsLib/GeoMapper.cpp index 3ddf204318c91a661b7270720b512e99005b01c0..5cd7098a00a824efd59e1ae556d665ec9fdc6d34 100644 --- a/MeshGeoToolsLib/GeoMapper.cpp +++ b/MeshGeoToolsLib/GeoMapper.cpp @@ -18,7 +18,7 @@ #include <sstream> #include <numeric> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Algorithm.h" @@ -53,7 +53,7 @@ void GeoMapper::mapOnDEM(std::unique_ptr<GeoLib::Raster const> raster) { std::vector<GeoLib::Point*> const* pnts(_geo_objects.getPointVec(_geo_name)); if (! pnts) { - ERR("Geometry '%s' does not exist.", _geo_name.c_str()); + ERR("Geometry '{:s}' does not exist.", _geo_name.c_str()); return; } _raster = std::move(raster); @@ -69,7 +69,7 @@ void GeoMapper::mapOnMesh(MeshLib::Mesh const*const mesh) { std::vector<GeoLib::Point*> const* pnts(_geo_objects.getPointVec(_geo_name)); if (! pnts) { - ERR("Geometry '%s' does not exist.", _geo_name.c_str()); + ERR("Geometry '{:s}' does not exist.", _geo_name.c_str()); return; } @@ -115,7 +115,7 @@ void GeoMapper::mapToConstantValue(double value) std::vector<GeoLib::Point*> const* points (this->_geo_objects.getPointVec(this->_geo_name)); if (points == nullptr) { - ERR("Geometry '%s' not found.", this->_geo_name.c_str()); + ERR("Geometry '{:s}' not found.", this->_geo_name.c_str()); return; } std::for_each(points->begin(), points->end(), [value](GeoLib::Point* pnt){ (*pnt)[2] = value; }); @@ -306,7 +306,7 @@ static std::vector<GeoLib::LineSegment> createSubSegmentsForElement( out << k << " " << intersections[k] << "\n"; } out << "Could not map segment on element. Aborting.\n"; - OGS_FATAL("%s", out.str().c_str()); + OGS_FATAL("{:s}", out.str().c_str()); } if (intersections.size() == 1 && elem == beg_elem) @@ -476,7 +476,7 @@ static bool snapPointToElementNode(MathLib::Point3d& p, p = node; #ifdef DEBUG_GEOMAPPER out << "to " << p; - DBUG("%s", out.str().c_str()); + DBUG("{:s}", out.str().c_str()); #endif return true; } diff --git a/MeshGeoToolsLib/HeuristicSearchLength.cpp b/MeshGeoToolsLib/HeuristicSearchLength.cpp index d1ac7abbf96e8d5bd5fe8d3ed97fadc4c7e08728..85558faeadaf5f50786db50c0dce964af0f552fd 100644 --- a/MeshGeoToolsLib/HeuristicSearchLength.cpp +++ b/MeshGeoToolsLib/HeuristicSearchLength.cpp @@ -11,7 +11,7 @@ #include "HeuristicSearchLength.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Elements/Element.h" @@ -72,7 +72,7 @@ HeuristicSearchLength::HeuristicSearchLength(MeshLib::Mesh const& mesh, LengthTy DBUG( "[MeshNodeSearcher::MeshNodeSearcher] Calculated search length for " - "mesh '%s' is %f.", + "mesh '{:s}' is {:f}.", _mesh.getName().c_str(), _search_length); } diff --git a/MeshGeoToolsLib/IdentifySubdomainMesh.cpp b/MeshGeoToolsLib/IdentifySubdomainMesh.cpp index c654562c379d23d0be21dda0cab3756fd45a9196..ee3977f59b7c84273b547f0da9d3e45ea7535876 100644 --- a/MeshGeoToolsLib/IdentifySubdomainMesh.cpp +++ b/MeshGeoToolsLib/IdentifySubdomainMesh.cpp @@ -36,8 +36,8 @@ std::vector<std::size_t> identifySubdomainMeshNodes( { OGS_FATAL( "Expected to find exactly one node in the bulk mesh for each node " - "of the subdomain; Found %d nodes in the bulk mesh out of %d nodes " - "in the subdomain.", + "of the subdomain; Found {:d} nodes in the bulk mesh out of {:d} " + "nodes in the subdomain.", bulk_node_ids.size(), subdomain_mesh.getNumberOfNodes()); } @@ -125,11 +125,11 @@ std::vector<std::vector<std::size_t>> identifySubdomainMeshElements( if (bulk_element_ids.empty()) { - ERR("No element could be found for the subdomain element %d. " + ERR("No element could be found for the subdomain element {:d}. " "Corresponding bulk mesh node ids are:", e->getID()); for (auto const i : element_node_ids_bulk) - ERR("\t%d", i); + ERR("\t{:d}", i); OGS_FATAL( "Expect at least one element to be found in the bulk mesh."); } @@ -162,8 +162,8 @@ void updateOrCheckExistingSubdomainProperty( begin(values), end(values))) { INFO( - "There is already a '%s' property present in the subdomain mesh " - "'%s' and it is equal to the newly computed values.", + "There is already a '{:s}' property present in the subdomain mesh " + "'{:s}' and it is equal to the newly computed values.", property_name.c_str(), mesh.getName().c_str()); return; } @@ -172,8 +172,8 @@ void updateOrCheckExistingSubdomainProperty( // Property differs. Notify and update if forced. // WARN( - "There is already a '%s' property present in the subdomain mesh '%s' " - "and it is not equal to the newly computed values.", + "There is already a '{:s}' property present in the subdomain mesh " + "'{:s}' and it is not equal to the newly computed values.", property_name.c_str(), mesh.getName().c_str()); @@ -182,7 +182,7 @@ void updateOrCheckExistingSubdomainProperty( OGS_FATAL("The force overwrite flag was not specified, exiting."); } - INFO("Overwriting '%s' property.", property_name.c_str()); + INFO("Overwriting '{:s}' property.", property_name.c_str()); original_property.resize(values.size()); std::copy(begin(values), end(values), begin(original_property)); } diff --git a/MeshGeoToolsLib/MeshNodeSearcher.cpp b/MeshGeoToolsLib/MeshNodeSearcher.cpp index efb3600bf28fcbe1a96684104d07b89d4a3fcb53..4be0bc8f023f38a6b8a04e7c08fa95f2c5255abf 100644 --- a/MeshGeoToolsLib/MeshNodeSearcher.cpp +++ b/MeshGeoToolsLib/MeshNodeSearcher.cpp @@ -18,7 +18,7 @@ #include "MeshNodesAlongSurface.h" #include "MeshNodesOnPoint.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoLib/Point.h" #include "GeoLib/Polyline.h" @@ -41,7 +41,7 @@ MeshNodeSearcher::MeshNodeSearcher( _search_length_algorithm(std::move(search_length_algorithm)), _search_all_nodes(search_all_nodes) { - DBUG("The search length for mesh '%s' is %e.", _mesh.getName().c_str(), + DBUG("The search length for mesh '{:s}' is {:e}.", _mesh.getName().c_str(), _search_length_algorithm->getSearchLength()); } @@ -103,8 +103,8 @@ std::vector<std::size_t> MeshNodeSearcher::getMeshNodeIDs( if (ids.empty()) { OGS_FATAL( - "No nodes could be found in the mesh for point %d : (%g, %g, " - "%g) in %g epsilon radius in the mesh '%s'", + "No nodes could be found in the mesh for point {:d} : ({:g}, " + "{:g}, {:g}) in {:g} epsilon radius in the mesh '{:s}'", p.getID(), p[0], p[1], p[2], epsilon_radius, _mesh.getName().c_str()); } @@ -120,9 +120,9 @@ std::vector<std::size_t> MeshNodeSearcher::getMeshNodeIDs( << "\n"; } OGS_FATAL( - "Found %d nodes in the mesh for point %d : (%g, %g, %g) in %g " - "epsilon radius in the mesh '%s'. Expected to find exactly one " - "node.\n%s", + "Found {:d} nodes in the mesh for point {:d} : ({:g}, {:g}, " + "{:g}) in {:g} epsilon radius in the mesh '{:s}'. Expected to " + "find exactly one node.\n{:s}", ids.size(), p.getID(), p[0], p[1], p[2], epsilon_radius, _mesh.getName().c_str(), ss.str().c_str()); } diff --git a/MeshLib/CMakeLists.txt b/MeshLib/CMakeLists.txt index b739688c335effc0e826fbbc0b3780e660372115..bd46787bfae62118f372fd70de5b28df3018cc9f 100644 --- a/MeshLib/CMakeLists.txt +++ b/MeshLib/CMakeLists.txt @@ -23,9 +23,7 @@ endif() # Create the library ogs_add_library(MeshLib ${SOURCES}) -target_link_libraries(MeshLib - PUBLIC BaseLib - GeoLib - MathLib - logog - ${VTK_LIBRARIES}) +target_link_libraries( + MeshLib + PUBLIC BaseLib GeoLib MathLib ${VTK_LIBRARIES} + PRIVATE spdlog::spdlog) diff --git a/MeshLib/ElementStatus.cpp b/MeshLib/ElementStatus.cpp index c0c69fe323395404aa905618331126118c21c4e6..f000e70f9832c5a6fcdc8026c36480606da4fe79 100644 --- a/MeshLib/ElementStatus.cpp +++ b/MeshLib/ElementStatus.cpp @@ -71,7 +71,7 @@ ElementStatus::ElementStatus(Mesh const* const mesh, } DBUG( - "Deactivated %d materials and resulting active %d nodes and %d " + "Deactivated {:d} materials and resulting active {:d} nodes and {:d} " "elements", vec_inactive_matIDs.size(), _vec_active_nodes.size(), diff --git a/MeshLib/Elements/EdgeReturn.cpp b/MeshLib/Elements/EdgeReturn.cpp index 361fe3567925903da3dbddd167253a81eec7bfff..12952e9644c29023f918e2a48a739240dec1c347 100644 --- a/MeshLib/Elements/EdgeReturn.cpp +++ b/MeshLib/Elements/EdgeReturn.cpp @@ -10,7 +10,7 @@ #include "EdgeReturn.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Node.h" #include "Element.h" diff --git a/MeshLib/Elements/Element.cpp b/MeshLib/Elements/Element.cpp index 9b15aa45969c3a505a61141d4794e04a62a27385..50b5f0b6f25493ab084c3fbd3ea396ddeeb26df6 100644 --- a/MeshLib/Elements/Element.cpp +++ b/MeshLib/Elements/Element.cpp @@ -14,7 +14,7 @@ #include "Element.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MathLib/GeometricBasics.h" #include "MathLib/MathTools.h" @@ -164,7 +164,8 @@ const Node* Element::getNode(unsigned i) const return _nodes[i]; } #ifndef NDEBUG - ERR("Error in MeshLib::Element::getNode() - Index %d in %s", i, MeshElemType2String(getGeomType()).c_str()); + ERR("Error in MeshLib::Element::getNode() - Index {:d} in {:s}", i, + MeshElemType2String(getGeomType()).c_str()); return nullptr; #endif } @@ -261,7 +262,7 @@ bool isPointInElementXY(MathLib::Point3d const& p, Element const& e) MathLib::isPointInTriangleXY(p, n0, n2, n3); } - WARN("isPointInElementXY: element type '%s' is not supported.", + WARN("isPointInElementXY: element type '{:s}' is not supported.", MeshLib::MeshElemType2String(e.getGeomType()).c_str()); return false; } diff --git a/MeshLib/Elements/HexRule20.cpp b/MeshLib/Elements/HexRule20.cpp index 9484fe287ca62da0e027d67336f2547585f67e77..c854c0faa83d42d05eb81c22bad8aeffc33f9f6e 100644 --- a/MeshLib/Elements/HexRule20.cpp +++ b/MeshLib/Elements/HexRule20.cpp @@ -12,7 +12,7 @@ #include <array> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Node.h" #include "Quad.h" @@ -55,7 +55,7 @@ const Element* HexRule20::getFace(const Element* e, unsigned i) } return new Quad8(nodes, e->getID()); } - ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i); + ERR("Error in MeshLib::Element::getFace() - Index {:d} does not exist.", i); return nullptr; } diff --git a/MeshLib/Elements/HexRule8.cpp b/MeshLib/Elements/HexRule8.cpp index 4eb944b58797fbcf134026a6375be9ae88884106..31526574a6527abc71ba0c4ff8dc1c0c1f2a72e3 100644 --- a/MeshLib/Elements/HexRule8.cpp +++ b/MeshLib/Elements/HexRule8.cpp @@ -12,7 +12,7 @@ #include <array> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MathLib/GeometricBasics.h" @@ -59,7 +59,7 @@ const Element* HexRule8::getFace(const Element* e, unsigned i) } return new Quad(nodes, e->getID()); } - ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i); + ERR("Error in MeshLib::Element::getFace() - Index {:d} does not exist.", i); return nullptr; } diff --git a/MeshLib/Elements/LineRule2.cpp b/MeshLib/Elements/LineRule2.cpp index b9f2130397c73009b48a7276bc54e8a3cfed7f79..998142dd73253459bcf6220f425339ce950163ea 100644 --- a/MeshLib/Elements/LineRule2.cpp +++ b/MeshLib/Elements/LineRule2.cpp @@ -10,8 +10,6 @@ #include "LineRule2.h" -#include <logog/include/logog.hpp> - #include "MeshLib/Node.h" namespace MeshLib { diff --git a/MeshLib/Elements/MapBulkElementPoint.cpp b/MeshLib/Elements/MapBulkElementPoint.cpp index 5df1657b1ab41dbe6e9922399293c1553e8c3727..538e66310d43da14d2f288e7227a2a4ad51c44ad 100644 --- a/MeshLib/Elements/MapBulkElementPoint.cpp +++ b/MeshLib/Elements/MapBulkElementPoint.cpp @@ -28,7 +28,7 @@ MathLib::Point3d getBulkElementPoint(MeshLib::Quad const& /*quad*/, case 3: return MathLib::Point3d{std::array<double, 3>{{0.0, 1.0 - wp[0], 0.0}}}; default: - OGS_FATAL("Invalid face id '%u' for the quad.", face_id); + OGS_FATAL("Invalid face id '{:d}' for the quad.", face_id); } } @@ -55,7 +55,7 @@ MathLib::Point3d getBulkElementPoint(MeshLib::Hex const& /*hex*/, case 5: return MathLib::Point3d{std::array<double, 3>{{wp[0], wp[1], 1.0}}}; default: - OGS_FATAL("Invalid face id '%u' for the hexahedron.", face_id); + OGS_FATAL("Invalid face id '{:d}' for the hexahedron.", face_id); } } @@ -76,7 +76,7 @@ MathLib::Point3d getBulkElementPoint(MeshLib::Tet const& /*tet*/, return MathLib::Point3d{ std::array<double, 3>{{0, 1 - wp[0], wp[1]}}}; default: - OGS_FATAL("Invalid face id '%u' for the tetrahedron.", face_id); + OGS_FATAL("Invalid face id '{:d}' for the tetrahedron.", face_id); } } @@ -102,7 +102,7 @@ MathLib::Point3d getBulkElementPoint(MeshLib::Prism const& /*prism*/, return MathLib::Point3d{ std::array<double, 3>{{wp[0], wp[1], 1.0}}}; default: - OGS_FATAL("Invalid face id '%u' for the prism.", face_id); + OGS_FATAL("Invalid face id '{:d}' for the prism.", face_id); } } @@ -117,7 +117,7 @@ MathLib::Point3d getBulkElementPoint(MeshLib::Mesh const& mesh, MeshLib::Quad const& quad(*dynamic_cast<MeshLib::Quad const*>(element)); return getBulkElementPoint(quad, bulk_face_id, wp); } - OGS_FATAL("Wrong cell type '%s' or functionality not yet implemented.", + OGS_FATAL("Wrong cell type '{:s}' or functionality not yet implemented.", MeshLib::CellType2String(element->getCellType()).c_str()); } @@ -143,7 +143,7 @@ MathLib::Point3d getBulkElementPoint(MeshLib::Mesh const& mesh, MeshLib::Tet const& tet = *static_cast<MeshLib::Tet const*>(element); return getBulkElementPoint(tet, bulk_face_id, wp); } - OGS_FATAL("Wrong cell type '%s' or functionality not yet implemented.", + OGS_FATAL("Wrong cell type '{:s}' or functionality not yet implemented.", MeshLib::CellType2String(element->getCellType()).c_str()); } diff --git a/MeshLib/Elements/PrismRule15.cpp b/MeshLib/Elements/PrismRule15.cpp index 1845445e728d6525ed7a1e2ca8d9cef7dc929500..df497e8032725b4cfe73962517dfa63069b163e7 100644 --- a/MeshLib/Elements/PrismRule15.cpp +++ b/MeshLib/Elements/PrismRule15.cpp @@ -10,7 +10,7 @@ #include "PrismRule15.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Node.h" #include "Quad.h" @@ -60,7 +60,7 @@ const Element* PrismRule15::getFace(const Element* e, unsigned i) return new Quad8(nodes); } - ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i); + ERR("Error in MeshLib::Element::getFace() - Index {:d} does not exist.", i); return nullptr; } diff --git a/MeshLib/Elements/PrismRule6.cpp b/MeshLib/Elements/PrismRule6.cpp index 8f7a45f821b0f24a771cdee0f5e5e1531fdb8ebe..5ea981fe4f8582d769d81b84fb06e22670d823ab 100644 --- a/MeshLib/Elements/PrismRule6.cpp +++ b/MeshLib/Elements/PrismRule6.cpp @@ -10,7 +10,7 @@ #include "PrismRule6.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MathLib/GeometricBasics.h" @@ -62,7 +62,7 @@ const Element* PrismRule6::getFace(const Element* e, unsigned i) return new Quad(nodes); } - ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i); + ERR("Error in MeshLib::Element::getFace() - Index {:d} does not exist.", i); return nullptr; } diff --git a/MeshLib/Elements/PyramidRule13.cpp b/MeshLib/Elements/PyramidRule13.cpp index be8b51cafd80c24595ee9556118ebfb3c41b65ea..9235df3c01d2d01f6cd087d781a1b8b9f4bc2395 100644 --- a/MeshLib/Elements/PyramidRule13.cpp +++ b/MeshLib/Elements/PyramidRule13.cpp @@ -10,7 +10,7 @@ #include "PyramidRule13.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Node.h" #include "Quad.h" @@ -59,7 +59,7 @@ const Element* PyramidRule13::getFace(const Element* e, unsigned i) return new Quad8(nodes, e->getID()); } - ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i); + ERR("Error in MeshLib::Element::getFace() - Index {:d} does not exist.", i); return nullptr; } diff --git a/MeshLib/Elements/PyramidRule5.cpp b/MeshLib/Elements/PyramidRule5.cpp index e4f4db04ec2a7c9d5360319a5f1e1ea42659a0f5..eea3de3bafd60c5592b30cb97109212b058d4189 100644 --- a/MeshLib/Elements/PyramidRule5.cpp +++ b/MeshLib/Elements/PyramidRule5.cpp @@ -10,7 +10,7 @@ #include "PyramidRule5.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MathLib/GeometricBasics.h" @@ -61,7 +61,7 @@ const Element* PyramidRule5::getFace(const Element* e, unsigned i) return new Quad(nodes, e->getID()); } - ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i); + ERR("Error in MeshLib::Element::getFace() - Index {:d} does not exist.", i); return nullptr; } diff --git a/MeshLib/Elements/QuadRule4.cpp b/MeshLib/Elements/QuadRule4.cpp index e8d41ec384539446fa82f8fdbb9799ce24676c08..276a8bd0108086d39b374ad9253f5cdd6b02283a 100644 --- a/MeshLib/Elements/QuadRule4.cpp +++ b/MeshLib/Elements/QuadRule4.cpp @@ -10,8 +10,6 @@ #include "QuadRule4.h" -#include <logog/include/logog.hpp> - #include "MathLib/GeometricBasics.h" #include "MeshLib/Node.h" diff --git a/MeshLib/Elements/TemplateElement.h b/MeshLib/Elements/TemplateElement.h index a05d7cab6e666d519afe60f273e3ff7aeb4ffdf6..2db18f3ba50876a475bf26dc1f78b0daaf1b7c81 100644 --- a/MeshLib/Elements/TemplateElement.h +++ b/MeshLib/Elements/TemplateElement.h @@ -98,7 +98,7 @@ public: { return ELEMENT_RULE::getFace(this, i); } - OGS_FATAL("TemplateElement::getBoundary for boundary %u failed.", i); + OGS_FATAL("TemplateElement::getBoundary for boundary {:d} failed.", i); } /// Returns the number of boundaries of the element. diff --git a/MeshLib/Elements/TetRule10.cpp b/MeshLib/Elements/TetRule10.cpp index 7d41675c5b39abc5a9818fe8d91a7ccc628dd0b1..1a75211da36bec9ab57451e622a4a0ee1af81416 100644 --- a/MeshLib/Elements/TetRule10.cpp +++ b/MeshLib/Elements/TetRule10.cpp @@ -12,7 +12,7 @@ #include <array> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Node.h" #include "Tri.h" @@ -49,7 +49,7 @@ const Element* TetRule10::getFace(const Element* e, unsigned i) } return new Tri6(nodes, e->getID()); } - ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i); + ERR("Error in MeshLib::Element::getFace() - Index {:d} does not exist.", i); return nullptr; } diff --git a/MeshLib/Elements/TetRule4.cpp b/MeshLib/Elements/TetRule4.cpp index 512fe1c9dd0abd993f6de62fd02703f79a58a543..26fa1a874971fdbc1856ea85bd8904cf34f172fb 100644 --- a/MeshLib/Elements/TetRule4.cpp +++ b/MeshLib/Elements/TetRule4.cpp @@ -12,7 +12,7 @@ #include <array> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MathLib/GeometricBasics.h" @@ -51,7 +51,7 @@ const Element* TetRule4::getFace(const Element* e, unsigned i) } return new Tri(nodes, e->getID()); } - ERR("Error in MeshLib::Element::getFace() - Index %d does not exist.", i); + ERR("Error in MeshLib::Element::getFace() - Index {:d} does not exist.", i); return nullptr; } diff --git a/MeshLib/Elements/TriRule3.cpp b/MeshLib/Elements/TriRule3.cpp index cd4981201f090608507428429d129b8c0266ab7e..9f5c1ee640a5f1f6efebb1fae010257c0a42e4f9 100644 --- a/MeshLib/Elements/TriRule3.cpp +++ b/MeshLib/Elements/TriRule3.cpp @@ -10,8 +10,6 @@ #include "TriRule3.h" -#include <logog/include/logog.hpp> - #include "MathLib/GeometricBasics.h" #include "MeshLib/Node.h" diff --git a/MeshLib/IO/Legacy/MeshIO.cpp b/MeshLib/IO/Legacy/MeshIO.cpp index 2a1d94c5d14db1d401808bbad7d8b44f8c108bfa..c69ee8be54c1dbeec4e27f20c4a3572e5cc3cb12 100644 --- a/MeshLib/IO/Legacy/MeshIO.cpp +++ b/MeshLib/IO/Legacy/MeshIO.cpp @@ -22,7 +22,7 @@ #include <memory> #include <sstream> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -46,7 +46,8 @@ MeshLib::Mesh* MeshIO::loadMeshFromFile(const std::string& file_name) std::ifstream in (file_name.c_str(),std::ios::in); if (!in.is_open()) { - WARN("MeshIO::loadMeshFromFile() - Could not open file %s.", file_name.c_str()); + WARN("MeshIO::loadMeshFromFile() - Could not open file {:s}.", + file_name.c_str()); return nullptr; } @@ -105,8 +106,9 @@ MeshLib::Mesh* MeshIO::loadMeshFromFile(const std::string& file_name) materials.push_back(readMaterialID(ss)); MeshLib::Element *elem(readElement(ss,nodes)); if (elem == nullptr) { - ERR("Reading mesh element %d from file '%s' failed.", i, - file_name.c_str()); + ERR("Reading mesh element {:d} from file '{:s}' " + "failed.", + i, file_name.c_str()); // clean up the elements vector std::for_each(elements.begin(), elements.end(), std::default_delete<MeshLib::Element>()); @@ -146,8 +148,8 @@ MeshLib::Mesh* MeshIO::loadMeshFromFile(const std::string& file_name) materials.cend()); } INFO("\t... finished."); - INFO("Nr. Nodes: %d.", nodes.size()); - INFO("Nr. Elements: %d.", elements.size()); + INFO("Nr. Nodes: {:d}.", nodes.size()); + INFO("Nr. Elements: {:d}.", elements.size()); in.close(); return mesh; diff --git a/MeshLib/IO/MPI_IO/NodePartitionedMeshReader.cpp b/MeshLib/IO/MPI_IO/NodePartitionedMeshReader.cpp index 4d33bfa7674fce3cb4afd3a82b18d25383bc763b..e3143fdd1e6a1151b8369babcdde59695512c2c3 100644 --- a/MeshLib/IO/MPI_IO/NodePartitionedMeshReader.cpp +++ b/MeshLib/IO/MPI_IO/NodePartitionedMeshReader.cpp @@ -15,7 +15,7 @@ #include "NodePartitionedMeshReader.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #ifdef USE_PETSC #include <mpi.h> @@ -35,8 +35,9 @@ is_safely_convertable(VALUE const& value) bool const result = value <= std::numeric_limits<TYPE>::max(); if (!result) { - ERR("The value %d is too large for conversion.", value); - ERR("Maximum available size is %d.", std::numeric_limits<TYPE>::max()); + ERR("The value {:d} is too large for conversion.", value); + ERR("Maximum available size is {:d}.", + std::numeric_limits<TYPE>::max()); } return result; } @@ -95,7 +96,7 @@ MeshLib::NodePartitionedMesh* NodePartitionedMeshReader::read( mesh = readBinary(file_name_base); } - INFO("[time] Reading the mesh took %f s.", timer.elapsed()); + INFO("[time] Reading the mesh took {:f} s.", timer.elapsed()); MPI_Barrier(_mpi_comm); @@ -123,7 +124,8 @@ NodePartitionedMeshReader::readBinaryDataFromFile(std::string const& filename, if(file_status != 0) { - ERR("Error opening file %s. MPI error code %d", filename.c_str(), file_status); + ERR("Error opening file {:s}. MPI error code {:d}", filename.c_str(), + file_status); return false; } @@ -217,9 +219,11 @@ void NodePartitionedMeshReader::readPropertiesBinary( std::ifstream is(fname_cfg.c_str(), std::ios::binary | std::ios::in); if (!is) { - WARN("Could not open file '%s'.\n" - "\tYou can ignore this warning if the mesh does not contain %s-" - "wise property data.", fname_cfg.c_str(), item_type.data()); + WARN( + "Could not open file '{:s}'.\n" + "\tYou can ignore this warning if the mesh does not contain {:s}-" + "wise property data.", + fname_cfg.c_str(), item_type.data()); return; } std::size_t number_of_properties = 0; @@ -233,15 +237,15 @@ void NodePartitionedMeshReader::readPropertiesBinary( { OGS_FATAL( "Error in NodePartitionedMeshReader::readPropertiesBinary: " - "Could not read the meta data for the PropertyVector %d", + "Could not read the meta data for the PropertyVector {:d}", i); } } for (std::size_t i(0); i < number_of_properties; ++i) { - DBUG("[%d] +++++++++++++", _mpi_rank); + DBUG("[{:d}] +++++++++++++", _mpi_rank); MeshLib::IO::writePropertyVectorMetaData(*(vec_pvmd[i])); - DBUG("[%d] +++++++++++++", _mpi_rank); + DBUG("[{:d}] +++++++++++++", _mpi_rank); } auto pos = is.tellg(); auto offset = @@ -259,11 +263,12 @@ void NodePartitionedMeshReader::readPropertiesBinary( { OGS_FATAL( "Error in NodePartitionedMeshReader::readPropertiesBinary: " - "Could not read the partition meta data for the mpi process %d", + "Could not read the partition meta data for the mpi process {:d}", _mpi_rank); } - DBUG("[%d] offset in the PropertyVector: %d", _mpi_rank, pvpmd->offset); - DBUG("[%d] %d tuples in partition.", _mpi_rank, pvpmd->number_of_tuples); + DBUG("[{:d}] offset in the PropertyVector: {:d}", _mpi_rank, pvpmd->offset); + DBUG("[{:d}] {:d} tuples in partition.", _mpi_rank, + pvpmd->number_of_tuples); is.close(); const std::string fname_val = file_name_base + "_partitioned_" + item_type + @@ -272,9 +277,10 @@ void NodePartitionedMeshReader::readPropertiesBinary( is.open(fname_val.c_str(), std::ios::binary | std::ios::in); if (!is) { - ERR("Could not open file '%s'\n." - "\tYou can ignore this warning if the mesh does not contain %s-" - "wise property data.", fname_val.c_str(), item_type.data()); + ERR("Could not open file '{:s}'\n." + "\tYou can ignore this warning if the mesh does not contain {:s}-" + "wise property data.", + fname_val.c_str(), item_type.data()); } readDomainSpecificPartOfPropertyVectors(vec_pvmd, *pvpmd, t, is, p); @@ -292,10 +298,12 @@ void NodePartitionedMeshReader::readDomainSpecificPartOfPropertyVectors( std::size_t const number_of_properties = vec_pvmd.size(); for (std::size_t i(0); i < number_of_properties; ++i) { - DBUG("[%d] global offset: %d, offset within the PropertyVector: %d.", - _mpi_rank, global_offset, - global_offset + - pvpmd.offset * vec_pvmd[i]->data_type_size_in_bytes); + DBUG( + "[{:d}] global offset: {:d}, offset within the PropertyVector: " + "{:d}.", + _mpi_rank, global_offset, + global_offset + + pvpmd.offset * vec_pvmd[i]->data_type_size_in_bytes); if (vec_pvmd[i]->is_int_type) { if (vec_pvmd[i]->is_data_type_signed) @@ -347,7 +355,7 @@ bool NodePartitionedMeshReader::openASCIIFiles( if( !is_cfg.good() ) { - ERR("Error opening file %s for input.", filename.c_str()); + ERR("Error opening file {:s} for input.", filename.c_str()); return false; } @@ -369,7 +377,7 @@ bool NodePartitionedMeshReader::openASCIIFiles( is_node.open(filename); if( !is_node.good() ) { - ERR("Error opening file %s for input.", filename.c_str()); + ERR("Error opening file {:s} for input.", filename.c_str()); return false; } } @@ -379,7 +387,7 @@ bool NodePartitionedMeshReader::openASCIIFiles( is_elem.open(filename); if( !is_elem.good() ) { - ERR("Error opening file %s for input.", filename.c_str()); + ERR("Error opening file {:s} for input.", filename.c_str()); return false; } } @@ -665,7 +673,7 @@ void NodePartitionedMeshReader::setElements( default: OGS_FATAL( "NodePartitionedMeshReader: construction of element type " - "%d is not implemented.", + "{:d} is not implemented.", e_type); } } diff --git a/MeshLib/IO/MPI_IO/NodePartitionedMeshReader.h b/MeshLib/IO/MPI_IO/NodePartitionedMeshReader.h index 2a6139b8cce459163d54f143306591cf1a4067e7..b954ef8033df6c6eb932f65b5ce3b17e3a90c3fd 100644 --- a/MeshLib/IO/MPI_IO/NodePartitionedMeshReader.h +++ b/MeshLib/IO/MPI_IO/NodePartitionedMeshReader.h @@ -200,7 +200,7 @@ private: if (!is.read(reinterpret_cast<char*>(pv->data()), number_of_bytes)) OGS_FATAL( "Error in NodePartitionedMeshReader::readPropertiesBinary: " - "Could not read part %d of the PropertyVector.", + "Could not read part {:d} of the PropertyVector.", _mpi_rank); } diff --git a/MeshLib/IO/MPI_IO/PropertyVectorMetaData.h b/MeshLib/IO/MPI_IO/PropertyVectorMetaData.h index 0e3a01f177eb06522be3c2f829527eeff319bc4a..37953d89067cdd4d9b5ab4b3be07347dc678b103 100644 --- a/MeshLib/IO/MPI_IO/PropertyVectorMetaData.h +++ b/MeshLib/IO/MPI_IO/PropertyVectorMetaData.h @@ -69,13 +69,13 @@ inline void writePropertyVectorMetaDataBinary( inline void writePropertyVectorMetaData(PropertyVectorMetaData const& pvmd) { - DBUG("size of name: %d", pvmd.property_name.length()); - DBUG("name: '%s'", pvmd.property_name.c_str()); - DBUG("is_int_data_type: %d", pvmd.is_int_type); - DBUG("is_data_type_signed: %d", pvmd.is_data_type_signed); - DBUG("data_type_size_in_bytes: %d", pvmd.data_type_size_in_bytes); - DBUG("number of components: %d", pvmd.number_of_components); - DBUG("number of tuples: %d", pvmd.number_of_tuples); + DBUG("size of name: {:d}", pvmd.property_name.length()); + DBUG("name: '{:s}'", pvmd.property_name.c_str()); + DBUG("is_int_data_type: {:d}", pvmd.is_int_type); + DBUG("is_data_type_signed: {:d}", pvmd.is_data_type_signed); + DBUG("data_type_size_in_bytes: {:d}", pvmd.data_type_size_in_bytes); + DBUG("number of components: {:d}", pvmd.number_of_components); + DBUG("number of tuples: {:d}", pvmd.number_of_tuples); } inline boost::optional<PropertyVectorMetaData> readPropertyVectorMetaData( diff --git a/MeshLib/IO/VtkIO/PVDFile.cpp b/MeshLib/IO/VtkIO/PVDFile.cpp index e5963df6b0ef5609eb4fa1cd7a1e74c5f8e01b2e..8419d0f031d0a9d129788ae83d3ffaba507b1ad6 100644 --- a/MeshLib/IO/VtkIO/PVDFile.cpp +++ b/MeshLib/IO/VtkIO/PVDFile.cpp @@ -13,8 +13,8 @@ #include <fstream> #include <iomanip> #include <limits> -#include <logog/include/logog.hpp> #include "BaseLib/Error.h" +#include "BaseLib/Logging.h" #include "MeshLib/IO/VtkIO/VtuInterface.h" namespace MeshLib @@ -35,7 +35,7 @@ void PVDFile::addVTUFile(const std::string &vtu_fname, double timestep) std::ofstream fh(_pvd_filename.c_str()); if (!fh) { - OGS_FATAL("could not open file `%s'", _pvd_filename.c_str()); + OGS_FATAL("could not open file `{:s}'", _pvd_filename.c_str()); } fh << std::setprecision(std::numeric_limits<double>::digits10); diff --git a/MeshLib/IO/VtkIO/VtuInterface-impl.h b/MeshLib/IO/VtkIO/VtuInterface-impl.h index 4e40ffa8b55fb6f7709d25e047c2b5960223e7f6..579c9f10afc1bde90c688432a6aec07003115d9b 100644 --- a/MeshLib/IO/VtkIO/VtuInterface-impl.h +++ b/MeshLib/IO/VtkIO/VtuInterface-impl.h @@ -22,7 +22,7 @@ #include <vtkSmartPointer.h> #include <vtkUnstructuredGrid.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Vtk/VtkMappedMeshSource.h" diff --git a/MeshLib/IO/VtkIO/VtuInterface.cpp b/MeshLib/IO/VtkIO/VtuInterface.cpp index bb6da05903dee1c3964720528320f68ebe0ff600..39a7ad0bc1715d63ff72a616c7bcb58ff512c1ae 100644 --- a/MeshLib/IO/VtkIO/VtuInterface.cpp +++ b/MeshLib/IO/VtkIO/VtuInterface.cpp @@ -22,7 +22,7 @@ #include <vtkSmartPointer.h> #include <vtkUnstructuredGrid.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <boost/algorithm/string/erase.hpp> @@ -50,7 +50,7 @@ VtuInterface::VtuInterface(const MeshLib::Mesh* mesh, int dataMode, bool compres MeshLib::Mesh* VtuInterface::readVTUFile(std::string const &file_name) { if (!BaseLib::IsFileExisting(file_name)) { - ERR("File '%s' does not exist.", file_name.c_str()); + ERR("File '{:s}' does not exist.", file_name.c_str()); return nullptr; } @@ -62,7 +62,7 @@ MeshLib::Mesh* VtuInterface::readVTUFile(std::string const &file_name) vtkUnstructuredGrid* vtkGrid = reader->GetOutput(); if (vtkGrid->GetNumberOfPoints() == 0) { - ERR("Mesh '%s' contains zero points.", file_name.c_str()); + ERR("Mesh '{:s}' contains zero points.", file_name.c_str()); return nullptr; } @@ -116,7 +116,7 @@ int writeVtu(MeshLib::Mesh const& mesh, std::string const& file_name, auto const result = writer.writeToFile(file_name); if (!result) { - ERR("writeMeshToFile(): Could not write mesh to '%s'.", + ERR("writeMeshToFile(): Could not write mesh to '{:s}'.", file_name.c_str()); return -1; } diff --git a/MeshLib/IO/readMeshFromFile.cpp b/MeshLib/IO/readMeshFromFile.cpp index d17b43d98917f26dc57ee4942d51fdb1aad01325..cc85f06bc4205597d6e64c5b7e5d35c424611f47 100644 --- a/MeshLib/IO/readMeshFromFile.cpp +++ b/MeshLib/IO/readMeshFromFile.cpp @@ -23,7 +23,7 @@ #include <boost/algorithm/string/erase.hpp> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -80,7 +80,8 @@ MeshLib::Mesh* readMeshFromFileSerial(const std::string &file_name) return MeshLib::IO::VtuInterface::readVTUFile(file_name); } - ERR("readMeshFromFile(): Unknown mesh file format in file %s.", file_name.c_str()); + ERR("readMeshFromFile(): Unknown mesh file format in file {:s}.", + file_name.c_str()); return nullptr; } diff --git a/MeshLib/IO/writeMeshToFile.cpp b/MeshLib/IO/writeMeshToFile.cpp index 25c06354e1a78ddf63bb2eddb1438febdd231e63..4f21f343c53e35972c5e4649c8997340dd9e61bc 100644 --- a/MeshLib/IO/writeMeshToFile.cpp +++ b/MeshLib/IO/writeMeshToFile.cpp @@ -9,7 +9,7 @@ #include "writeMeshToFile.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/FileTools.h" #include "BaseLib/StringTools.h" @@ -38,14 +38,15 @@ int writeMeshToFile(const MeshLib::Mesh &mesh, const std::string &file_name) auto const result = writer.writeToFile(file_name); if (!result) { - ERR("writeMeshToFile(): Could not write mesh to '%s'.", + ERR("writeMeshToFile(): Could not write mesh to '{:s}'.", file_name.c_str()); return -1; } return 0; } - ERR("writeMeshToFile(): Unknown mesh file format in file %s.", file_name.c_str()); + ERR("writeMeshToFile(): Unknown mesh file format in file {:s}.", + file_name.c_str()); return -1; } diff --git a/MeshLib/Mesh.cpp b/MeshLib/Mesh.cpp index 19a54a8b08bf55f58b9b0c3713cc7672e2bc573f..03e929c8b29c386e6d6aa0c963f14159e6b12757 100644 --- a/MeshLib/Mesh.cpp +++ b/MeshLib/Mesh.cpp @@ -273,8 +273,8 @@ void Mesh::checkNonlinearNodeIDs() const } WARN( - "Found a nonlinear node whose ID (%d) is smaller than the " - "number of base node IDs (%d). Some functions may not work " + "Found a nonlinear node whose ID ({:d}) is smaller than the " + "number of base node IDs ({:d}). Some functions may not work " "properly.", e->getNodeIndex(i), getNumberOfBaseNodes()); return; @@ -296,7 +296,7 @@ void scaleMeshPropertyVector(MeshLib::Mesh & mesh, { if (!mesh.getProperties().existsPropertyVector<double>(property_name)) { - WARN("Did not find PropertyVector '%s' for scaling.", + WARN("Did not find PropertyVector '{:s}' for scaling.", property_name.c_str()); return; } @@ -320,7 +320,7 @@ PropertyVector<int> const* materialIDs(Mesh const& mesh) std::unique_ptr<MeshLib::Mesh> createMeshFromElementSelection( std::string mesh_name, std::vector<MeshLib::Element*> const& elements) { - DBUG("Found %d elements in the mesh", elements.size()); + DBUG("Found {:d} elements in the mesh", elements.size()); // Store bulk element ids for each of the new elements. std::vector<std::size_t> bulk_element_ids; diff --git a/MeshLib/Mesh.h b/MeshLib/Mesh.h index 8ceaa95cf620db66c2484cf7d2825c646fc04807..332be920f437dce72a322ac25be86b69b4a94c37 100644 --- a/MeshLib/Mesh.h +++ b/MeshLib/Mesh.h @@ -214,8 +214,8 @@ void addPropertyToMesh(MeshLib::Mesh& mesh, std::string const& name, if (mesh.getNumberOfNodes() != values.size() / number_of_components) { OGS_FATAL( - "Error number of nodes (%u) does not match the number of " - "tuples (%u).", + "Error number of nodes ({:d}) does not match the number of " + "tuples ({:d}).", mesh.getNumberOfNodes(), values.size() / number_of_components); } } @@ -224,8 +224,8 @@ void addPropertyToMesh(MeshLib::Mesh& mesh, std::string const& name, if (mesh.getNumberOfElements() != values.size() / number_of_components) { OGS_FATAL( - "Error number of elements (%u) does not match the number of " - "tuples (%u).", + "Error number of elements ({:d}) does not match the number of " + "tuples ({:d}).", mesh.getNumberOfElements(), values.size() / number_of_components); } @@ -235,7 +235,7 @@ void addPropertyToMesh(MeshLib::Mesh& mesh, std::string const& name, name, item_type, number_of_components); if (!property) { - OGS_FATAL("Error while creating PropertyVector '%s'.", name.c_str()); + OGS_FATAL("Error while creating PropertyVector '{:s}'.", name.c_str()); } property->reserve(values.size()); std::copy(values.cbegin(), values.cend(), std::back_inserter(*property)); diff --git a/MeshLib/MeshEditing/AddLayerToMesh.cpp b/MeshLib/MeshEditing/AddLayerToMesh.cpp index 8ef2f24dad13c45977342291a7ece5e4c3382c31..66b28fd2939adceecd40af7746c5558aa5e9050b 100644 --- a/MeshLib/MeshEditing/AddLayerToMesh.cpp +++ b/MeshLib/MeshEditing/AddLayerToMesh.cpp @@ -18,7 +18,7 @@ #include <numeric> #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Mesh.h" #include "MeshLib/Node.h" @@ -94,7 +94,7 @@ MeshLib::Mesh* addLayerToMesh(MeshLib::Mesh const& mesh, double thickness, std::string const& name, bool on_top) { - INFO("Extracting top surface of mesh '%s' ... ", mesh.getName().c_str()); + INFO("Extracting top surface of mesh '{:s}' ... ", mesh.getName().c_str()); int const flag = (on_top) ? -1 : 1; const MathLib::Vector3 dir(0, 0, flag); double const angle(90); @@ -139,7 +139,7 @@ MeshLib::Mesh* addLayerToMesh(MeshLib::Mesh const& mesh, double thickness, if (!sfc_mesh->getProperties().existsPropertyVector<std::size_t>(prop_name)) { - ERR("Need subsurface node ids, but the property '%s' is not " + ERR("Need subsurface node ids, but the property '{:s}' is not " "available.", prop_name.c_str()); return nullptr; diff --git a/MeshLib/MeshEditing/ConvertToLinearMesh.cpp b/MeshLib/MeshEditing/ConvertToLinearMesh.cpp index 3ed4fc0f75cfb8f47b8a9c88947f879d98d321d2..56f70547cb74b4e9c119c3fca619f1412f443dd6 100644 --- a/MeshLib/MeshEditing/ConvertToLinearMesh.cpp +++ b/MeshLib/MeshEditing/ConvertToLinearMesh.cpp @@ -44,8 +44,8 @@ T_ELEMENT* createLinearElement(MeshLib::Element const* e, if (it == end(vec_new_nodes)) { OGS_FATAL( - "A base node %d (with original global node id %d) not found in " - "the list for element %d.", + "A base node {:d} (with original global node id {:d}) not " + "found in the list for element {:d}.", i, e->getNode(i)->getID(), e->getID()); } nodes[i] = const_cast<MeshLib::Node*>(*it); @@ -92,7 +92,7 @@ std::unique_ptr<MeshLib::Mesh> convertToLinearMesh( } else { - OGS_FATAL("Mesh element type %s is not supported", + OGS_FATAL("Mesh element type {:s} is not supported", MeshLib::CellType2String(e->getCellType()).c_str()); } } diff --git a/MeshLib/MeshEditing/ElementValueModification.cpp b/MeshLib/MeshEditing/ElementValueModification.cpp index f484f1da070ed95e552b8cf46305dc12e77451a6..03366a60a370a1dc7ef74ac03783f6e6e1445b48 100644 --- a/MeshLib/MeshEditing/ElementValueModification.cpp +++ b/MeshLib/MeshEditing/ElementValueModification.cpp @@ -16,7 +16,7 @@ #include <algorithm> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Elements/Element.h" #include "MeshLib/Mesh.h" @@ -36,7 +36,7 @@ bool ElementValueModification::replace(MeshLib::Mesh &mesh, } catch (std::runtime_error const& e) { - ERR("%s", e.what()); + ERR("{:s}", e.what()); return false; } @@ -51,7 +51,7 @@ bool ElementValueModification::replace(MeshLib::Mesh &mesh, { WARN( "ElementValueModification::replaceElementValue() " - "- Replacement value '%d' is already taken, " + "- Replacement value '{:d}' is already taken, " "no changes have been made.", new_value); return false; @@ -86,7 +86,7 @@ std::size_t ElementValueModification::condense(MeshLib::Mesh &mesh) } catch (std::runtime_error const& e) { - ERR("%s", e.what()); + ERR("{:s}", e.what()); return 0; } @@ -120,7 +120,7 @@ std::size_t ElementValueModification::setByElementType(MeshLib::Mesh &mesh, Mesh } catch (std::runtime_error const& e) { - ERR("%s", e.what()); + ERR("{:s}", e.what()); return 0; } diff --git a/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp b/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp index 2aa166e7c88fa150542a7b5da9c5b2e4ce57f988..a7f588aae8c16f99210eb9a77b8887983b888e5f 100644 --- a/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp +++ b/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp @@ -17,7 +17,7 @@ #include "Mesh2MeshPropertyInterpolation.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoLib/AABB.h" #include "GeoLib/Grid.h" @@ -38,8 +38,8 @@ bool Mesh2MeshPropertyInterpolation::setPropertiesForMesh(Mesh& dest_mesh) const { if (_src_mesh.getDimension() != dest_mesh.getDimension()) { ERR("MeshLib::Mesh2MeshPropertyInterpolation::setPropertiesForMesh() " - "dimension of source (dim = %d) and destination (dim = %d) mesh " - "does not match.", + "dimension of source (dim = {:d}) and destination (dim = {:d}) " + "mesh does not match.", _src_mesh.getDimension(), dest_mesh.getDimension()); return false; } @@ -59,7 +59,7 @@ bool Mesh2MeshPropertyInterpolation::setPropertiesForMesh(Mesh& dest_mesh) const } else { - INFO("Create new PropertyVector '%s' of type double.", + INFO("Create new PropertyVector '{:s}' of type double.", _property_name.c_str()); dest_properties = dest_mesh.getProperties().createNewPropertyVector<double>( @@ -68,7 +68,7 @@ bool Mesh2MeshPropertyInterpolation::setPropertiesForMesh(Mesh& dest_mesh) const { WARN( "Could not get or create a PropertyVector of type double" - " using the given name '%s'.", + " using the given name '{:s}'.", _property_name.c_str()); return false; } @@ -139,7 +139,7 @@ void Mesh2MeshPropertyInterpolation::interpolatePropertiesForMesh( { OGS_FATAL( "Mesh2MeshInterpolation: Could not find values in source mesh " - "for the element %d.", + "for the element {:d}.", k); } dest_properties[k] = average_value / cnt; @@ -152,7 +152,7 @@ void Mesh2MeshPropertyInterpolation::interpolateElementPropertiesToNodePropertie // fetch the source of property values if (!_src_mesh.getProperties().existsPropertyVector<double>(_property_name)) { - WARN("Did not find PropertyVector<double> '%s'.", + WARN("Did not find PropertyVector<double> '{:s}'.", _property_name.c_str()); return; } diff --git a/MeshLib/MeshEditing/MeshRevision.cpp b/MeshLib/MeshEditing/MeshRevision.cpp index 7e3fb000bf463aab53046a911dfcc36ecd8ff965..d5015604dd9022187c3469596c1d0842b97f1860 100644 --- a/MeshLib/MeshEditing/MeshRevision.cpp +++ b/MeshLib/MeshEditing/MeshRevision.cpp @@ -16,7 +16,7 @@ #include <numeric> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoLib/Grid.h" #include "MathLib/GeometricBasics.h" @@ -87,7 +87,7 @@ MeshLib::Mesh* MeshRevision::simplifyMesh(const std::string &new_mesh_name, subdivideElement(elem, new_nodes, new_elements)); if (n_new_elements == 0) { - ERR("Element %d has unknown element type.", k); + ERR("Element {:d} has unknown element type.", k); this->resetNodeIDs(); this->cleanUp(new_nodes, new_elements); return nullptr; diff --git a/MeshLib/MeshEditing/RemoveMeshComponents.cpp b/MeshLib/MeshEditing/RemoveMeshComponents.cpp index f32b566977985c5ed3535634f6ef4265b1bc5c7b..5bd10e19433cc0f850872ef6680a1aa6850183e7 100644 --- a/MeshLib/MeshEditing/RemoveMeshComponents.cpp +++ b/MeshLib/MeshEditing/RemoveMeshComponents.cpp @@ -60,10 +60,10 @@ MeshLib::Mesh* removeElements( return nullptr; } - INFO("Removing total %d elements...", removed_element_ids.size()); + INFO("Removing total {:d} elements...", removed_element_ids.size()); std::vector<MeshLib::Element*> tmp_elems = details::excludeElementCopy(mesh.getElements(), removed_element_ids); - INFO("%d elements remain in mesh.", tmp_elems.size()); + INFO("{:d} elements remain in mesh.", tmp_elems.size()); // copy node and element objects std::vector<MeshLib::Node*> new_nodes = @@ -75,7 +75,7 @@ MeshLib::Mesh* removeElements( NodeSearch ns(mesh); ns.searchNodesConnectedToOnlyGivenElements(removed_element_ids); auto& removed_node_ids(ns.getSearchedNodeIDs()); - INFO("Removing total %d nodes...", removed_node_ids.size()); + INFO("Removing total {:d} nodes...", removed_node_ids.size()); for (auto nodeid : removed_node_ids) { delete new_nodes[nodeid]; diff --git a/MeshLib/MeshGenerators/LayeredMeshGenerator.cpp b/MeshLib/MeshGenerators/LayeredMeshGenerator.cpp index c30200e17fd385a74496ed5150672f3ece4f6c7a..8f26863354c12c3a861fbef05df7a0d523053e75 100644 --- a/MeshLib/MeshGenerators/LayeredMeshGenerator.cpp +++ b/MeshLib/MeshGenerators/LayeredMeshGenerator.cpp @@ -17,7 +17,7 @@ #include <vector> #include <fstream> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoLib/Raster.h" @@ -65,7 +65,11 @@ LayeredMeshGenerator::getMesh(std::string const& mesh_name) const std::back_inserter(*materials)); } else - WARN ("Skipping MaterialID information, number of entries does not match element number"); + { + WARN( + "Skipping MaterialID information, number of entries does not match " + "element number"); + } std::unique_ptr<MeshLib::Mesh> result(new MeshLib::Mesh(mesh_name, _nodes, _elements, properties)); MeshLib::NodeSearch ns(*result); diff --git a/MeshLib/MeshGenerators/MeshLayerMapper.cpp b/MeshLib/MeshGenerators/MeshLayerMapper.cpp index 24456e82ad8ab9f5c5fd811952fd578e555db847..571b34811d83270b17f987d5c789dd0ae252a01f 100644 --- a/MeshLib/MeshGenerators/MeshLayerMapper.cpp +++ b/MeshLib/MeshGenerators/MeshLayerMapper.cpp @@ -16,7 +16,7 @@ #include <algorithm> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoLib/Raster.h" @@ -42,7 +42,7 @@ MeshLib::Mesh* MeshLayerMapper::createStaticLayers(MeshLib::Mesh const& mesh, st thickness.push_back(layer_thickness_vector[i]); } else - WARN("Ignoring layer %d with thickness %f.", i, + WARN("Ignoring layer {:d} with thickness {:f}.", i, layer_thickness_vector[i]); } diff --git a/MeshLib/MeshGenerators/QuadraticMeshGenerator.cpp b/MeshLib/MeshGenerators/QuadraticMeshGenerator.cpp index abf437b6f8b8523128c73705423b85253b5c817c..6b6fd7ed01fd381482ffa87104961bd024eb1558 100644 --- a/MeshLib/MeshGenerators/QuadraticMeshGenerator.cpp +++ b/MeshLib/MeshGenerators/QuadraticMeshGenerator.cpp @@ -76,7 +76,7 @@ std::unique_ptr<MeshLib::Element> createQuadraticElement( return convertLinearToQuadratic<MeshLib::Hex20>(e); } - OGS_FATAL("Mesh element type %s is not supported", + OGS_FATAL("Mesh element type {:s} is not supported", MeshLib::CellType2String(e.getCellType()).c_str()); } diff --git a/MeshLib/MeshGenerators/RasterToMesh.cpp b/MeshLib/MeshGenerators/RasterToMesh.cpp index 75b91291016ae926ebb4b11741488e62fe45b912..4c2621ad2a2fcc9c82e92caf84a645339497f222 100644 --- a/MeshLib/MeshGenerators/RasterToMesh.cpp +++ b/MeshLib/MeshGenerators/RasterToMesh.cpp @@ -10,6 +10,8 @@ #include "RasterToMesh.h" +#include "BaseLib/Logging.h" + #include "MeshLib/Elements/Elements.h" #include "MeshLib/Mesh.h" #include "MeshLib/Node.h" diff --git a/MeshLib/MeshGenerators/RasterToMesh.h b/MeshLib/MeshGenerators/RasterToMesh.h index e0c1fee1b0bf629b83e3c063f3ffed96b05abdd0..bd8e582ea64c9acdefaa1e79c92d7e2faeb162b2 100644 --- a/MeshLib/MeshGenerators/RasterToMesh.h +++ b/MeshLib/MeshGenerators/RasterToMesh.h @@ -10,8 +10,6 @@ #pragma once -#include <logog/include/logog.hpp> - #include "GeoLib/Raster.h" #include "MeshLib/Location.h" #include "MeshLib/MeshEnums.h" diff --git a/MeshLib/MeshGenerators/VtkMeshConverter.cpp b/MeshLib/MeshGenerators/VtkMeshConverter.cpp index 92eaf78e9610a72b0b8d11a6e17958144c8e5cee..307458c56db150072bdabdb6b4976b38f1d50de4 100644 --- a/MeshLib/MeshGenerators/VtkMeshConverter.cpp +++ b/MeshLib/MeshGenerators/VtkMeshConverter.cpp @@ -229,7 +229,7 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid( } default: ERR("VtkMeshConverter::convertUnstructuredGrid(): Unknown mesh " - "element type '%d'.", + "element type '{:d}'.", cell_type); return nullptr; } @@ -343,7 +343,7 @@ void VtkMeshConverter::convertArray(vtkDataArray& array, } WARN( - "Array '%s' in VTU file uses unsupported data type '%s'. The data " + "Array '{:s}' in VTU file uses unsupported data type '{:s}'. The data " "array will not be available.", array.GetName(), array.GetDataTypeAsString()); } diff --git a/MeshLib/MeshGenerators/VtkMeshConverter.h b/MeshLib/MeshGenerators/VtkMeshConverter.h index 30736d6076bb2681131372edf84be3f44223eefe..266ab9bfdba461d48ff553c9a0865e1bfcc778db 100644 --- a/MeshLib/MeshGenerators/VtkMeshConverter.h +++ b/MeshLib/MeshGenerators/VtkMeshConverter.h @@ -17,7 +17,7 @@ #include <vtkDataArray.h> #include <vtkType.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoLib/Raster.h" #include "MeshLib/Location.h" @@ -109,7 +109,7 @@ private: array_name, type, nComponents); if (!vec) { - WARN("Array %s could not be converted to PropertyVector.", + WARN("Array {:s} could not be converted to PropertyVector.", array_name); return; } diff --git a/MeshLib/MeshInformation.cpp b/MeshLib/MeshInformation.cpp index 11af2d82694b2d1603db2370866afd406e3a8dfa..86e7f60fd7177b703ff04a9ebe23da1dcec31501 100644 --- a/MeshLib/MeshInformation.cpp +++ b/MeshLib/MeshInformation.cpp @@ -75,7 +75,7 @@ void MeshInformation::writeAllNumbersOfElementTypes(const MeshLib::Mesh& mesh) for (unsigned int element_type = 0; element_type < nr_ele_types.size(); element_type++) { - INFO("\t%d %s ", nr_ele_types[element_type], + INFO("\t{:d} {:s} ", nr_ele_types[element_type], element_names[element_type].c_str()); } } @@ -84,25 +84,25 @@ void MeshInformation::writePropertyVectorInformation(const MeshLib::Mesh& mesh) { std::vector<std::string> const& vec_names( mesh.getProperties().getPropertyVectorNames()); - INFO("There are %d properties in the mesh:", vec_names.size()); + INFO("There are {:d} properties in the mesh:", vec_names.size()); for (const auto& vec_name : vec_names) { if (auto const vec_bounds = MeshLib::MeshInformation::getValueBounds<int>(mesh, vec_name)) { - INFO("\t%s: [%d, %d]", vec_name.c_str(), vec_bounds->first, + INFO("\t{:s}: [{:d}, {:d}]", vec_name.c_str(), vec_bounds->first, vec_bounds->second); } else if (auto const vec_bounds = MeshLib::MeshInformation::getValueBounds<double>(mesh, vec_name)) { - INFO("\t%s: [%g, %g]", vec_name.c_str(), vec_bounds->first, + INFO("\t{:s}: [{:g}, {:g}]", vec_name.c_str(), vec_bounds->first, vec_bounds->second); } else { - INFO("\t%s: Could not get value bounds for property vector.", + INFO("\t{:s}: Could not get value bounds for property vector.", vec_name.c_str()); } } @@ -115,7 +115,7 @@ void MeshInformation::writeMeshValidationResults(MeshLib::Mesh& mesh) unsigned const n_holes(MeshLib::MeshValidation::detectHoles(mesh)); if (n_holes > 0) { - INFO("%d hole(s) detected within the mesh", n_holes); + INFO("{:d} hole(s) detected within the mesh", n_holes); } else { diff --git a/MeshLib/MeshInformation.h b/MeshLib/MeshInformation.h index cddff750b8cb152d5a9fd78680ffcdfaf8266510..d95921d3e910f914c36c475344ab9f46f4de913f 100644 --- a/MeshLib/MeshInformation.h +++ b/MeshLib/MeshInformation.h @@ -46,7 +46,7 @@ public: mesh.getProperties().getPropertyVector<T>(name); if (data_vec->empty()) { - INFO("Mesh does not contain values for the property '%s'.", + INFO("Mesh does not contain values for the property '{:s}'.", name.c_str()); return {}; } diff --git a/MeshLib/MeshQuality/EdgeRatioMetric.cpp b/MeshLib/MeshQuality/EdgeRatioMetric.cpp index 96766eaf8bd2fc5d22e4972b915eeaf5db334325..1aaff213308e57a73228cec8ee147552f89b6d44 100644 --- a/MeshLib/MeshQuality/EdgeRatioMetric.cpp +++ b/MeshLib/MeshQuality/EdgeRatioMetric.cpp @@ -77,8 +77,9 @@ void EdgeRatioMetric::calculateQuality() break; } default: - ERR ("MeshQualityShortestLongestRatio::check () check for element type %s not implemented.", - MeshElemType2String(elem.getGeomType()).c_str()); + ERR("MeshQualityShortestLongestRatio::check () check for element " + "type {:s} not implemented.", + MeshElemType2String(elem.getGeomType()).c_str()); } } } diff --git a/MeshLib/MeshQuality/ElementQualityMetric.h b/MeshLib/MeshQuality/ElementQualityMetric.h index 9d2480f98f97100e9a8d1468e4d342a6606a913f..94596ef94cb9e1df36af4cb953e630a6ee323fc8 100644 --- a/MeshLib/MeshQuality/ElementQualityMetric.h +++ b/MeshLib/MeshQuality/ElementQualityMetric.h @@ -16,8 +16,6 @@ #include <vector> -#include <logog/include/logog.hpp> - #include "BaseLib/Histogram.h" #include "MeshLib/Mesh.h" diff --git a/MeshLib/MeshQuality/ElementSizeMetric.cpp b/MeshLib/MeshQuality/ElementSizeMetric.cpp index 5da8d05f201f5de491f2823ef6d3b57062a42b9b..52383aeeadeba4bdddc075577abee986f3a9247e 100644 --- a/MeshLib/MeshQuality/ElementSizeMetric.cpp +++ b/MeshLib/MeshQuality/ElementSizeMetric.cpp @@ -38,9 +38,12 @@ void ElementSizeMetric::calculateQuality() error_count = calc3dQuality(); } - INFO ("ElementSizeMetric::calculateQuality() minimum: %f, max_volume: %f", _min, _max); + INFO( + "ElementSizeMetric::calculateQuality() minimum: {:f}, max_volume: {:f}", + _min, + _max); if (error_count > 0) - WARN ("Warning: %d elements with zero volume found.", error_count); + WARN("Warning: {:d} elements with zero volume found.", error_count); } std::size_t ElementSizeMetric::calc1dQuality() diff --git a/MeshLib/MeshQuality/MeshValidation.cpp b/MeshLib/MeshQuality/MeshValidation.cpp index c3cd73c154b3726c9c88069500b3c8010908e3e2..1d2e2d6a549ce548fecdf2a97122d16dc616b3a3 100644 --- a/MeshLib/MeshQuality/MeshValidation.cpp +++ b/MeshLib/MeshQuality/MeshValidation.cpp @@ -18,7 +18,7 @@ #include <algorithm> #include <stack> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/Mesh.h" #include "MeshLib/Node.h" @@ -36,10 +36,11 @@ MeshValidation::MeshValidation(MeshLib::Mesh &mesh) NodeSearch ns(mesh); ns.searchUnused(); if (!ns.getSearchedNodeIDs().empty()) { - INFO ("%d unused mesh nodes found.", ns.getSearchedNodeIDs().size()); + INFO("{:d} unused mesh nodes found.", ns.getSearchedNodeIDs().size()); } MeshRevision rev(mesh); - INFO ("Found %d potentially collapsable nodes.", rev.getNumberOfCollapsableNodes()); + INFO("Found {:d} potentially collapsable nodes.", + rev.getNumberOfCollapsableNodes()); const std::vector<ElementErrorCode> codes( MeshLib::MeshValidation::testElementGeometry(mesh)); @@ -101,7 +102,7 @@ std::vector<ElementErrorCode> MeshValidation::testElementGeometry(const MeshLib: for (std::size_t i = 0; i < nErrorCodes; ++i) { if (error_count[i]) - INFO("%d elements found with %s.", + INFO("{:d} elements found with {:s}.", error_count[i], ElementErrorCode::toString(flags[i]).c_str()); } diff --git a/MeshLib/MeshSearch/ElementSearch.cpp b/MeshLib/MeshSearch/ElementSearch.cpp index 87f7a1e9d650b280588027fd515cf1d44c4e2210..4c53b9fea10c174540b68eb216f86dde6aac1bc7 100644 --- a/MeshLib/MeshSearch/ElementSearch.cpp +++ b/MeshLib/MeshSearch/ElementSearch.cpp @@ -10,8 +10,6 @@ #include "ElementSearch.h" -#include <logog/include/logog.hpp> - #include "BaseLib/Algorithm.h" #include "MeshLib/Elements/Element.h" #include "MeshLib/Node.h" diff --git a/MeshLib/MeshSearch/ElementSearch.h b/MeshLib/MeshSearch/ElementSearch.h index a39ef8dcd1361c3a71acbeb4cb183c5aa67bedd7..f852681958af536750b04d5e68a8cec3a88e90ce 100644 --- a/MeshLib/MeshSearch/ElementSearch.h +++ b/MeshLib/MeshSearch/ElementSearch.h @@ -81,7 +81,7 @@ public: } catch (std::runtime_error const& e) { - ERR("%s", e.what()); + ERR("{:s}", e.what()); WARN( "Value-based element removal currently only works for " "scalars."); diff --git a/MeshLib/MeshSearch/MeshElementGrid.cpp b/MeshLib/MeshSearch/MeshElementGrid.cpp index f225a174d894faa54db102d8596e99cdb79232d6..e6f5479097ffbfbf69baee7630fe85f71ae0255e 100644 --- a/MeshLib/MeshSearch/MeshElementGrid.cpp +++ b/MeshLib/MeshSearch/MeshElementGrid.cpp @@ -15,8 +15,6 @@ #include <cmath> #include <memory> -#include <logog/include/logog.hpp> - #include "../Mesh.h" #include "../Node.h" #include "../Elements/Element.h" @@ -117,8 +115,8 @@ void MeshElementGrid::sortElementsInGridCells(MeshLib::Mesh const& sfc_mesh) { for (auto const element : sfc_mesh.getElements()) { if (! sortElementInGridCells(*element)) { - OGS_FATAL("Sorting element (id=%d) into mesh element grid.", - element->getID()); + OGS_FATAL("Sorting element (id={:d}) into mesh element grid.", + element->getID()); } } } diff --git a/MeshLib/MeshSearch/NodeSearch.cpp b/MeshLib/MeshSearch/NodeSearch.cpp index 3157b168819db6f041a93789b04735947c7aa06e..37ecbdae88ba83c229c0f36e18d7dbb3d1df9746 100644 --- a/MeshLib/MeshSearch/NodeSearch.cpp +++ b/MeshLib/MeshSearch/NodeSearch.cpp @@ -13,8 +13,6 @@ #include <memory> #include <set> -#include <logog/include/logog.hpp> - #include "MeshLib/Mesh.h" #include "MeshLib/Node.h" #include "MeshLib/Elements/Element.h" diff --git a/MeshLib/MeshSubset.h b/MeshLib/MeshSubset.h index 72cec1204ac13ed0094bc901ddb354359b32c6eb..b514b86151301d2f50945bd73514221eddc2a54a 100644 --- a/MeshLib/MeshSubset.h +++ b/MeshLib/MeshSubset.h @@ -53,8 +53,8 @@ public: auto it = lower_bound(begin(mesh_nodes), end(mesh_nodes), n); if (it == end(mesh_nodes)) { - ERR("A node %d (%g, %g, %g) in mesh subset is not a part " - "of the mesh.", + ERR("A node {:d} ({:g}, {:g}, {:g}) in mesh subset is not " + "a part of the mesh.", n->getID(), (*n)[0], (*n)[1], (*n)[2]); return false; } diff --git a/MeshLib/MeshSurfaceExtraction.cpp b/MeshLib/MeshSurfaceExtraction.cpp index 5e5b68102001c837d452792a4fdc29aa8f4764ae..20c3973bf76f1cff19f00880ed765ba88c1510f6 100644 --- a/MeshLib/MeshSurfaceExtraction.cpp +++ b/MeshLib/MeshSurfaceExtraction.cpp @@ -15,7 +15,7 @@ #include "MeshSurfaceExtraction.h" #include <boost/math/constants/constants.hpp> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <memory> #include "MeshLib/Elements/Line.h" @@ -75,16 +75,16 @@ bool createSfcMeshProperties(MeshLib::Mesh& sfc_mesh, std::size_t const n_nodes(sfc_mesh.getNumberOfNodes()); if (node_ids_map.size() != n_nodes) { - ERR("createSfcMeshProperties() - Incorrect number of node IDs (%d) " - "compared to actual number of surface nodes (%d).", + ERR("createSfcMeshProperties() - Incorrect number of node IDs ({:d}) " + "compared to actual number of surface nodes ({:d}).", node_ids_map.size(), n_nodes); return false; } if (element_ids_map.size() != n_elems) { - ERR("createSfcMeshProperties() - Incorrect number of element IDs (%d) " - "compared to actual number of surface elements (%d).", + ERR("createSfcMeshProperties() - Incorrect number of element IDs " + "({:d}) compared to actual number of surface elements ({:d}).", element_ids_map.size(), n_elems); return false; } @@ -112,12 +112,14 @@ bool createSfcMeshProperties(MeshLib::Mesh& sfc_mesh, } else { - WARN("Skipping property vector '%s' - no matching data type found.", - name.c_str()); + WARN( + "Skipping property vector '{:s}' - no matching data type " + "found.", + name.c_str()); vectors_skipped++; } } - INFO("%d property vectors copied, %d vectors skipped.", vectors_copied, + INFO("{:d} property vectors copied, {:d} vectors skipped.", vectors_copied, vectors_skipped); return true; } @@ -186,7 +188,7 @@ std::vector<double> MeshSurfaceExtraction::getSurfaceAreaForNodes( node_area_vec.push_back(node_area); } - INFO("Total surface Area: %f", total_area); + INFO("Total surface Area: {:f}", total_area); return node_area_vec; } @@ -255,7 +257,7 @@ void MeshSurfaceExtraction::get2DSurfaceElements( const MathLib::Vector3& dir, double angle, unsigned mesh_dimension) { if (mesh_dimension < 2 || mesh_dimension > 3) - ERR("Cannot handle meshes of dimension %i", mesh_dimension); + ERR("Cannot handle meshes of dimension {:i}", mesh_dimension); bool const complete_surface = (MathLib::scalarProduct(dir, dir) == 0); @@ -416,7 +418,7 @@ std::unique_ptr<MeshLib::Mesh> getBoundaryElementsAsMesh( auto const mesh_dimension = bulk_mesh.getDimension(); if (mesh_dimension < 2 || mesh_dimension > 3) { - ERR("Cannot handle meshes of dimension %i", mesh_dimension); + ERR("Cannot handle meshes of dimension {:i}", mesh_dimension); } // create boundary elements based on the subsurface nodes diff --git a/MeshLib/Properties-impl.h b/MeshLib/Properties-impl.h index 798e77b317d80f8b06265736aff481a16d326256..e535547114d00f0bec8e7b6fbb699a80af3babac 100644 --- a/MeshLib/Properties-impl.h +++ b/MeshLib/Properties-impl.h @@ -20,8 +20,8 @@ PropertyVector<T>* Properties::createNewPropertyVector( _properties.find(name) ); if (it != _properties.end()) { - ERR("A property of the name '%s' is already assigned to the mesh.", - name.c_str()); + ERR("A property of the name '{:s}' is already assigned to the mesh.", + name); return nullptr; } auto entry_info( @@ -48,8 +48,8 @@ PropertyVector<T>* Properties::createNewPropertyVector( _properties.find(name) ); if (it != _properties.end()) { - ERR("A property of the name '%s' already assigned to the mesh.", - name.c_str()); + ERR("A property of the name '{:s}' already assigned to the mesh.", + name); return nullptr; } @@ -57,7 +57,9 @@ PropertyVector<T>* Properties::createNewPropertyVector( for (std::size_t k(0); k<item2group_mapping.size(); k++) { std::size_t const group_id (item2group_mapping[k]); if (group_id >= n_prop_groups) { - ERR("The mapping to property %d for item %d is not in the correct range [0,%d).", group_id, k, n_prop_groups); + ERR("The mapping to property {:d} for item {:d} is not in the " + "correct range [0,{:d}).", + group_id, k, n_prop_groups); return nullptr; } } @@ -121,16 +123,15 @@ PropertyVector<T> const* Properties::getPropertyVector( auto it(_properties.find(name)); if (it == _properties.end()) { - OGS_FATAL( - "The PropertyVector '%s' is not available in the mesh.", - name.c_str()); + OGS_FATAL("The PropertyVector '{:s}' is not available in the mesh.", + name); } if (!dynamic_cast<PropertyVector<T> const*>(it->second)) { OGS_FATAL( - "The PropertyVector '%s' has a different type than the requested " + "The PropertyVector '{:s}' has a different type than the requested " "PropertyVector.", - name.c_str()); + name); } return dynamic_cast<PropertyVector<T> const*>(it->second); } @@ -142,15 +143,15 @@ PropertyVector<T>* Properties::getPropertyVector(std::string const& name) if (it == _properties.end()) { OGS_FATAL( - "A PropertyVector with the specified name '%s' is not available.", - name.c_str()); + "A PropertyVector with the specified name '{:s}' is not available.", + name); } if (!dynamic_cast<PropertyVector<T>*>(it->second)) { OGS_FATAL( - "The PropertyVector '%s' has a different type than the requested " + "The PropertyVector '{:s}' has a different type than the requested " "PropertyVector.", - name.c_str()); + name); } return dynamic_cast<PropertyVector<T>*>(it->second); } @@ -163,30 +164,32 @@ PropertyVector<T> const* Properties::getPropertyVector( auto const it = _properties.find(name); if (it == _properties.end()) { - OGS_FATAL("A PropertyVector with name '%s' does not exist in the mesh.", - name.c_str()); + OGS_FATAL( + "A PropertyVector with name '{:s}' does not exist in the mesh.", + name); } auto property = dynamic_cast<PropertyVector<T>*>(it->second); if (property == nullptr) { OGS_FATAL( - "Could not cast the data type of the PropertyVector '%s' to " + "Could not cast the data type of the PropertyVector '{:s}' to " "requested data type.", - name.c_str()); + name); } if (property->getMeshItemType() != item_type) { OGS_FATAL( - "The PropertyVector '%s' has type '%s'. A '%s' field is requested.", - name.c_str(), toString(property->getMeshItemType()), - toString(item_type)); + "The PropertyVector '{:s}' has type '{:s}'. A '{:s}' field is " + "requested.", + name, toString(property->getMeshItemType()), toString(item_type)); } if (property->getNumberOfComponents() != n_components) { OGS_FATAL( - "PropertyVector '%s' has %d components, %d components are needed.", - name.c_str(), property->getNumberOfComponents(), n_components); + "PropertyVector '{:s}' has {:d} components, {:d} components are " + "needed.", + name, property->getNumberOfComponents(), n_components); } return property; } @@ -199,30 +202,32 @@ PropertyVector<T>* Properties::getPropertyVector(std::string const& name, auto const it = _properties.find(name); if (it == _properties.end()) { - OGS_FATAL("A PropertyVector with name '%s' does not exist in the mesh.", - name.c_str()); + OGS_FATAL( + "A PropertyVector with name '{:s}' does not exist in the mesh.", + name); } auto property = dynamic_cast<PropertyVector<T>*>(it->second); if (property == nullptr) { OGS_FATAL( - "Could not cast the data type of the PropertyVector '%s' to " + "Could not cast the data type of the PropertyVector '{:s}' to " "requested data type.", - name.c_str()); + name); } if (property->getMeshItemType() != item_type) { OGS_FATAL( - "The PropertyVector '%s' has type '%s'. A '%s' field is requested.", - name.c_str(), toString(property->getMeshItemType()), - toString(item_type)); + "The PropertyVector '{:s}' has type '{:s}'. A '{:s}' field is " + "requested.", + name, toString(property->getMeshItemType()), toString(item_type)); } if (property->getNumberOfComponents() != n_components) { OGS_FATAL( - "PropertyVector '%s' has %d components, %d components are needed.", - name.c_str(), property->getNumberOfComponents(), n_components); + "PropertyVector '{:s}' has {:d} components, {:d} components are " + "needed.", + name, property->getNumberOfComponents(), n_components); } return property; } diff --git a/MeshLib/Properties.cpp b/MeshLib/Properties.cpp index 685186da4c51c66b802e98b2b6366ee06dc1c2ab..2423ac01b8b397e0a4b0aa5340ca1eb08ae80c4f 100644 --- a/MeshLib/Properties.cpp +++ b/MeshLib/Properties.cpp @@ -21,7 +21,7 @@ void Properties::removePropertyVector(std::string const& name) _properties.find(name) ); if (it == _properties.end()) { - WARN("A property of the name '%s' does not exist.", name.c_str()); + WARN("A property of the name '{:s}' does not exist.", name); return; } delete it->second; diff --git a/MeshLib/Properties.h b/MeshLib/Properties.h index bd0f28c8210702463017e29110505cce28612cf3..6f619e6cffd3314b4129e915c8736fdfb9057e2a 100644 --- a/MeshLib/Properties.h +++ b/MeshLib/Properties.h @@ -16,7 +16,7 @@ #include <string> #include <map> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "Location.h" diff --git a/MeshLib/PropertyVector.h b/MeshLib/PropertyVector.h index 1a4f3fdf09ded126bbcf275f028427d0269b20e7..b79aecce97954194434b297c95f921abc2f9997a 100644 --- a/MeshLib/PropertyVector.h +++ b/MeshLib/PropertyVector.h @@ -231,8 +231,8 @@ public: if (p == nullptr) { OGS_FATAL( - "No data found in the property vector %s " - "for the tuple index %d and component %d", + "No data found in the property vector {:s} " + "for the tuple index {:d} and component {:d}", getPropertyName().c_str(), tuple_index, component); } return p[component]; diff --git a/MeshLib/Vtk/VtkMappedMeshSource.cpp b/MeshLib/Vtk/VtkMappedMeshSource.cpp index c31e9dfbd80bf38159c6709f797e38bc11fed3c8..692a087aae97cc2a248026275da007b8a6c221ff 100644 --- a/MeshLib/Vtk/VtkMappedMeshSource.cpp +++ b/MeshLib/Vtk/VtkMappedMeshSource.cpp @@ -172,8 +172,8 @@ int VtkMappedMeshSource::RequestData(vtkInformation* /*request*/, } OGS_FATAL( - "Mesh property '%s' with unknown data type. Please check the data " - "type of the mesh properties. The available data types are:" + "Mesh property '{:s}' with unknown data type. Please check the " + "data type of the mesh properties. The available data types are:" "\n\t double," "\n\t float," "\n\t int," diff --git a/MeshLib/VtkOGSEnum.cpp b/MeshLib/VtkOGSEnum.cpp index adb03cb5faaa52c278953ccfa6682e6385284a12..ab773418698b4f3890dc8f17c89c8d2a15f9c06b 100644 --- a/MeshLib/VtkOGSEnum.cpp +++ b/MeshLib/VtkOGSEnum.cpp @@ -59,7 +59,7 @@ int OGSToVtkCellType(MeshLib::CellType ogs) default: OGS_FATAL( "Unknown cell type in conversion from OGS to VTK. Given cell " - "type value is %d.", + "type value is {:d}.", ogs); } } diff --git a/MeshLib/convertMeshToGeo.cpp b/MeshLib/convertMeshToGeo.cpp index 6e09abe59c819c3721615ba9435606fee68a3d8a..3f0fe7b1f1a67f2492aa99ba5113f36708a287ae 100644 --- a/MeshLib/convertMeshToGeo.cpp +++ b/MeshLib/convertMeshToGeo.cpp @@ -14,7 +14,7 @@ #include "convertMeshToGeo.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "GeoLib/GEOObjects.h" #include "GeoLib/Surface.h" @@ -103,7 +103,7 @@ bool convertMeshToGeo(const MeshLib::Mesh& mesh, { OGS_FATAL( "Could not get minimum/maximum ranges values for the " - "MaterialIDs property in the mesh '%s'.", + "MaterialIDs property in the mesh '{:s}'.", mesh.getName().c_str()); } return std::make_tuple(materialIds, *bounds); diff --git a/NumLib/CMakeLists.txt b/NumLib/CMakeLists.txt index 7d66a36d90b55d3679a199c82e7254bf6840a74b..20cf10131a39099e83bbf49ee18f1da031c1076f 100644 --- a/NumLib/CMakeLists.txt +++ b/NumLib/CMakeLists.txt @@ -19,10 +19,7 @@ target_include_directories(NumLib PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) set_target_properties(NumLib PROPERTIES LINKER_LANGUAGE CXX) -target_link_libraries(NumLib - PUBLIC BaseLib - GeoLib - MathLib - MeshLib - logog - PRIVATE MeshGeoToolsLib) +target_link_libraries( + NumLib + PUBLIC BaseLib GeoLib MathLib MeshLib + PRIVATE MeshGeoToolsLib spdlog::spdlog) diff --git a/NumLib/DOF/LocalToGlobalIndexMap.cpp b/NumLib/DOF/LocalToGlobalIndexMap.cpp index 9d2958b96a7f7653916f61903726c4b0f7a00c52..83fa3a9f5ec1033be8534f02d1fc5a80d37d6464 100644 --- a/NumLib/DOF/LocalToGlobalIndexMap.cpp +++ b/NumLib/DOF/LocalToGlobalIndexMap.cpp @@ -209,7 +209,7 @@ LocalToGlobalIndexMap::LocalToGlobalIndexMap( { OGS_FATAL( "Number of mesh subsets is not equal to number of components. " - "There are %d mesh subsets and %d components.", + "There are {:d} mesh subsets and {:d} components.", _mesh_subsets.size(), global_component_ids.size()); } diff --git a/NumLib/DOF/MeshComponentMap.cpp b/NumLib/DOF/MeshComponentMap.cpp index badc124d5fd621ee28d040e90496af6030adea64..a69b7c9f13ffd3b8feafd2b7b8df629d5f22a328 100644 --- a/NumLib/DOF/MeshComponentMap.cpp +++ b/NumLib/DOF/MeshComponentMap.cpp @@ -126,7 +126,7 @@ MeshComponentMap MeshComponentMap::getSubset( OGS_FATAL( "Assumption in the MeshComponentMap violated. Expecting " "all of mesh ids to be the same, but it is not true for " - "the mesh '%s' with id %d.", + "the mesh '{:s}' with id {:d}.", first_mismatch->getMesh().getName().c_str(), first_mismatch->getMeshID()); } @@ -173,9 +173,11 @@ MeshComponentMap MeshComponentMap::getSubset( if (is_base_node) { OGS_FATAL( - "Could not find a global index for global component %d " - "for the mesh '%s', node %d, in the corresponding bulk " - "mesh '%s' and node %d. This happens because the " + "Could not find a global index for global component " + "{:d} " + "for the mesh '{:s}', node {:d}, in the corresponding " + "bulk " + "mesh '{:s}' and node {:d}. This happens because the " "boundary mesh is larger then the definition region of " "the bulk component, usually because the geometry for " "the boundary condition is too large.", @@ -342,7 +344,7 @@ GlobalIndexType MeshComponentMap::getLocalIndex( _ghosts_indices.begin(), _ghosts_indices.end(), real_global_index); if (ghost_index_it == _ghosts_indices.end()) { - OGS_FATAL("index %d not found in ghost_indices", real_global_index); + OGS_FATAL("index {:d} not found in ghost_indices", real_global_index); } // Using std::distance on a std::vector is O(1). As long as _ghost_indices diff --git a/NumLib/DOF/SimpleMatrixVectorProvider.cpp b/NumLib/DOF/SimpleMatrixVectorProvider.cpp index 19c7c38b6cd9f13c2c484f235478ec355957c5d8..97fcd0a76be6c73f6097a62ddf1dbe05ea449659 100644 --- a/NumLib/DOF/SimpleMatrixVectorProvider.cpp +++ b/NumLib/DOF/SimpleMatrixVectorProvider.cpp @@ -11,7 +11,7 @@ #include "SimpleMatrixVectorProvider.h" #include <cassert> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Error.h" #include "MathLib/LinAlg/LinAlg.h" diff --git a/NumLib/Extrapolation/LocalLinearLeastSquaresExtrapolator.cpp b/NumLib/Extrapolation/LocalLinearLeastSquaresExtrapolator.cpp index bdd04ef2b5f239e51cb440fecc3eb07a9065ef1c..46096293f72005d74dc7b0e296fd87fc20483a90 100644 --- a/NumLib/Extrapolation/LocalLinearLeastSquaresExtrapolator.cpp +++ b/NumLib/Extrapolation/LocalLinearLeastSquaresExtrapolator.cpp @@ -11,7 +11,7 @@ #include "LocalLinearLeastSquaresExtrapolator.h" #include <Eigen/SVD> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MathLib/LinAlg/Eigen/EigenMapTools.h" #include "MathLib/LinAlg/LinAlg.h" @@ -160,7 +160,7 @@ void LocalLinearLeastSquaresExtrapolator::extrapolateElement( OGS_FATAL( "The number of computed integration point values is not divisable " "by the number of num_components. Maybe the computed property is " - "not a %d-component vector for each integration point.", + "not a {:d}-component vector for each integration point.", num_components); } @@ -289,7 +289,7 @@ void LocalLinearLeastSquaresExtrapolator::calculateResidualElement( OGS_FATAL( "The number of computed integration point values is not divisable " "by the number of num_components. Maybe the computed property is " - "not a %d-component vector for each integration point.", + "not a {:d}-component vector for each integration point.", num_components); } diff --git a/NumLib/Fem/CoordinatesMapping/NaturalCoordinatesMapping.cpp b/NumLib/Fem/CoordinatesMapping/NaturalCoordinatesMapping.cpp index c8b17dd35ab8522f2bd9052ee9d0ece97ccc1d88..f33dac6f53cde2aa074efbe8780ec6a778f63edf 100644 --- a/NumLib/Fem/CoordinatesMapping/NaturalCoordinatesMapping.cpp +++ b/NumLib/Fem/CoordinatesMapping/NaturalCoordinatesMapping.cpp @@ -108,7 +108,9 @@ static void checkJacobianDeterminant(const double detJ, if (detJ < 0) { - ERR("det J = %g is negative for element %d.", detJ, element.getID()); + ERR("det J = {:g} is negative for element {:d}.", + detJ, + element.getID()); #ifndef NDEBUG std::cerr << element << "\n"; #endif // NDEBUG @@ -119,7 +121,7 @@ static void checkJacobianDeterminant(const double detJ, if (detJ == 0) { - ERR("det J is zero for element %d.", element.getID()); + ERR("det J is zero for element {:d}.", element.getID()); #ifndef NDEBUG std::cerr << element << "\n"; #endif // NDEBUG diff --git a/NumLib/NewtonRaphson.h b/NumLib/NewtonRaphson.h index 87a6f278b8c8589b700d912192e22ab4ccd8c114..290c3149ae8c828a8f321a5d3503acb5387a47af 100644 --- a/NumLib/NewtonRaphson.h +++ b/NumLib/NewtonRaphson.h @@ -11,7 +11,7 @@ #pragma once #include <boost/optional.hpp> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <Eigen/Dense> @@ -71,20 +71,21 @@ public: increment.noalias() = _linear_solver.compute(jacobian).solve(-residual); - // DBUG("Local linear solver accuracy |J dx - r| = %g", + // DBUG("Local linear solver accuracy |J dx - r| = {:g}", // (jacobian * increment + residual).norm()); _solution_update(increment); - // DBUG("Local Newton: Iteration #%d |dx| = %g, |r| = %g", + // DBUG("Local Newton: Iteration #{:d} |dx| = {:g}, |r| = {:g}", // iteration, increment.norm(), residual.norm()); } while (iteration++ < _maximum_iterations); if (iteration > _maximum_iterations) { ERR("The local Newton method did not converge within the given " - "number of iterations. Iteration: %d, increment %g, residual: " - "%g", + "number of iterations. Iteration: {:d}, increment {:g}, " + "residual: " + "{:g}", iteration - 1, increment.norm(), residual.norm()); return {}; } diff --git a/NumLib/ODESolver/ConvergenceCriterion.cpp b/NumLib/ODESolver/ConvergenceCriterion.cpp index 7924e9176aeec1c455c01021734625170981cf45..5babc76d086b4cb442736f49b58661189afdfb5d 100644 --- a/NumLib/ODESolver/ConvergenceCriterion.cpp +++ b/NumLib/ODESolver/ConvergenceCriterion.cpp @@ -41,7 +41,8 @@ std::unique_ptr<ConvergenceCriterion> createConvergenceCriterion( return createConvergenceCriterionPerComponentResidual(config); } - OGS_FATAL("There is no convergence criterion of type `%s'.", type.c_str()); + OGS_FATAL("There is no convergence criterion of type `{:s}'.", + type.c_str()); } bool checkRelativeTolerance(const double reltol, const double numerator, diff --git a/NumLib/ODESolver/ConvergenceCriterionDeltaX.cpp b/NumLib/ODESolver/ConvergenceCriterionDeltaX.cpp index f62eaa8a376bbb9ab90d63e8bbc2c9d449aca85f..438caf36a27a555a5b157b8d64599d5669f004b8 100644 --- a/NumLib/ODESolver/ConvergenceCriterionDeltaX.cpp +++ b/NumLib/ODESolver/ConvergenceCriterionDeltaX.cpp @@ -9,7 +9,7 @@ */ #include "ConvergenceCriterionDeltaX.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" #include "MathLib/LinAlg/LinAlg.h" @@ -38,8 +38,8 @@ void ConvergenceCriterionDeltaX::checkDeltaX(const GlobalVector& minus_delta_x, auto error_dx = MathLib::LinAlg::norm(minus_delta_x, _norm_type); auto norm_x = MathLib::LinAlg::norm(x, _norm_type); - INFO("Convergence criterion: |dx|=%.4e, |x|=%.4e, |dx|/|x|=%.4e", error_dx, - norm_x, + INFO("Convergence criterion: |dx|={:.4e}, |x|={:.4e}, |dx|/|x|={:.4e}", + error_dx, norm_x, (norm_x == 0. ? std::numeric_limits<double>::quiet_NaN() : (error_dx / norm_x))); @@ -73,7 +73,7 @@ std::unique_ptr<ConvergenceCriterionDeltaX> createConvergenceCriterionDeltaX( if (norm_type == MathLib::VecNormType::INVALID) { - OGS_FATAL("Unknown vector norm type `%s'.", norm_type_str.c_str()); + OGS_FATAL("Unknown vector norm type `{:s}'.", norm_type_str.c_str()); } return std::make_unique<ConvergenceCriterionDeltaX>( diff --git a/NumLib/ODESolver/ConvergenceCriterionPerComponentDeltaX.cpp b/NumLib/ODESolver/ConvergenceCriterionPerComponentDeltaX.cpp index 9311aa94a82c163b8ae4bc59078a15673f6e1363..8fe5bffb16b150a644ce01408d3443c12cee354d 100644 --- a/NumLib/ODESolver/ConvergenceCriterionPerComponentDeltaX.cpp +++ b/NumLib/ODESolver/ConvergenceCriterionPerComponentDeltaX.cpp @@ -9,8 +9,8 @@ */ #include "ConvergenceCriterionPerComponentDeltaX.h" -#include <logog/include/logog.hpp> #include <limits> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" @@ -60,8 +60,8 @@ void ConvergenceCriterionPerComponentDeltaX::checkDeltaX( norm(x, global_component, _norm_type, *_dof_table, *_mesh); INFO( - "Convergence criterion, component %u: |dx|=%.4e, |x|=%.4e, " - "|dx|/|x|=%.4e", + "Convergence criterion, component {:d}: |dx|={:.4e}, |x|={:.4e}, " + "|dx|/|x|={:.4e}", global_component, error_dx, norm_x, (norm_x == 0. ? std::numeric_limits<double>::quiet_NaN() : (error_dx / norm_x))); @@ -122,7 +122,7 @@ createConvergenceCriterionPerComponentDeltaX(const BaseLib::ConfigTree& config) if (norm_type == MathLib::VecNormType::INVALID) { - OGS_FATAL("Unknown vector norm type `%s'.", norm_type_str.c_str()); + OGS_FATAL("Unknown vector norm type `{:s}'.", norm_type_str.c_str()); } return std::make_unique<ConvergenceCriterionPerComponentDeltaX>( diff --git a/NumLib/ODESolver/ConvergenceCriterionPerComponentResidual.cpp b/NumLib/ODESolver/ConvergenceCriterionPerComponentResidual.cpp index e10481159f05d3ab70c75e307cb66f5a1d6e2270..0a9d3196c369c2d8c58df1988e0a91bdacca50a4 100644 --- a/NumLib/ODESolver/ConvergenceCriterionPerComponentResidual.cpp +++ b/NumLib/ODESolver/ConvergenceCriterionPerComponentResidual.cpp @@ -9,7 +9,7 @@ */ #include "ConvergenceCriterionPerComponentResidual.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" #include "NumLib/DOF/DOFTableUtil.h" @@ -59,8 +59,8 @@ void ConvergenceCriterionPerComponentResidual::checkDeltaX( norm(x, global_component, _norm_type, *_dof_table, *_mesh); INFO( - "Convergence criterion, component %u: |dx|=%.4e, |x|=%.4e, " - "|dx|/|x|=%.4e", + "Convergence criterion, component {:d}: |dx|={:.4e}, |x|={:.4e}, " + "|dx|/|x|={:.4e}", global_component, error_dx, norm_x, (norm_x == 0. ? std::numeric_limits<double>::quiet_NaN() : (error_dx / norm_x))); @@ -89,13 +89,15 @@ void ConvergenceCriterionPerComponentResidual::checkResidual( *_dof_table, *_mesh); if (_is_first_iteration) { - INFO("Convergence criterion, component %u: |r0|=%.4e", global_component, norm_res); + INFO("Convergence criterion, component {:d}: |r0|={:.4e}", + global_component, norm_res); _residual_norms_0[global_component] = norm_res; } else { auto const norm_res0 = _residual_norms_0[global_component]; INFO( - "Convergence criterion, component %u: |r|=%.4e, |r0|=%.4e, " - "|r|/|r0|=%.4e", + "Convergence criterion, component {:d}: |r|={:.4e}, " + "|r0|={:.4e}, " + "|r|/|r0|={:.4e}", global_component, norm_res, norm_res0, (norm_res0 == 0. ? std::numeric_limits<double>::quiet_NaN() : (norm_res / norm_res0))); @@ -159,7 +161,7 @@ createConvergenceCriterionPerComponentResidual( if (norm_type == MathLib::VecNormType::INVALID) { - OGS_FATAL("Unknown vector norm type `%s'.", norm_type_str.c_str()); + OGS_FATAL("Unknown vector norm type `{:s}'.", norm_type_str.c_str()); } return std::make_unique<ConvergenceCriterionPerComponentResidual>( diff --git a/NumLib/ODESolver/ConvergenceCriterionResidual.cpp b/NumLib/ODESolver/ConvergenceCriterionResidual.cpp index 7366239b09123151c92766a8652a9c23c51b012d..1d94919c10273046ef9777bb0b04241148374a33 100644 --- a/NumLib/ODESolver/ConvergenceCriterionResidual.cpp +++ b/NumLib/ODESolver/ConvergenceCriterionResidual.cpp @@ -9,7 +9,7 @@ */ #include "ConvergenceCriterionResidual.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" #include "MathLib/LinAlg/LinAlg.h" @@ -38,8 +38,8 @@ void ConvergenceCriterionResidual::checkDeltaX( auto error_dx = MathLib::LinAlg::norm(minus_delta_x, _norm_type); auto norm_x = MathLib::LinAlg::norm(x, _norm_type); - INFO("Convergence criterion: |dx|=%.4e, |x|=%.4e, |dx|/|x|=%.4e", error_dx, - norm_x, + INFO("Convergence criterion: |dx|={:.4e}, |x|={:.4e}, |dx|/|x|={:.4e}", + error_dx, norm_x, (norm_x == 0. ? std::numeric_limits<double>::quiet_NaN() : (error_dx / norm_x))); } @@ -50,7 +50,7 @@ void ConvergenceCriterionResidual::checkResidual(const GlobalVector& residual) if (_is_first_iteration) { - INFO("Convergence criterion: |r0|=%.4e", norm_res); + INFO("Convergence criterion: |r0|={:.4e}", norm_res); _residual_norm_0 = norm_res; } else @@ -61,16 +61,17 @@ void ConvergenceCriterionResidual::checkResidual(const GlobalVector& residual) : _residual_norm_0; if (_residual_norm_0 < std::numeric_limits<double>::epsilon()) { - INFO("Convergence criterion: |r|=%.4e |r0|=%.4e", norm_res, + INFO("Convergence criterion: |r|={:.4e} |r0|={:.4e}", norm_res, _residual_norm_0); } else { - INFO("Convergence criterion: |r|=%.4e |r0|=%.4e |r|/|r0|=%.4e", - norm_res, _residual_norm_0, - (_residual_norm_0 == 0. - ? std::numeric_limits<double>::quiet_NaN() - : (norm_res / _residual_norm_0))); + INFO( + "Convergence criterion: |r|={:.4e} |r0|={:.4e} |r|/|r0|={:.4e}", + norm_res, _residual_norm_0, + (_residual_norm_0 == 0. + ? std::numeric_limits<double>::quiet_NaN() + : (norm_res / _residual_norm_0))); } } @@ -107,7 +108,7 @@ createConvergenceCriterionResidual(const BaseLib::ConfigTree& config) if (norm_type == MathLib::VecNormType::INVALID) { - OGS_FATAL("Unknown vector norm type `%s'.", norm_type_str.c_str()); + OGS_FATAL("Unknown vector norm type `{:s}'.", norm_type_str.c_str()); } return std::make_unique<ConvergenceCriterionResidual>( diff --git a/NumLib/ODESolver/NonlinearSolver.cpp b/NumLib/ODESolver/NonlinearSolver.cpp index 4852d09f51c701d35f33dad79722944e800e36c3..5d648181bc803e77824b53d4a3ea1872255a6ec0 100644 --- a/NumLib/ODESolver/NonlinearSolver.cpp +++ b/NumLib/ODESolver/NonlinearSolver.cpp @@ -10,7 +10,7 @@ #include "NonlinearSolver.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" #include "BaseLib/Error.h" @@ -94,7 +94,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Picard>::solve( sys.assemble(x_new, process_id); sys.getA(A); sys.getRhs(rhs); - INFO("[time] Assembly took %g s.", time_assembly.elapsed()); + INFO("[time] Assembly took {:g} s.", time_assembly.elapsed()); // Subract non-equilibrium initial residuum if set if (_r_neq != nullptr) @@ -105,7 +105,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Picard>::solve( timer_dirichlet.start(); sys.applyKnownSolutionsPicard(A, rhs, *x_new[process_id]); time_dirichlet += timer_dirichlet.elapsed(); - INFO("[time] Applying Dirichlet BCs took %g s.", time_dirichlet); + INFO("[time] Applying Dirichlet BCs took {:g} s.", time_dirichlet); if (!sys.isLinear() && _convergence_criterion->hasResidualCheck()) { GlobalVector res; @@ -118,7 +118,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Picard>::solve( time_linear_solver.start(); bool iteration_succeeded = _linear_solver.solve(A, rhs, *x_new[process_id]); - INFO("[time] Linear solver took %g s.", time_linear_solver.elapsed()); + INFO("[time] Linear solver took {:g} s.", time_linear_solver.elapsed()); if (!iteration_succeeded) { @@ -181,7 +181,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Picard>::solve( // Update x s.t. in the next iteration we will compute the right delta x LinAlg::copy(*x_new[process_id], *x[process_id]); - INFO("[time] Iteration #%u took %g s.", iteration, + INFO("[time] Iteration #{:d} took {:g} s.", iteration, time_iteration.elapsed()); if (error_norms_met) @@ -199,7 +199,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Picard>::solve( if (iteration > _maxiter) { - ERR("Picard: Could not solve the given nonlinear system within %u " + ERR("Picard: Could not solve the given nonlinear system within {:d} " "iterations", _maxiter); } @@ -284,7 +284,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Newton>::solve( } catch (AssemblyException const& e) { - ERR("Abort nonlinear iteration. Repeating timestep. Reason: %s", + ERR("Abort nonlinear iteration. Repeating timestep. Reason: {:s}", e.what()); error_norms_met = false; iteration = _maxiter; @@ -292,7 +292,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Newton>::solve( } sys.getResidual(*x[process_id], res); sys.getJacobian(J); - INFO("[time] Assembly took %g s.", time_assembly.elapsed()); + INFO("[time] Assembly took {:g} s.", time_assembly.elapsed()); // Subract non-equilibrium initial residuum if set if (_r_neq != nullptr) @@ -303,7 +303,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Newton>::solve( timer_dirichlet.start(); sys.applyKnownSolutionsNewton(J, res, minus_delta_x); time_dirichlet += timer_dirichlet.elapsed(); - INFO("[time] Applying Dirichlet BCs took %g s.", time_dirichlet); + INFO("[time] Applying Dirichlet BCs took {:g} s.", time_dirichlet); if (!sys.isLinear() && _convergence_criterion->hasResidualCheck()) { @@ -313,7 +313,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Newton>::solve( BaseLib::RunTime time_linear_solver; time_linear_solver.start(); bool iteration_succeeded = _linear_solver.solve(J, res, minus_delta_x); - INFO("[time] Linear solver took %g s.", time_linear_solver.elapsed()); + INFO("[time] Linear solver took {:g} s.", time_linear_solver.elapsed()); if (!iteration_succeeded) { @@ -382,7 +382,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Newton>::solve( error_norms_met = _convergence_criterion->isSatisfied(); } - INFO("[time] Iteration #%u took %g s.", iteration, + INFO("[time] Iteration #{:d} took {:g} s.", iteration, time_iteration.elapsed()); if (error_norms_met) @@ -400,7 +400,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Newton>::solve( if (iteration > _maxiter) { - ERR("Newton: Could not solve the given nonlinear system within %u " + ERR("Newton: Could not solve the given nonlinear system within {:d} " "iterations", _maxiter); } @@ -436,7 +436,7 @@ createNonlinearSolver(GlobalLinearSolver& linear_solver, { OGS_FATAL( "The damping factor for the Newon method must be positive, got " - "%g.", + "{:g}.", damping); } auto const tag = NonlinearSolverTag::Newton; diff --git a/NumLib/ODESolver/NonlinearSolver.h b/NumLib/ODESolver/NonlinearSolver.h index 10510ba9db7b1a5ff60bd551b2397001965cdb1c..ad0fdf89e987b75c09e10553be55f4c2988cd46e 100644 --- a/NumLib/ODESolver/NonlinearSolver.h +++ b/NumLib/ODESolver/NonlinearSolver.h @@ -12,7 +12,7 @@ #include <memory> #include <utility> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "ConvergenceCriterion.h" #include "NonlinearSolverStatus.h" diff --git a/NumLib/ODESolver/TimeDiscretizationBuilder.cpp b/NumLib/ODESolver/TimeDiscretizationBuilder.cpp index a79f66160a71fe3375e8b4425f9364251363f25a..59fbb2070daed49627de36a5192ebc81e3019c56 100644 --- a/NumLib/ODESolver/TimeDiscretizationBuilder.cpp +++ b/NumLib/ODESolver/TimeDiscretizationBuilder.cpp @@ -45,6 +45,6 @@ std::unique_ptr<TimeDiscretization> createTimeDiscretization( return std::make_unique<BackwardDifferentiationFormula>(order); } - OGS_FATAL("Unrecognized time discretization type `%s'", type.c_str()); + OGS_FATAL("Unrecognized time discretization type `{:s}'", type.c_str()); } } // namespace NumLib diff --git a/NumLib/TimeStepping/Algorithms/CreateFixedTimeStepping.cpp b/NumLib/TimeStepping/Algorithms/CreateFixedTimeStepping.cpp index 39ef6017d81c083af0ed80c10ed20df42a2adfba..b35a8600f66c6033de1db5f199398a4e11e56e5f 100644 --- a/NumLib/TimeStepping/Algorithms/CreateFixedTimeStepping.cpp +++ b/NumLib/TimeStepping/Algorithms/CreateFixedTimeStepping.cpp @@ -72,9 +72,9 @@ std::unique_ptr<TimeStepAlgorithm> createFixedTimeStepping( { OGS_FATAL( "Resize of the time steps vector failed for the requested " - "new size %u. Probably there is not enough memory (%g GiB " - "requested).\n" - "Thrown exception: %s", + "new size {:d}. Probably there is not enough memory ({:g} " + "GiB requested).\n" + "Thrown exception: {:s}", new_size, new_size * sizeof(double) / 1024. / 1024. / 1024., e.what()); @@ -83,9 +83,9 @@ std::unique_ptr<TimeStepAlgorithm> createFixedTimeStepping( { OGS_FATAL( "Resize of the time steps vector failed for the requested " - "new size %u. Probably there is not enough memory (%g GiB " - "requested).\n" - "Thrown exception: %s", + "new size {:d}. Probably there is not enough memory ({:g} " + "GiB requested).\n" + "Thrown exception: {:s}", new_size, new_size * sizeof(double) / 1024. / 1024. / 1024., e.what()); } @@ -108,9 +108,9 @@ std::unique_ptr<TimeStepAlgorithm> createFixedTimeStepping( { OGS_FATAL( "Resize of the time steps vector failed for the requested new " - "size %u. Probably there is not enough memory (%g GiB " + "size {:d}. Probably there is not enough memory ({:g} GiB " "requested).\n" - "Thrown exception: %s", + "Thrown exception: {:s}", new_size, new_size * sizeof(double) / 1024. / 1024. / 1024., e.what()); @@ -119,9 +119,9 @@ std::unique_ptr<TimeStepAlgorithm> createFixedTimeStepping( { OGS_FATAL( "Resize of the time steps vector failed for the requested new " - "size %u. Probably there is not enough memory (%g GiB " + "size {:d}. Probably there is not enough memory ({:g} GiB " "requested).\n" - "Thrown exception: %s", + "Thrown exception: {:s}", new_size, new_size * sizeof(double) / 1024. / 1024. / 1024., e.what()); } diff --git a/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp b/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp index 1f8a692ac896a51a3b3cd64149557bf2345ef28c..b0d0c3de1a6a2d162413a8100a29633a19238994 100644 --- a/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp +++ b/NumLib/TimeStepping/Algorithms/EvolutionaryPIDcontroller.cpp @@ -14,7 +14,7 @@ #include <functional> #include <limits> #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/Algorithm.h" @@ -66,9 +66,9 @@ bool EvolutionaryPIDcontroller::next(double const solution_error, "This step is rejected due to the relative change from the" " solution of the previous\n" "\t time step to the current solution exceeds the given tolerance" - " of %g.\n" + " of {:g}.\n" "\t This time step will be repeated with a new time step size of" - " %g\n" + " {:g}\n" "\t or the simulation will be halted.", _tol, h_new); diff --git a/NumLib/TimeStepping/Algorithms/TimeStepAlgorithm.h b/NumLib/TimeStepping/Algorithms/TimeStepAlgorithm.h index faf0a559f57379d1a7729ebd6300b5442d0b3b8f..c65c9f7b8b86384ac83d4c9affa1ae90cdc5e489 100644 --- a/NumLib/TimeStepping/Algorithms/TimeStepAlgorithm.h +++ b/NumLib/TimeStepping/Algorithms/TimeStepAlgorithm.h @@ -44,9 +44,9 @@ public: { OGS_FATAL( "Resize of the time steps vector failed for the requested new " - "size %u. Probably there is not enough memory (%g GiB " + "size {:d}. Probably there is not enough memory ({:g} GiB " "requested).\n" - "Thrown exception: %s", + "Thrown exception: {:s}", new_size, new_size * sizeof(double) / 1024. / 1024. / 1024., e.what()); } @@ -54,9 +54,9 @@ public: { OGS_FATAL( "Allocation of the time steps vector failed for the requested " - "size %u. Probably there is not enough memory (%d GiB " + "size {:d}. Probably there is not enough memory ({:d} GiB " "requested).\n" - "Thrown exception: %s", + "Thrown exception: {:s}", new_size, new_size * sizeof(double) / 1024. / 1024. / 1024., e.what()); diff --git a/NumLib/TimeStepping/CreateTimeStepper.cpp b/NumLib/TimeStepping/CreateTimeStepper.cpp index cd24414076f564912d7d3741a6bf84d2fcc7dd63..1623568cecbef115f5883268e9c1736fb2279d8a 100644 --- a/NumLib/TimeStepping/CreateTimeStepper.cpp +++ b/NumLib/TimeStepping/CreateTimeStepper.cpp @@ -49,7 +49,7 @@ std::unique_ptr<TimeStepAlgorithm> createTimeStepper( return NumLib::createIterationNumberBasedTimeStepping(config); } OGS_FATAL( - "Unknown time stepping type: '%s'. The available types are: " + "Unknown time stepping type: '{:s}'. The available types are: " "\n\tSingleStep," "\n\tFixedTimeStepping," "\n\tEvolutionaryPIDcontroller,", diff --git a/ParameterLib/CMakeLists.txt b/ParameterLib/CMakeLists.txt index 9c54b8e304b8befc474740f1ef53a85c01f3ee0f..de2dcb6bd4d4ae9dd463d98089bb43a0e97f5861 100644 --- a/ParameterLib/CMakeLists.txt +++ b/ParameterLib/CMakeLists.txt @@ -7,4 +7,4 @@ include(GenerateExportHeader) generate_export_header(ParameterLib) target_include_directories(ParameterLib PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) -target_link_libraries(ParameterLib PUBLIC MathLib PRIVATE BaseLib MeshLib) +target_link_libraries(ParameterLib PUBLIC MathLib PRIVATE BaseLib MeshLib spdlog::spdlog) diff --git a/ParameterLib/ConstantParameter.cpp b/ParameterLib/ConstantParameter.cpp index 46b54d7fe24dbea5bbdb6f8e39d32e24340db7a2..9091ba090c374ec8ab415566eece2cf9f17a227b 100644 --- a/ParameterLib/ConstantParameter.cpp +++ b/ParameterLib/ConstantParameter.cpp @@ -11,6 +11,7 @@ #include "ConstantParameter.h" #include "BaseLib/ConfigTree.h" #include "BaseLib/Error.h" +#include "BaseLib/Logging.h" namespace ParameterLib { @@ -33,10 +34,10 @@ std::unique_ptr<ParameterBase> createConstantParameter( if (value->size() != 1) { OGS_FATAL( - "Expected to read exactly one value, but %d were given.", + "Expected to read exactly one value, but {:d} were given.", value->size()); } - DBUG("Using value %g for constant parameter.", (*value)[0]); + DBUG("Using value {:g} for constant parameter.", (*value)[0]); return std::make_unique<ConstantParameter<double>>(name, (*value)[0]); } @@ -56,7 +57,7 @@ std::unique_ptr<ParameterBase> createConstantParameter( for (double const v : values) { (void)v; // unused value if building w/o DBUG output. - DBUG("\t%g", v); + DBUG("\t{:g}", v); } return std::make_unique<ConstantParameter<double>>(name, values); diff --git a/ParameterLib/CoordinateSystem.cpp b/ParameterLib/CoordinateSystem.cpp index 0dc9fc8bb4acb4c30b5c3b590de7b25eb338cad5..510e8172971bdf44a291d2ce11f417d6ddf0c146 100644 --- a/ParameterLib/CoordinateSystem.cpp +++ b/ParameterLib/CoordinateSystem.cpp @@ -23,8 +23,9 @@ CoordinateSystem::CoordinateSystem(Parameter<double> const& e0, if (typeid(_base[0]) != typeid(_base[1])) { OGS_FATAL( - "The parameter types for the basis must be equal but they are '%s' " - "and '%s'.", + "The parameter types for the basis must be equal but they are " + "'{:s}' " + "and '{:s}'.", typeid(_base[0]).name(), typeid(_base[1]).name()); } @@ -50,7 +51,7 @@ CoordinateSystem::CoordinateSystem(Parameter<double> const& e0, { OGS_FATAL( "The parameter types for the basis must be equal but they are " - "'%s', '%s', and '%s'.", + "'{:s}', '{:s}', and '{:s}'.", typeid(_base[0]).name(), typeid(_base[1]).name(), typeid(_base[2]).name()); @@ -90,7 +91,7 @@ Eigen::Matrix<double, 2, 2> CoordinateSystem::transformation<2>( { OGS_FATAL( "The determinant of the coordinate system transformation matrix is " - "'%g', which is not sufficiently close to unity.", + "'{:g}', which is not sufficiently close to unity.", t.determinant()); } #endif // NDEBUG @@ -119,7 +120,7 @@ Eigen::Matrix<double, 3, 3> CoordinateSystem::transformation<3>( { OGS_FATAL( "The determinant of the coordinate system transformation matrix is " - "'%g', which is not sufficiently close to unity.", + "'{:g}', which is not sufficiently close to unity.", t.determinant()); } #endif // NDEBUG @@ -144,7 +145,7 @@ Eigen::Matrix<double, 3, 3> CoordinateSystem::transformation_3d( { OGS_FATAL( "The determinant of the coordinate system transformation matrix is " - "'%g', which is not sufficiently close to unity.", + "'{:g}', which is not sufficiently close to unity.", t.determinant()); } #endif // NDEBUG diff --git a/ParameterLib/CurveScaledParameter.cpp b/ParameterLib/CurveScaledParameter.cpp index 117be7f8c81b004025803357398e4f29d083f3ae..94ba48e4cb876f8e764121c2c8aca7b00f7c82b2 100644 --- a/ParameterLib/CurveScaledParameter.cpp +++ b/ParameterLib/CurveScaledParameter.cpp @@ -25,18 +25,18 @@ std::unique_ptr<ParameterBase> createCurveScaledParameter( //! \ogs_file_param{prj__parameters__parameter__CurveScaled__curve} auto curve_name = config.getConfigParameter<std::string>("curve"); - DBUG("Using curve %s", curve_name.c_str()); + DBUG("Using curve {:s}", curve_name.c_str()); auto const curve_it = curves.find(curve_name); if (curve_it == curves.end()) { - OGS_FATAL("Curve `%s' does not exists.", curve_name.c_str()); + OGS_FATAL("Curve `{:s}' does not exists.", curve_name.c_str()); } auto referenced_parameter_name = //! \ogs_file_param{prj__parameters__parameter__CurveScaled__parameter} config.getConfigParameter<std::string>("parameter"); - DBUG("Using parameter %s", referenced_parameter_name.c_str()); + DBUG("Using parameter {:s}", referenced_parameter_name.c_str()); // TODO other data types than only double return std::make_unique<CurveScaledParameter<double>>( diff --git a/ParameterLib/FunctionParameter.h b/ParameterLib/FunctionParameter.h index 98e922648274b8a5d1613ca2797cb980fbadcb87..acfa869a4ce3d4cb63641120c915c79397be7b47 100644 --- a/ParameterLib/FunctionParameter.h +++ b/ParameterLib/FunctionParameter.h @@ -61,7 +61,8 @@ struct FunctionParameter final : public Parameter<T> parser_t parser; if (!parser.compile(_vec_expression_str[i], _vec_expression[i])) { - OGS_FATAL("Error: %s\tExpression: %s\n", parser.error().c_str(), + OGS_FATAL("Error: {:s}\tExpression: {:s}\n", + parser.error().c_str(), _vec_expression_str[i].c_str()); } } diff --git a/ParameterLib/GroupBasedParameter.cpp b/ParameterLib/GroupBasedParameter.cpp index 2ed9e87313b78c8451af3146ede0603c012b5914..512eaeb1eed63d4d6e05db0c6bd2a1830a5a4644 100644 --- a/ParameterLib/GroupBasedParameter.cpp +++ b/ParameterLib/GroupBasedParameter.cpp @@ -27,7 +27,7 @@ std::unique_ptr<ParameterBase> createGroupBasedParameter( std::string const group_id_property_name = //! \ogs_file_param{prj__parameters__parameter__Group__group_id_property} config.getConfigParameter<std::string>("group_id_property"); - DBUG("Using group_id_property %s", group_id_property_name.c_str()); + DBUG("Using group_id_property {:s}", group_id_property_name.c_str()); auto const& group_id_property = mesh.getProperties().getPropertyVector<int>(group_id_property_name); @@ -74,16 +74,16 @@ std::unique_ptr<ParameterBase> createGroupBasedParameter( if (itr == group_id_property->end()) { OGS_FATAL( - "Specified property index %d does not exist in the property " - "vector %s", + "Specified property index {:d} does not exist in the property " + "vector {:s}", p.first, group_id_property_name.c_str()); } if (p.second.size() != n_values) { OGS_FATAL( - "The length of some values (%d) is different from the first " - "one (%d). " + "The length of some values ({:d}) is different from the first " + "one ({:d}). " "The length should be same for all index_values.", p.second.size(), n_values); } diff --git a/ParameterLib/GroupBasedParameter.h b/ParameterLib/GroupBasedParameter.h index 2728e36ae81aa5b43bf332408bd48d708b124b2d..833ab79289edc37b9386a3708f300204262b88c0 100644 --- a/ParameterLib/GroupBasedParameter.h +++ b/ParameterLib/GroupBasedParameter.h @@ -67,7 +67,7 @@ struct GroupBasedParameter final : public Parameter<T> auto const& values = _vec_values[index]; if (values.empty()) { - OGS_FATAL("No data found for the group index %d", index); + OGS_FATAL("No data found for the group index {:d}", index); } if (!this->_coordinate_system) diff --git a/ParameterLib/MeshElementParameter.cpp b/ParameterLib/MeshElementParameter.cpp index af75cff185a566724b0d65ec93fd44c73198b801..f953c815bed8a4de234c340610c03d685ae330c4 100644 --- a/ParameterLib/MeshElementParameter.cpp +++ b/ParameterLib/MeshElementParameter.cpp @@ -23,7 +23,7 @@ std::unique_ptr<ParameterBase> createMeshElementParameter( auto const field_name = //! \ogs_file_param{prj__parameters__parameter__MeshElement__field_name} config.getConfigParameter<std::string>("field_name"); - DBUG("Using field_name %s", field_name.c_str()); + DBUG("Using field_name {:s}", field_name.c_str()); // TODO other data types than only double auto const& property = @@ -31,7 +31,7 @@ std::unique_ptr<ParameterBase> createMeshElementParameter( if (property->getMeshItemType() != MeshLib::MeshItemType::Cell) { - OGS_FATAL("The mesh property `%s' is not an element property.", + OGS_FATAL("The mesh property `{:s}' is not an element property.", field_name.c_str()); } diff --git a/ParameterLib/MeshNodeParameter.cpp b/ParameterLib/MeshNodeParameter.cpp index 7b9c745551b526f73c4ba7c4e452b43bee1e3ca0..2ff3833aa46f58b49865da9b107a9cd87eee51ba 100644 --- a/ParameterLib/MeshNodeParameter.cpp +++ b/ParameterLib/MeshNodeParameter.cpp @@ -23,7 +23,7 @@ std::unique_ptr<ParameterBase> createMeshNodeParameter( auto const field_name = //! \ogs_file_param{prj__parameters__parameter__MeshNode__field_name} config.getConfigParameter<std::string>("field_name"); - DBUG("Using field_name %s", field_name.c_str()); + DBUG("Using field_name {:s}", field_name.c_str()); // TODO other data types than only double auto const& property = @@ -31,7 +31,7 @@ std::unique_ptr<ParameterBase> createMeshNodeParameter( if (property->getMeshItemType() != MeshLib::MeshItemType::Node) { - OGS_FATAL("The mesh property `%s' is not a nodal property.", + OGS_FATAL("The mesh property `{:s}' is not a nodal property.", field_name.c_str()); } diff --git a/ParameterLib/Parameter.cpp b/ParameterLib/Parameter.cpp index 3b8c84405eb396797105d50136444aaa70735b08..a8b7bd3e6f835e6e0b5a925c5dff94ba7ac1226b 100644 --- a/ParameterLib/Parameter.cpp +++ b/ParameterLib/Parameter.cpp @@ -48,41 +48,42 @@ std::unique_ptr<ParameterBase> createParameter( // Create parameter based on the provided type. if (type == "Constant") { - INFO("ConstantParameter: %s", name.c_str()); + INFO("ConstantParameter: {:s}", name.c_str()); return createConstantParameter(name, config); } if (type == "CurveScaled") { - INFO("CurveScaledParameter: %s", name.c_str()); + INFO("CurveScaledParameter: {:s}", name.c_str()); return createCurveScaledParameter(name, config, curves); } if (type == "Function") { - INFO("FunctionParameter: %s", name.c_str()); + INFO("FunctionParameter: {:s}", name.c_str()); return createFunctionParameter(name, config, mesh); } if (type == "Group") { - INFO("GroupBasedParameter: %s", name.c_str()); + INFO("GroupBasedParameter: {:s}", name.c_str()); return createGroupBasedParameter(name, config, mesh); } if (type == "MeshElement") { - INFO("MeshElementParameter: %s", name.c_str()); + INFO("MeshElementParameter: {:s}", name.c_str()); return createMeshElementParameter(name, config, mesh); } if (type == "MeshNode") { - INFO("MeshNodeParameter: %s", name.c_str()); + INFO("MeshNodeParameter: {:s}", name.c_str()); return createMeshNodeParameter(name, config, mesh); } if (type == "TimeDependentHeterogeneousParameter") { - INFO("TimeDependentHeterogeneousParameter: %s", name.c_str()); + INFO("TimeDependentHeterogeneousParameter: {:s}", name.c_str()); return createTimeDependentHeterogeneousParameter(name, config); } - OGS_FATAL("Cannot construct a parameter of given type '%s'.", type.c_str()); + OGS_FATAL("Cannot construct a parameter of given type '{:s}'.", + type.c_str()); } boost::optional<std::string> isDefinedOnSameMesh(ParameterBase const& parameter, diff --git a/ParameterLib/Parameter.h b/ParameterLib/Parameter.h index bf2ca98f3e321e715879bf9175e9eea2b9dad294..6a835c7c5f233a03621f8c5186f26dad0286afc7 100644 --- a/ParameterLib/Parameter.h +++ b/ParameterLib/Parameter.h @@ -118,7 +118,7 @@ protected: }; } OGS_FATAL( - "Coordinate transformation for a %d-component parameter is not " + "Coordinate transformation for a {:d}-component parameter is not " "implemented.", values.size()); } diff --git a/ParameterLib/TimeDependentHeterogeneousParameter.cpp b/ParameterLib/TimeDependentHeterogeneousParameter.cpp index e3a643781189c38c4bf6dcb720c733a9116b2ac6..063004b449583709a4d95664b3db7762c0b63c69 100644 --- a/ParameterLib/TimeDependentHeterogeneousParameter.cpp +++ b/ParameterLib/TimeDependentHeterogeneousParameter.cpp @@ -78,7 +78,7 @@ std::vector<double> TimeDependentHeterogeneousParameter::operator()( void TimeDependentHeterogeneousParameter::initialize( std::vector<std::unique_ptr<ParameterBase>> const& parameters) { - DBUG("TimeDependentHeterogeneousParameter init %d time series entries.", + DBUG("TimeDependentHeterogeneousParameter init {:d} time series entries.", _time_parameter_name_mapping.size()); for (auto const& time_parameter_map : _time_parameter_name_mapping) { @@ -98,7 +98,7 @@ void TimeDependentHeterogeneousParameter::initialize( { OGS_FATAL( "All referenced parameters in time dependent heterogeneous " - "parameter '%s' have to have the same number of components.", + "parameter '{:s}' have to have the same number of components.", name.c_str()); } } @@ -128,7 +128,7 @@ std::unique_ptr<ParameterBase> createTimeDependentHeterogeneousParameter( if (time_series.empty()) { OGS_FATAL( - "Time dependent heterogeneous parameter '%s' doesn't contain " + "Time dependent heterogeneous parameter '{:s}' doesn't contain " "necessary time series data.", name.c_str()); } @@ -141,7 +141,7 @@ std::unique_ptr<ParameterBase> createTimeDependentHeterogeneousParameter( p1) { return p0.first < p1.first; })) { OGS_FATAL( - "The points in time in the time series '%s' aren't in ascending " + "The points in time in the time series '{:s}' aren't in ascending " "order.", name.c_str()); } diff --git a/ParameterLib/Utils.cpp b/ParameterLib/Utils.cpp index ab90282693770e1bad3c29091ddc1562452b2fad..58525d1f53a9046a802d0613424f5602bb975ea9 100644 --- a/ParameterLib/Utils.cpp +++ b/ParameterLib/Utils.cpp @@ -28,7 +28,7 @@ ParameterBase* findParameterByName( return nullptr; } - DBUG("Found parameter `%s'.", (*it)->name.c_str()); + DBUG("Found parameter `{:s}'.", (*it)->name.c_str()); return it->get(); } } // namespace ParameterLib diff --git a/ParameterLib/Utils.h b/ParameterLib/Utils.h index a7f7dfa6e48ecbd556a5af82ef9baf1647e22e52..10eef070febfd0740b2a24f798aadf4e98fbcd64 100644 --- a/ParameterLib/Utils.h +++ b/ParameterLib/Utils.h @@ -57,7 +57,7 @@ Parameter<ParameterDataType>* findParameterOptional( dynamic_cast<Parameter<ParameterDataType>*>(parameter_ptr); if (!parameter) { - OGS_FATAL("The read parameter `%s' is of incompatible type.", + OGS_FATAL("The read parameter `{:s}' is of incompatible type.", parameter_name.c_str()); } @@ -65,8 +65,9 @@ Parameter<ParameterDataType>* findParameterOptional( parameter->getNumberOfComponents() != num_components) { OGS_FATAL( - "The read parameter `%s' has the wrong number of components (%lu " - "instead of %u).", + "The read parameter `{:s}' has the wrong number of components " + "({:d} " + "instead of {:d}).", parameter_name.c_str(), parameter->getNumberOfComponents(), num_components); } @@ -78,7 +79,7 @@ Parameter<ParameterDataType>* findParameterOptional( { OGS_FATAL( "The found parameter is not suitable for the use on the " - "required mesh.\n%s", + "required mesh.\n{:s}", error->c_str()); } } @@ -110,7 +111,7 @@ Parameter<ParameterDataType>& findParameter( if (!parameter) { OGS_FATAL( - "Could not find parameter `%s' in the provided parameters list.", + "Could not find parameter `{:s}' in the provided parameters list.", parameter_name.c_str()); } return *parameter; diff --git a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp index 780fb47089ed56390bcb791d7c7e924da222816d..6e958f8dab1fe6af64ee3faf3543462ab12972c9 100644 --- a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp @@ -12,7 +12,7 @@ #include <algorithm> #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MeshLib/MeshSearch/NodeSearch.h" // for getUniqueNodes #include "MeshLib/Node.h" @@ -47,16 +47,17 @@ ConstraintDirichletBoundaryCondition::ConstraintDirichletBoundaryCondition( dof_table_bulk.getNumberOfVariableComponents(variable_id)) { OGS_FATAL( - "Variable id or component id too high. Actual values: (%d, " - "%d), maximum values: (%d, %d).", + "Variable id or component id too high. Actual values: ({:d}, " + "{:d}), maximum values: ({:d}, {:d}).", variable_id, component_id, dof_table_bulk.getNumberOfVariables(), dof_table_bulk.getNumberOfVariableComponents(variable_id)); } std::vector<MeshLib::Node*> const& bc_nodes = _bc_mesh.getNodes(); DBUG( - "Found %d nodes for constraint Dirichlet BCs for the variable %d and " - "component %d", + "Found {:d} nodes for constraint Dirichlet BCs for the variable {:d} " + "and " + "component {:d}", bc_nodes.size(), variable_id, component_id); MeshLib::MeshSubset bc_mesh_subset{_bc_mesh, bc_nodes}; @@ -219,7 +220,7 @@ void ConstraintDirichletBoundaryCondition::getEssentialBCValues( bc_values.ids.emplace_back(current_id); bc_values.values.emplace_back(sum / cnt); - DBUG("Found %d constraint dirichlet boundary condition values.", + DBUG("Found {:d} constraint dirichlet boundary condition values.", bc_values.ids.size()); } @@ -240,7 +241,7 @@ createConstraintDirichletBoundaryCondition( config.getConfigParameter<std::string>("constraint_type"); if (constraint_type != "Flux") { - OGS_FATAL("The constraint type is '%s', but has to be 'Flux'.", + OGS_FATAL("The constraint type is '{:s}', but has to be 'Flux'.", constraint_type.c_str()); } @@ -269,9 +270,10 @@ createConstraintDirichletBoundaryCondition( auto const& constraining_process_variable_name = process_variables[variable_id].get().getName(); OGS_FATAL( - "<constraining_process_variable> in process variable name '%s' at " + "<constraining_process_variable> in process variable name '{:s}' " + "at " "geometry 'TODO' : The constraining process variable is set as " - "'%s', but this is not specified in the project file.", + "'{:s}', but this is not specified in the project file.", constraining_process_variable_name.c_str(), constraining_process_variable.c_str()); } @@ -287,7 +289,8 @@ createConstraintDirichletBoundaryCondition( constraint_direction_string != "lower") { OGS_FATAL( - "The constraint direction is '%s', but has to be either 'greater' " + "The constraint direction is '{:s}', but has to be either " + "'greater' " "or 'lower'.", constraint_direction_string.c_str()); } @@ -296,7 +299,7 @@ createConstraintDirichletBoundaryCondition( //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__ConstraintDirichletBoundaryCondition__parameter} auto const param_name = config.getConfigParameter<std::string>("parameter"); - DBUG("Using parameter %s", param_name.c_str()); + DBUG("Using parameter {:s}", param_name.c_str()); auto& param = ParameterLib::findParameter<double>(param_name, parameters, 1, &bc_mesh); diff --git a/ProcessLib/BoundaryCondition/CreateBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/CreateBoundaryCondition.cpp index e6454440924a152e72a22d338a7a138fff6c9bed..b3ca1e122564e07eda0c505c40ab581e3c75556a 100644 --- a/ProcessLib/BoundaryCondition/CreateBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/CreateBoundaryCondition.cpp @@ -43,7 +43,8 @@ std::unique_ptr<BoundaryCondition> createBoundaryCondition( bulk_mesh.isAxiallySymmetric()) { OGS_FATAL( - "The boundary mesh %s axially symmetric but the bulk mesh %s. Both " + "The boundary mesh {:s} axially symmetric but the bulk mesh {:s}. " + "Both " "must have an equal axial symmetry property.", config.boundary_mesh.isAxiallySymmetric() ? "is" : "is not", bulk_mesh.isAxiallySymmetric() ? "is" : "is not"); @@ -130,7 +131,7 @@ std::unique_ptr<BoundaryCondition> createBoundaryCondition( config.config, dof_table, bulk_mesh, variable_id, *config.component_id); } - OGS_FATAL("Unknown boundary condition type: `%s'.", type.c_str()); + OGS_FATAL("Unknown boundary condition type: `{:s}'.", type.c_str()); } } // namespace ProcessLib diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp index 9c33483f180f1c8ad935f9c34b80ef5ba87a9bbf..361787d93f78d78b489c6c9945f9c5828c054fc9 100644 --- a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp @@ -11,8 +11,8 @@ #include "DirichletBoundaryCondition.h" #include <algorithm> -#include <logog/include/logog.hpp> #include <vector> +#include "BaseLib/Logging.h" #include "DirichletBoundaryConditionAuxiliaryFunctions.h" @@ -67,7 +67,7 @@ std::unique_ptr<DirichletBoundaryCondition> createDirichletBoundaryCondition( //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__Dirichlet__parameter} auto const param_name = config.getConfigParameter<std::string>("parameter"); - DBUG("Using parameter %s", param_name.c_str()); + DBUG("Using parameter {:s}", param_name.c_str()); auto& parameter = ParameterLib::findParameter<double>( param_name, parameters, 1, &bc_mesh); diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp index c3a55caed78f4d9966a79e11b26c1709639fa136..8bdcb355a516286d5ddbdd4cd7498cfb0bd985e2 100644 --- a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp +++ b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp @@ -33,8 +33,8 @@ void checkParametersOfDirichletBoundaryCondition( dof_table_bulk.getNumberOfVariableComponents(variable_id)) { OGS_FATAL( - "Variable id or component id too high. Actual values: (%d, " - "%d), maximum values: (%d, %d).", + "Variable id or component id too high. Actual values: ({:d}, " + "{:d}), maximum values: ({:d}, {:d}).", variable_id, component_id, dof_table_bulk.getNumberOfVariables(), dof_table_bulk.getNumberOfVariableComponents(variable_id)); } @@ -44,14 +44,14 @@ void checkParametersOfDirichletBoundaryCondition( { OGS_FATAL( "The required bulk node ids map does not exist in the boundary " - "mesh '%s'.", + "mesh '{:s}'.", bc_mesh.getName().c_str()); } DBUG( - "Found %d nodes for Dirichlet BCs for the variable %d and " + "Found {:d} nodes for Dirichlet BCs for the variable {:d} and " "component " - "%d", + "{:d}", bc_mesh.getNodes().size(), variable_id, component_id); } diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.cpp b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.cpp index d9323faa67c9d292a3479a6db90cabae2b96c8f5..fd2c99ea7ca2855ccf7de94ab0029c85aa460e3e 100644 --- a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.cpp +++ b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionWithinTimeInterval.cpp @@ -108,7 +108,7 @@ createDirichletBoundaryConditionWithinTimeInterval( //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__DirichletWithinTimeInterval__parameter} auto const param_name = config.getConfigParameter<std::string>("parameter"); - DBUG("Using parameter %s", param_name.c_str()); + DBUG("Using parameter {:s}", param_name.c_str()); auto& param = ParameterLib::findParameter<double>(param_name, parameters, 1, &bc_mesh); diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h index c35cde29da709ebff1b4006f09af4392024d7696..25f7d7db31276e996453a1d8fb58b44f30f77d7d 100644 --- a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h +++ b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h @@ -37,8 +37,9 @@ GenericNaturalBoundaryCondition<BoundaryConditionData, dof_table_bulk.getNumberOfVariableComponents(variable_id)) { OGS_FATAL( - "Variable id or component id too high. Actual values: (%d, %d), " - "maximum values: (%d, %d).", + "Variable id or component id too high. Actual values: ({:d}, " + "{:d}), " + "maximum values: ({:d}, {:d}).", variable_id, component_id, dof_table_bulk.getNumberOfVariables(), dof_table_bulk.getNumberOfVariableComponents(variable_id)); } @@ -48,13 +49,15 @@ GenericNaturalBoundaryCondition<BoundaryConditionData, { OGS_FATAL( "The required bulk node ids map does not exist in the boundary " - "mesh '%s'.", + "mesh '{:s}'.", _bc_mesh.getName().c_str()); } std::vector<MeshLib::Node*> const& bc_nodes = _bc_mesh.getNodes(); - DBUG("Found %d nodes for Natural BCs for the variable %d and component %d", - bc_nodes.size(), variable_id, component_id); + DBUG( + "Found {:d} nodes for Natural BCs for the variable {:d} and component " + "{:d}", + bc_nodes.size(), variable_id, component_id); MeshLib::MeshSubset bc_mesh_subset(_bc_mesh, bc_nodes); diff --git a/ProcessLib/BoundaryCondition/HCNonAdvectiveFreeComponentFlowBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/HCNonAdvectiveFreeComponentFlowBoundaryCondition.cpp index 178e5706c4464ab092e15998faeef9cc0d21b8e5..66b2f47e257ef3528c4843707641ae5d79d5e524 100644 --- a/ProcessLib/BoundaryCondition/HCNonAdvectiveFreeComponentFlowBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/HCNonAdvectiveFreeComponentFlowBoundaryCondition.cpp @@ -33,8 +33,9 @@ createHCNonAdvectiveFreeComponentFlowBoundaryCondition( if (bc_mesh.getDimension() + 1 != global_dim) { OGS_FATAL( - "The dimension (%d) of the given boundary mesh '%s' is not by one " - "lower than the bulk dimension (%d).", + "The dimension ({:d}) of the given boundary mesh '{:s}' is not by " + "one " + "lower than the bulk dimension ({:d}).", bc_mesh.getDimension(), bc_mesh.getName().c_str(), global_dim); } diff --git a/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.cpp index 775b9deb96498b0df20247ee0f13b70644444efd..79d4a2679d0047a772dfac5d9d08928a465f2d46 100644 --- a/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/NeumannBoundaryCondition.cpp @@ -26,7 +26,7 @@ std::unique_ptr<NeumannBoundaryCondition> createNeumannBoundaryCondition( //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__Neumann__parameter} auto const param_name = config.getConfigParameter<std::string>("parameter"); - DBUG("Using parameter %s", param_name.c_str()); + DBUG("Using parameter {:s}", param_name.c_str()); auto const& param = ParameterLib::findParameter<double>( param_name, parameters, 1, &bc_mesh); @@ -51,7 +51,7 @@ std::unique_ptr<NeumannBoundaryCondition> createNeumannBoundaryCondition( auto const area_parameter_name = //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__Neumann__area_parameter} config.getConfigParameter<std::string>("area_parameter"); - DBUG("area parameter name '%s'", area_parameter_name.c_str()); + DBUG("area parameter name '{:s}'", area_parameter_name.c_str()); integral_measure = &ParameterLib::findParameter<double>( area_parameter_name, parameters, 1, &bc_mesh); } @@ -59,8 +59,9 @@ std::unique_ptr<NeumannBoundaryCondition> createNeumannBoundaryCondition( if (bc_mesh.getDimension() >= global_dim) { OGS_FATAL( - "The dimension (%d) of the given boundary mesh '%s' is not lower " - "than the bulk dimension (%d).", + "The dimension ({:d}) of the given boundary mesh '{:s}' is not " + "lower " + "than the bulk dimension ({:d}).", bc_mesh.getDimension(), bc_mesh.getName().c_str(), global_dim); } diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h b/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h index 3c54a6eca5ad4f4b9fe69a16e58735306efd410a..23bac056da2ba4e68952f82d3100e081b552e438 100644 --- a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h +++ b/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h @@ -43,8 +43,8 @@ NormalTractionBoundaryCondition<LocalAssemblerImplementation>:: // BC mesh subset creation std::vector<MeshLib::Node*> const bc_nodes = _bc_mesh.getNodes(); - DBUG("Found %d nodes for Natural BCs for the variable %d", bc_nodes.size(), - variable_id); + DBUG("Found {:d} nodes for Natural BCs for the variable {:d}", + bc_nodes.size(), variable_id); MeshLib::MeshSubset bc_mesh_subset(_bc_mesh, bc_nodes); @@ -87,7 +87,7 @@ createNormalTractionBoundaryCondition( auto const parameter_name = //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__NormalTraction__parameter} config.getConfigParameter<std::string>("parameter"); - DBUG("Using parameter %s", parameter_name.c_str()); + DBUG("Using parameter {:s}", parameter_name.c_str()); auto const& pressure = ParameterLib::findParameter<double>( parameter_name, parameters, 1, &bc_mesh); diff --git a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp index aca477f0f1d4eb80442bc0548992035c26990118..55ee54835ac13255ef548aefe97e6fd15621b488 100644 --- a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp @@ -11,8 +11,8 @@ #include "PhaseFieldIrreversibleDamageOracleBoundaryCondition.h" #include <algorithm> -#include <logog/include/logog.hpp> #include <vector> +#include "BaseLib/Logging.h" namespace ProcessLib { diff --git a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h index 149c7146aa956139f446a2ea6ad54502fcc7778b..9c3bec9254afe3bc5f7184b66bca3a565b46e701 100644 --- a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h +++ b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h @@ -35,9 +35,9 @@ public: dof_table.getNumberOfVariableComponents(variable_id)) { OGS_FATAL( - "Variable id or component id too high. Actual values: (%d, " - "%d), " - "maximum values: (%d, %d).", + "Variable id or component id too high. Actual values: ({:d}, " + "{:d}), " + "maximum values: ({:d}, {:d}).", variable_id, component_id, dof_table.getNumberOfVariables(), dof_table.getNumberOfVariableComponents(variable_id)); } diff --git a/ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryCondition.h b/ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryCondition.h index 02f80f2fc4edf8788e673db953d9468fb5f4ab3d..57ed204bf26160b0873e4ea4000b0812b1f946e5 100644 --- a/ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryCondition.h +++ b/ProcessLib/BoundaryCondition/Python/BHEInflowPythonBoundaryCondition.h @@ -14,7 +14,6 @@ #endif // OGS_USE_PYTHON #include <algorithm> #include <iostream> -#include <logog/include/logog.hpp> #include <vector> #include "BHEInflowPythonBoundaryConditionPythonSideInterface.h" diff --git a/ProcessLib/BoundaryCondition/Python/CMakeLists.txt b/ProcessLib/BoundaryCondition/Python/CMakeLists.txt index caa5e62b1ea353a0499918e500d4af800ac0ed06..a1a184d68e52885dca2296a6d2a9c049a3ea844a 100644 --- a/ProcessLib/BoundaryCondition/Python/CMakeLists.txt +++ b/ProcessLib/BoundaryCondition/Python/CMakeLists.txt @@ -9,14 +9,10 @@ ogs_add_library(ProcessLibBoundaryConditionPython target_compile_definitions(ProcessLibBoundaryConditionPython PUBLIC OGS_USE_PYTHON) -target_link_libraries(ProcessLibBoundaryConditionPython - PUBLIC BaseLib - MathLib - MeshLib - NumLib - logog - ${Python3_LIBRARIES} - PRIVATE pybind11::pybind11) +target_link_libraries( + ProcessLibBoundaryConditionPython + PUBLIC BaseLib MathLib MeshLib NumLib ${Python3_LIBRARIES} + PRIVATE pybind11::pybind11 spdlog::spdlog) # For the embedded Python module ogs_add_library(ProcessLibBoundaryConditionPythonModule diff --git a/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp index 0217b0b67602e9eb81de15c16f8fa6631f76a6c8..5af5c82004b7294b0833ddaf95eb7c74adf0896e 100644 --- a/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/Python/PythonBoundaryCondition.cpp @@ -33,7 +33,7 @@ public: return; } - LOGOG_COUT << std::flush; + std::cout << std::flush; } //! Optionally flushes Python's stdout after running Python code. @@ -125,7 +125,8 @@ void PythonBoundaryCondition::getEssentialBCValues( { // TODO extend Python BC to mixed FEM ansatz functions OGS_FATAL( - "No d.o.f. found for (node=%d, var=%d, comp=%d). " + "No d.o.f. found for (node={:d}, var={:d}, comp={:d}). " + " " "That might be due to the use of mixed FEM ansatz " "functions, which is currently not supported by " "the implementation of Python BCs. That excludes, " @@ -220,7 +221,8 @@ std::unique_ptr<PythonBoundaryCondition> createPythonBoundaryCondition( if (!scope.contains(bc_object)) { OGS_FATAL( - "Function `%s' is not defined in the python script file, or there " + "Function `{:s}' is not defined in the python script file, or " + "there " "was no python script file specified.", bc_object.c_str()); } @@ -232,8 +234,9 @@ std::unique_ptr<PythonBoundaryCondition> createPythonBoundaryCondition( component_id >= dof_table.getNumberOfVariableComponents(variable_id)) { OGS_FATAL( - "Variable id or component id too high. Actual values: (%d, %d), " - "maximum values: (%d, %d).", + "Variable id or component id too high. Actual values: ({:d}, " + "{:d}), " + "maximum values: ({:d}, {:d}).", variable_id, component_id, dof_table.getNumberOfVariables(), dof_table.getNumberOfVariableComponents(variable_id)); } diff --git a/ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionLocalAssembler.h index d6a6cd2ea575e7fa1abfc0de57ee29c5cadefb45..c567a55de2c4a8d97f2023b3e5ad615a46a3bdbf 100644 --- a/ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/Python/PythonBoundaryConditionLocalAssembler.h @@ -97,7 +97,8 @@ public: { // TODO extend Python BC to mixed FEM ansatz functions OGS_FATAL( - "No d.o.f. found for (node=%d, var=%d, comp=%d). " + "No d.o.f. found for (node={:d}, var={:d}, " + "comp={:d}). " "That might be due to the use of mixed FEM ansatz " "functions, which is currently not supported by " "the implementation of Python BCs. That excludes, " @@ -151,8 +152,8 @@ public: // for cases without Jacobian assembly. OGS_FATAL( "The Python BC must return the derivative of the flux " - "w.r.t. each primary variable. %d components expected. %d " - "components returned from Python.", + "w.r.t. each primary variable. {:d} components expected. " + "{:d} components returned from Python.", num_comp_total, dFlux.size()); } diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/RobinBoundaryCondition.cpp index 0866bdf0bf27536275f31d34154dc76ef2f97556..64f3ebeafeca2363880c84a37c5e2f1a93c25326 100644 --- a/ProcessLib/BoundaryCondition/RobinBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/RobinBoundaryCondition.cpp @@ -28,8 +28,9 @@ std::unique_ptr<RobinBoundaryCondition> createRobinBoundaryCondition( if (bc_mesh.getDimension() >= global_dim) { OGS_FATAL( - "The dimension (%d) of the given boundary mesh '%s' is not lower " - "than the bulk dimension (%d).", + "The dimension ({:d}) of the given boundary mesh '{:s}' is not " + "lower " + "than the bulk dimension ({:d}).", bc_mesh.getDimension(), bc_mesh.getName().c_str(), global_dim); } @@ -49,7 +50,7 @@ std::unique_ptr<RobinBoundaryCondition> createRobinBoundaryCondition( auto const area_parameter_name = //! \ogs_file_param{prj__process_variables__process_variable__boundary_conditions__boundary_condition__Robin__area_parameter} config.getConfigParameter<std::string>("area_parameter"); - DBUG("area parameter name '%s'", area_parameter_name.c_str()); + DBUG("area parameter name '{:s}'", area_parameter_name.c_str()); integral_measure = &ParameterLib::findParameter<double>( area_parameter_name, parameters, 1, &bc_mesh); } diff --git a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.cpp index 03d88b26e06559a05a05e58257aa608c04693149..b4e3bd3243044fe2542e56ba37cf2682246f284b 100644 --- a/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/VariableDependentNeumannBoundaryCondition.cpp @@ -36,8 +36,9 @@ createVariableDependentNeumannBoundaryCondition( if (bc_mesh.getDimension() + 1 != global_dim) { OGS_FATAL( - "The dimension (%d) of the given boundary mesh '%s' is not by one " - "lower than the bulk dimension (%d).", + "The dimension ({:d}) of the given boundary mesh '{:s}' is not by " + "one " + "lower than the bulk dimension ({:d}).", bc_mesh.getDimension(), bc_mesh.getName().c_str(), global_dim); } diff --git a/ProcessLib/CMakeLists.txt b/ProcessLib/CMakeLists.txt index 71ae82110b66b7333bc9302a48c19efd8e9bf116..d2152d627f4358be03bfd3119e4385067476d937 100644 --- a/ProcessLib/CMakeLists.txt +++ b/ProcessLib/CMakeLists.txt @@ -19,15 +19,10 @@ append_source_files(SOURCES Utils) ogs_add_library(ProcessLib ${SOURCES}) -target_link_libraries(ProcessLib - PUBLIC BaseLib - MaterialLib - MathLib - MeshGeoToolsLib - MeshLib - NumLib - logog - PRIVATE ParameterLib GitInfoLib) +target_link_libraries( + ProcessLib + PUBLIC BaseLib MaterialLib MathLib MeshGeoToolsLib MeshLib NumLib + PRIVATE ParameterLib GitInfoLib spdlog::spdlog) if (OGS_BUILD_PROCESS_ComponentTransport OR OGS_BUILD_PROCESS_RichardsComponentTransport) diff --git a/ProcessLib/CentralDifferencesJacobianAssembler.cpp b/ProcessLib/CentralDifferencesJacobianAssembler.cpp index d2813c66365ae16418292bf166b9817c9e89804f..2515e051713332e466f47a9ed453c2f01eda00d3 100644 --- a/ProcessLib/CentralDifferencesJacobianAssembler.cpp +++ b/ProcessLib/CentralDifferencesJacobianAssembler.cpp @@ -36,8 +36,8 @@ void CentralDifferencesJacobianAssembler::assembleWithJacobian( // TODO do not check in every call. if (local_x_data.size() % _absolute_epsilons.size() != 0) { OGS_FATAL( - "The number of specified epsilons (%u) and the number of local " - "d.o.f.s (%u) do not match, i.e., the latter is not divisable by " + "The number of specified epsilons ({:d}) and the number of local " + "d.o.f.s ({:d}) do not match, i.e., the latter is not divisable by " "the former.", _absolute_epsilons.size(), local_x_data.size()); } diff --git a/ProcessLib/CompareJacobiansJacobianAssembler.cpp b/ProcessLib/CompareJacobiansJacobianAssembler.cpp index 339bd01b9a044dfc046ca6e161f21aed669856a8..e0b8aa1094ebc8370f6d501ba5682a48fb32a5c9 100644 --- a/ProcessLib/CompareJacobiansJacobianAssembler.cpp +++ b/ProcessLib/CompareJacobiansJacobianAssembler.cpp @@ -277,7 +277,7 @@ void CompareJacobiansJacobianAssembler::assembleWithJacobian( if (tol_exceeded) { - WARN("Compare Jacobians: %s", msg_tolerance.str().c_str()); + WARN("Compare Jacobians: {:s}", msg_tolerance.str().c_str()); } bool const output = tol_exceeded || fatal_error; @@ -384,7 +384,7 @@ void CompareJacobiansJacobianAssembler::assembleWithJacobian( if (fatal_error) { _log_file << std::flush; - OGS_FATAL("%s", msg_fatal.c_str()); + OGS_FATAL("{:s}", msg_fatal.c_str()); } if (tol_exceeded && _fail_on_error) diff --git a/ProcessLib/ComponentTransport/CreateComponentTransportProcess.cpp b/ProcessLib/ComponentTransport/CreateComponentTransportProcess.cpp index efda052904f141f4ad0944bc2359f01e787eda7a..a14f77355f464b4fe922629cc321d42ab0d4d948 100644 --- a/ProcessLib/ComponentTransport/CreateComponentTransportProcess.cpp +++ b/ProcessLib/ComponentTransport/CreateComponentTransportProcess.cpp @@ -61,7 +61,7 @@ void checkMPLProperties( if (!liquid_phase.hasComponent(component_id)) { OGS_FATAL( - "The component %u in the AqueousLiquid phase isn't " + "The component {:d} in the AqueousLiquid phase isn't " "specified.", component_id); } @@ -121,8 +121,9 @@ std::unique_ptr<Process> createComponentTransportProcess( if (it != collected_process_variables.end()) { OGS_FATAL( - "Number of components for process variable '%s' should be 1 rather " - "than %d.", + "Number of components for process variable '{:s}' should be 1 " + "rather " + "than {:d}.", it->get().getName().c_str(), it->get().getNumberOfComponents()); } @@ -165,8 +166,8 @@ std::unique_ptr<Process> createComponentTransportProcess( if (b.size() < mesh.getDimension()) { OGS_FATAL( - "specific body force (gravity vector) has %d components, mesh " - "dimension is %d", + "specific body force (gravity vector) has {:d} components, mesh " + "dimension is {:d}", b.size(), mesh.getDimension()); } bool const has_gravity = MathLib::toVector(b).norm() > 0; diff --git a/ProcessLib/CreateJacobianAssembler.cpp b/ProcessLib/CreateJacobianAssembler.cpp index 9a1e848d1a2529193b76c74a29abb0714c2e8f8f..3b0d5fac9aee8f7e3a53e20e3fe4adeb9126700d 100644 --- a/ProcessLib/CreateJacobianAssembler.cpp +++ b/ProcessLib/CreateJacobianAssembler.cpp @@ -41,6 +41,6 @@ std::unique_ptr<AbstractJacobianAssembler> createJacobianAssembler( return createCompareJacobiansJacobianAssembler(*config); } - OGS_FATAL("Unknown Jacobian assembler type: `%s'.", type.c_str()); + OGS_FATAL("Unknown Jacobian assembler type: `{:s}'.", type.c_str()); } } // namespace ProcessLib diff --git a/ProcessLib/DeactivatedSubdomain.cpp b/ProcessLib/DeactivatedSubdomain.cpp index 1156217c67d668c2de15e814a9262d97cef06503..942753e6b822a473dff3793c821b3d4fde59096b 100644 --- a/ProcessLib/DeactivatedSubdomain.cpp +++ b/ProcessLib/DeactivatedSubdomain.cpp @@ -12,8 +12,6 @@ */ #include "DeactivatedSubdomain.h" -#include <logog/include/logog.hpp> - #include "BaseLib/ConfigTree.h" #include "BaseLib/Error.h" #include "MeshLib/Elements/Element.h" diff --git a/ProcessLib/Deformation/SolidMaterialInternalToSecondaryVariables.h b/ProcessLib/Deformation/SolidMaterialInternalToSecondaryVariables.h index 21a0f9171712323dc3aebaf645a3142fdd09fefb..164e6d8c2f9cffc250de2f47775a986fb8f9a183 100644 --- a/ProcessLib/Deformation/SolidMaterialInternalToSecondaryVariables.h +++ b/ProcessLib/Deformation/SolidMaterialInternalToSecondaryVariables.h @@ -42,7 +42,7 @@ void solidMaterialInternalToSecondaryVariables( auto const& name = internal_variable.name; auto const& fct = internal_variable.getter; auto const num_components = internal_variable.num_components; - DBUG("Registering internal variable %s.", name.c_str()); + DBUG("Registering internal variable {:s}.", name.c_str()); auto getIntPtValues = [fct, num_components]( diff --git a/ProcessLib/HT/CreateHTProcess.cpp b/ProcessLib/HT/CreateHTProcess.cpp index e6d39866d8b9c79ef01e8407a5a28ed458b4a19d..67a781f659c2a81cd745d14669d1611dd90d16e4 100644 --- a/ProcessLib/HT/CreateHTProcess.cpp +++ b/ProcessLib/HT/CreateHTProcess.cpp @@ -114,8 +114,8 @@ std::unique_ptr<Process> createHTProcess( if (b.size() < mesh.getDimension()) { OGS_FATAL( - "specific body force (gravity vector) has %d components, mesh " - "dimension is %d", + "specific body force (gravity vector) has {:d} components, mesh " + "dimension is {:d}", b.size(), mesh.getDimension()); } bool const has_gravity = MathLib::toVector(b).norm() > 0; @@ -142,12 +142,12 @@ std::unique_ptr<Process> createHTProcess( solid_thermal_expansion = &ParameterLib::findParameter<double>( //! \ogs_file_param_special{prj__processes__process__HT__solid_thermal_expansion__thermal_expansion} *solid_config, "thermal_expansion", parameters, 1, &mesh); - DBUG("Use '%s' as solid thermal expansion.", + DBUG("Use '{:s}' as solid thermal expansion.", solid_thermal_expansion->name.c_str()); biot_constant = &ParameterLib::findParameter<double>( //! \ogs_file_param_special{prj__processes__process__HT__solid_thermal_expansion__biot_constant} *solid_config, "biot_constant", parameters, 1, &mesh); - DBUG("Use '%s' as Biot's constant.", biot_constant->name.c_str()); + DBUG("Use '{:s}' as Biot's constant.", biot_constant->name.c_str()); } std::unique_ptr<ProcessLib::SurfaceFluxData> surfaceflux; diff --git a/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp b/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp index afdc46f252cf903b09a5d272a7b8ced3189e62da..8061591280d055b6f6f8d8e2cd021fcddeb178c4 100644 --- a/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp +++ b/ProcessLib/HeatConduction/CreateHeatConductionProcess.cpp @@ -53,7 +53,7 @@ std::unique_ptr<Process> createHeatConductionProcess( //! \ogs_file_param_special{prj__processes__process__HEAT_CONDUCTION__thermal_conductivity} "thermal_conductivity", parameters, 1, &mesh); - DBUG("Use '%s' as thermal conductivity parameter.", + DBUG("Use '{:s}' as thermal conductivity parameter.", thermal_conductivity.name.c_str()); // heat capacity parameter. @@ -62,7 +62,7 @@ std::unique_ptr<Process> createHeatConductionProcess( //! \ogs_file_param_special{prj__processes__process__HEAT_CONDUCTION__heat_capacity} "heat_capacity", parameters, 1, &mesh); - DBUG("Use '%s' as heat capacity parameter.", heat_capacity.name.c_str()); + DBUG("Use '{:s}' as heat capacity parameter.", heat_capacity.name.c_str()); // density parameter. auto& density = ParameterLib::findParameter<double>( @@ -70,7 +70,7 @@ std::unique_ptr<Process> createHeatConductionProcess( //! \ogs_file_param_special{prj__processes__process__HEAT_CONDUCTION__density} "density", parameters, 1, &mesh); - DBUG("Use '%s' as density parameter.", density.name.c_str()); + DBUG("Use '{:s}' as density parameter.", density.name.c_str()); HeatConductionProcessData process_data{thermal_conductivity, heat_capacity, density}; diff --git a/ProcessLib/HeatTransportBHE/BHE/BHE_1U.cpp b/ProcessLib/HeatTransportBHE/BHE/BHE_1U.cpp index 38e0f829ccceab9784f56c548db6bae193b5d559..ea0105d68c8ab240b05b8608c67d517e22b95e73 100644 --- a/ProcessLib/HeatTransportBHE/BHE/BHE_1U.cpp +++ b/ProcessLib/HeatTransportBHE/BHE/BHE_1U.cpp @@ -145,7 +145,7 @@ std::pair<double, double> thermalResistancesGroutSoil(double chi, } DBUG( "Warning! Correction procedure was applied due to negative thermal " - "resistance! Chi = %f.\n", + "resistance! Chi = {:f}.\n", m_chi); R_gs = compute_R_gs(m_chi, R_g); diff --git a/ProcessLib/HeatTransportBHE/BHE/BHE_2U.cpp b/ProcessLib/HeatTransportBHE/BHE/BHE_2U.cpp index 75a862340f543929679328c7f9a0d1135d0303ae..3cdcb2bfaeba4bb93d22f25d9c8002dc5d828369 100644 --- a/ProcessLib/HeatTransportBHE/BHE/BHE_2U.cpp +++ b/ProcessLib/HeatTransportBHE/BHE/BHE_2U.cpp @@ -165,7 +165,7 @@ std::vector<double> thermalResistancesGroutSoil2U(double chi, } DBUG( "Warning! Correction procedure was applied due to negative thermal " - "resistance! Chi = %f.\n", + "resistance! Chi = {:f}.\n", m_chi); R_gs = compute_R_gs_2U(m_chi, R_g); R_gg_1 = compute_R_gg_2U(m_chi, R_gs, R_ar_1, R_g); diff --git a/ProcessLib/HeatTransportBHE/BHE/CreateBHECoaxial.cpp b/ProcessLib/HeatTransportBHE/BHE/CreateBHECoaxial.cpp index be1986e31e3bcb07ab96469ec9aa4a64f602d863..49b0afeec7d9dfdacd06f05e865aebe645759d65 100644 --- a/ProcessLib/HeatTransportBHE/BHE/CreateBHECoaxial.cpp +++ b/ProcessLib/HeatTransportBHE/BHE/CreateBHECoaxial.cpp @@ -36,7 +36,7 @@ parseBHECoaxialConfig( auto const bhe_if_use_python_bc_conf = //! \ogs_file_param{prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__use_bhe_pipe_network} config.getConfigParameter<bool>("use_bhe_pipe_network", false); - DBUG("If using python boundary condition : %s", + DBUG("If using python boundary condition : {:s}", (bhe_if_use_python_bc_conf) ? "true" : "false"); auto const borehole_geometry = diff --git a/ProcessLib/HeatTransportBHE/BHE/CreateBHEUType.cpp b/ProcessLib/HeatTransportBHE/BHE/CreateBHEUType.cpp index 37766ce994dc721a873d2017ce1496d5a4a3957e..5ae29e1670d37c4c3a5de4656d80315fca465740 100644 --- a/ProcessLib/HeatTransportBHE/BHE/CreateBHEUType.cpp +++ b/ProcessLib/HeatTransportBHE/BHE/CreateBHEUType.cpp @@ -37,7 +37,7 @@ parseBHEUTypeConfig( auto const bhe_if_use_python_bc_conf = //! \ogs_file_param{prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__use_bhe_pipe_network} config.getConfigParameter<bool>("use_bhe_pipe_network", false); - DBUG("If using python boundary condition : %s", + DBUG("If using python boundary condition : {:s}", (bhe_if_use_python_bc_conf) ? "true" : "false"); auto const borehole_geometry = diff --git a/ProcessLib/HeatTransportBHE/BHE/CreateFlowAndTemperatureControl.cpp b/ProcessLib/HeatTransportBHE/BHE/CreateFlowAndTemperatureControl.cpp index abd3a1717588a8dbcaf59f029161642a73b670de..5f5c8de933d9086277e1e1f0c5327e511de3ffd8 100644 --- a/ProcessLib/HeatTransportBHE/BHE/CreateFlowAndTemperatureControl.cpp +++ b/ProcessLib/HeatTransportBHE/BHE/CreateFlowAndTemperatureControl.cpp @@ -112,7 +112,7 @@ FlowAndTemperatureControl createFlowAndTemperatureControl( building_power_curves, flow_rate, refrigerant.specific_heat_capacity, refrigerant.density}; } - OGS_FATAL("FlowAndTemperatureControl type '%s' is not implemented.", + OGS_FATAL("FlowAndTemperatureControl type '{:s}' is not implemented.", type.c_str()); } } // namespace BHE diff --git a/ProcessLib/HeatTransportBHE/BHE/MeshUtils.cpp b/ProcessLib/HeatTransportBHE/BHE/MeshUtils.cpp index 9164b68a7d7aaa168f084a3287967a45bf0f699e..c24ea808fc7cb5e10d810f05a8c81b052724eec9 100644 --- a/ProcessLib/HeatTransportBHE/BHE/MeshUtils.cpp +++ b/ProcessLib/HeatTransportBHE/BHE/MeshUtils.cpp @@ -9,6 +9,8 @@ #include "MeshUtils.h" +#include <set> + #include "BaseLib/Algorithm.h" #include "MeshLib/Elements/Element.h" #include "MeshLib/Mesh.h" @@ -54,7 +56,7 @@ BHEMeshData getBHEDataInMesh(MeshLib::Mesh const& mesh) // finally counting two types of elements // They are (i) soil, and (ii) BHE type of elements - DBUG("-> found total %d soil elements and %d BHE elements", + DBUG("-> found total {:d} soil elements and {:d} BHE elements", mesh.getNumberOfElements() - all_bhe_elements.size(), all_bhe_elements.size()); @@ -68,7 +70,7 @@ BHEMeshData getBHEDataInMesh(MeshLib::Mesh const& mesh) auto const& bhe_material_ids = getUniqueMaterialIds(material_ids, all_bhe_elements); - DBUG("-> found %d BHE material groups", bhe_material_ids.size()); + DBUG("-> found {:d} BHE material groups", bhe_material_ids.size()); // create a vector of BHE elements for each group std::vector<std::vector<MeshLib::Element*>> bhe_elements; @@ -81,7 +83,8 @@ BHEMeshData getBHEDataInMesh(MeshLib::Mesh const& mesh) back_inserter(vec_elements), [&](MeshLib::Element* e) { return material_ids[e->getID()] == bhe_mat_id; }); - DBUG("-> found %d elements on the BHE_%d", vec_elements.size(), bhe_id); + DBUG("-> found {:d} elements on the BHE_{:d}", vec_elements.size(), + bhe_id); } // get a vector of BHE nodes @@ -101,7 +104,7 @@ BHEMeshData getBHEDataInMesh(MeshLib::Mesh const& mesh) vec_nodes, [](MeshLib::Node* node1, MeshLib::Node* node2) { return node1->getID() < node2->getID(); }); - DBUG("-> found %d nodes on the BHE_%d", vec_nodes.size(), bhe_id); + DBUG("-> found {:d} nodes on the BHE_{:d}", vec_nodes.size(), bhe_id); } return {bhe_material_ids, bhe_elements, bhe_nodes}; diff --git a/ProcessLib/HeatTransportBHE/CreateHeatTransportBHEProcess.cpp b/ProcessLib/HeatTransportBHE/CreateHeatTransportBHEProcess.cpp index 64279e35d6e52432f2ed47d6039a37b52b947f87..7d54a4c1ca0ce096643feeebb8d4ffa3feb72472 100644 --- a/ProcessLib/HeatTransportBHE/CreateHeatTransportBHEProcess.cpp +++ b/ProcessLib/HeatTransportBHE/CreateHeatTransportBHEProcess.cpp @@ -67,7 +67,7 @@ std::unique_ptr<Process> createHeatTransportBHEProcess( pv_name.find("temperature_BHE") == std::string::npos) { OGS_FATAL( - "Found a process variable name '%s'. It should be " + "Found a process variable name '{:s}'. It should be " "'temperature_soil' or 'temperature_BHE_X'"); } auto variable = std::find_if(variables.cbegin(), variables.cend(), @@ -78,12 +78,12 @@ std::unique_ptr<Process> createHeatTransportBHEProcess( if (variable == variables.end()) { OGS_FATAL( - "Could not find process variable '%s' in the provided " + "Could not find process variable '{:s}' in the provided " "variables " - "list for config tag <%s>.", + "list for config tag <{:s}>.", pv_name.c_str(), "process_variable"); } - DBUG("Found process variable '%s' for config tag <%s>.", + DBUG("Found process variable '{:s}' for config tag <{:s}>.", variable->getName().c_str(), "process_variable"); per_process_variables.emplace_back( @@ -144,7 +144,7 @@ std::unique_ptr<Process> createHeatTransportBHEProcess( BHE::createBHE1PType<BHE::BHE_1P>(bhe_config, curves)); continue; } - OGS_FATAL("Unknown BHE type '%s'.", bhe_type.c_str()); + OGS_FATAL("Unknown BHE type '{:s}'.", bhe_type.c_str()); } // end of reading BHE parameters ------------------------------------------- diff --git a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp index 2762473f388b62c32c25b33150098c88292c2213..f7aaaa564c06e2b95d02887d178982623a507eef 100644 --- a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp +++ b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp @@ -44,8 +44,8 @@ HeatTransportBHEProcess::HeatTransportBHEProcess( _process_data._vec_BHE_property.size()) { OGS_FATAL( - "The number of the given BHE properties (%d) are not consistent " - "with the number of BHE groups in the mesh (%d).", + "The number of the given BHE properties ({:d}) are not consistent " + "with the number of BHE groups in the mesh ({:d}).", _process_data._vec_BHE_property.size(), _bheMeshData.BHE_mat_IDs.size()); } diff --git a/ProcessLib/HeatTransportBHE/LocalAssemblers/CreateLocalAssemblers.h b/ProcessLib/HeatTransportBHE/LocalAssemblers/CreateLocalAssemblers.h index f688635254dbacced807a44d7c16284e1abf862c..f5360d5986b1a34f6868b374a2625de7243d4358 100644 --- a/ProcessLib/HeatTransportBHE/LocalAssemblers/CreateLocalAssemblers.h +++ b/ProcessLib/HeatTransportBHE/LocalAssemblers/CreateLocalAssemblers.h @@ -11,7 +11,7 @@ #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "LocalDataInitializer.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" diff --git a/ProcessLib/HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h b/ProcessLib/HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h index f3d8ca38e3a010877e206c9ef81f1005e23f71e8..09413077b67a03778c53ba02d2269c8337bf3862 100644 --- a/ProcessLib/HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h +++ b/ProcessLib/HeatTransportBHE/LocalAssemblers/LocalDataInitializer.h @@ -199,7 +199,7 @@ public: { OGS_FATAL( "You are trying to build a local assembler for an unknown mesh " - "element type (%s)." + "element type ({:s})." " Maybe you have disabled this mesh element type in your build " "configuration or this process requires higher order elements.", type_idx.name()); diff --git a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp index b4c8cf25cf569781e375ece9b87794896f83d63b..a2dc0d40cedd1c0f5d2cd70668525bfc3efed885 100644 --- a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp +++ b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp @@ -84,26 +84,26 @@ std::unique_ptr<Process> createHydroMechanicsProcess( variable_u = &process_variables[1][0].get(); } - DBUG("Associate displacement with process variable '%s'.", + DBUG("Associate displacement with process variable '{:s}'.", variable_u->getName().c_str()); if (variable_u->getNumberOfComponents() != DisplacementDim) { OGS_FATAL( - "Number of components of the process variable '%s' is different " - "from the displacement dimension: got %d, expected %d", + "Number of components of the process variable '{:s}' is different " + "from the displacement dimension: got {:d}, expected {:d}", variable_u->getName().c_str(), variable_u->getNumberOfComponents(), DisplacementDim); } - DBUG("Associate pressure with process variable '%s'.", + DBUG("Associate pressure with process variable '{:s}'.", variable_p->getName().c_str()); if (variable_p->getNumberOfComponents() != 1) { OGS_FATAL( - "Pressure process variable '%s' is not a scalar variable but has " - "%d components.", + "Pressure process variable '{:s}' is not a scalar variable but has " + "{:d} components.", variable_p->getName().c_str(), variable_p->getNumberOfComponents()); } @@ -123,8 +123,8 @@ std::unique_ptr<Process> createHydroMechanicsProcess( { OGS_FATAL( "The size of the specific body force vector does not match the " - "displacement dimension. Vector size is %d, displacement " - "dimension is %d", + "displacement dimension. Vector size is {:d}, displacement " + "dimension is {:d}", b.size(), DisplacementDim); } diff --git a/ProcessLib/HydroMechanics/CreateLocalAssemblers.h b/ProcessLib/HydroMechanics/CreateLocalAssemblers.h index 411ae779688e7fd5cb0ba8cb2029bf37dc83f471..a941597e4530a59c3ddab2b44dbe56bd469112de 100644 --- a/ProcessLib/HydroMechanics/CreateLocalAssemblers.h +++ b/ProcessLib/HydroMechanics/CreateLocalAssemblers.h @@ -11,7 +11,7 @@ #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h index 8df477be704e45dad661f054b071a18ca31fba68..b3950f66a7554cf5d0c9c84e8e0b35a553703732 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h @@ -722,7 +722,7 @@ std::size_t HydroMechanicsLocalAssembler< { OGS_FATAL( "Setting integration point initial conditions; The integration " - "order of the local assembler for element %d is different from " + "order of the local assembler for element {:d} is different from " "the integration order in the initial condition.", _element.getID()); } diff --git a/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp b/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp index 19fecd56e602327ac32c26f9e0582284b9ab109c..31d6c019f19753e360663f37aa3f909652a07b8f 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp +++ b/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp @@ -325,8 +325,8 @@ void HydroMechanicsProcess<DisplacementDim>::initializeConcreteProcess( if (ip_meta_data.n_components != mesh_property.getNumberOfComponents()) { OGS_FATAL( - "Different number of components in meta data (%d) than in " - "the integration point field data for '%s': %d.", + "Different number of components in meta data ({:d}) than in " + "the integration point field data for '{:s}': {:d}.", ip_meta_data.n_components, name.c_str(), mesh_property.getNumberOfComponents()); } diff --git a/ProcessLib/HydroMechanics/LocalDataInitializer.h b/ProcessLib/HydroMechanics/LocalDataInitializer.h index 9810c1533e6397b03338cb4a6afe675837bb9eaa..08695710585ca2f700721583b19f65a011ce4150 100644 --- a/ProcessLib/HydroMechanics/LocalDataInitializer.h +++ b/ProcessLib/HydroMechanics/LocalDataInitializer.h @@ -133,7 +133,7 @@ public: if (shapefunction_order != 2) { OGS_FATAL( - "The given shape function order %d is not supported.\nOnly " + "The given shape function order {:d} is not supported.\nOnly " "shape functions of order 2 are supported.", shapefunction_order); } @@ -207,7 +207,7 @@ public: { OGS_FATAL( "You are trying to build a local assembler for an unknown mesh " - "element type (%s)." + "element type ({:s})." " Maybe you have disabled this mesh element type in your build " "configuration or this process requires higher order elements.", type_idx.name()); diff --git a/ProcessLib/LIE/Common/FractureProperty.h b/ProcessLib/LIE/Common/FractureProperty.h index 631338e9fecc7478c3094fab8d2fc60c3c1a2f01..201fd0bcd01b1ded04a41fc1df0ed6b90e4ee4a8 100644 --- a/ProcessLib/LIE/Common/FractureProperty.h +++ b/ProcessLib/LIE/Common/FractureProperty.h @@ -90,8 +90,8 @@ inline void setFractureProperty(int const dim, MeshLib::Element const& e, computeNormalVector(e, dim, n); frac_prop.R.resize(dim, dim); computeRotationMatrix(e, n, dim, frac_prop.R); - DBUG("Normal vector of the fracture element %d: [%g, %g, %g]", e.getID(), - n[0], n[1], n[2]); + DBUG("Normal vector of the fracture element {:d}: [{:g}, {:g}, {:g}]", + e.getID(), n[0], n[1], n[2]); } inline BranchProperty createBranchProperty(MeshLib::Node const& branchNode, diff --git a/ProcessLib/LIE/Common/MeshUtils.cpp b/ProcessLib/LIE/Common/MeshUtils.cpp index 089c7e039da7a07f1f78b220fa73128af21b5d64..88919f8d72c5cf17688698ecbd9c39cff80488ab 100644 --- a/ProcessLib/LIE/Common/MeshUtils.cpp +++ b/ProcessLib/LIE/Common/MeshUtils.cpp @@ -205,7 +205,7 @@ void findFracutreIntersections( BaseLib::makeVectorUnique(eles); } - DBUG("-> found %d branchs and %d junctions", + DBUG("-> found {:d} branchs and {:d} junctions", vec_branch_nodeID_matIDs.size(), vec_junction_nodeID_matIDs.size()); } @@ -239,7 +239,7 @@ void getFractureMatrixDataInMesh( all_fracture_elements.push_back(e); } } - DBUG("-> found total %d matrix elements and %d fracture elements", + DBUG("-> found total {:d} matrix elements and {:d} fracture elements", vec_matrix_elements.size(), all_fracture_elements.size()); // get fracture material IDs @@ -253,7 +253,7 @@ void getFractureMatrixDataInMesh( vec_fracture_mat_IDs.push_back((*material_ids)[e->getID()]); } BaseLib::makeVectorUnique(vec_fracture_mat_IDs); - DBUG("-> found %d fracture material groups", vec_fracture_mat_IDs.size()); + DBUG("-> found {:d} fracture material groups", vec_fracture_mat_IDs.size()); // create a vector of fracture elements for each material vec_fracture_elements.resize(vec_fracture_mat_IDs.size()); @@ -267,7 +267,7 @@ void getFractureMatrixDataInMesh( [&](MeshLib::Element* e) { return (*material_ids)[e->getID()] == frac_mat_id; }); - DBUG("-> found %d elements on the fracture %d", vec_elements.size(), + DBUG("-> found {:d} elements on the fracture {:d}", vec_elements.size(), frac_id); } @@ -291,7 +291,8 @@ void getFractureMatrixDataInMesh( vec_nodes, [](MeshLib::Node* node1, MeshLib::Node* node2) { return node1->getID() < node2->getID(); }); - DBUG("-> found %d nodes on the fracture %d", vec_nodes.size(), frac_id); + DBUG("-> found {:d} nodes on the fracture {:d}", vec_nodes.size(), + frac_id); } // find branch/junction nodes which connect to multiple fractures diff --git a/ProcessLib/LIE/Common/PostUtils.cpp b/ProcessLib/LIE/Common/PostUtils.cpp index 58f84edde45c8e3ebbaa60faaa5f685d3e389f89..5809c62890323e3aef3580df2a04cd61a235d723 100644 --- a/ProcessLib/LIE/Common/PostUtils.cpp +++ b/ProcessLib/LIE/Common/PostUtils.cpp @@ -252,7 +252,8 @@ void PostProcessTool::createProperties() else { WARN( - "Property '%s' cannot be created because its mesh item type is " + "Property '{:s}' cannot be created because its mesh item type " + "is " "not supported.", name.c_str()); } @@ -311,7 +312,8 @@ void PostProcessTool::copyProperties() else { WARN( - "Property '%s' cannot be created because its mesh item type is " + "Property '{:s}' cannot be created because its mesh item type " + "is " "not supported.", name.c_str()); } diff --git a/ProcessLib/LIE/HydroMechanics/CreateHydroMechanicsProcess.cpp b/ProcessLib/LIE/HydroMechanics/CreateHydroMechanicsProcess.cpp index 9504bd3d231ccbd553a60746b97861667c460ce5..0447440fb8427a650a302141a610c398c60e3d0d 100644 --- a/ProcessLib/LIE/HydroMechanics/CreateHydroMechanicsProcess.cpp +++ b/ProcessLib/LIE/HydroMechanics/CreateHydroMechanicsProcess.cpp @@ -66,7 +66,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( pv_name.find("displacement_jump") != 0) { OGS_FATAL( - "Found a process variable name '%s'. It should be " + "Found a process variable name '{:s}'. It should be " "'displacement' or 'displacement_jumpN' or 'pressure'"); } auto variable = std::find_if(variables.cbegin(), variables.cend(), @@ -77,21 +77,21 @@ std::unique_ptr<Process> createHydroMechanicsProcess( if (variable == variables.end()) { OGS_FATAL( - "Could not find process variable '%s' in the provided " + "Could not find process variable '{:s}' in the provided " "variables " - "list for config tag <%s>.", + "list for config tag <{:s}>.", pv_name.c_str(), "process_variable"); } - DBUG("Found process variable '%s' for config tag <%s>.", + DBUG("Found process variable '{:s}' for config tag <{:s}>.", variable->getName().c_str(), "process_variable"); if (pv_name.find("displacement") != std::string::npos && variable->getNumberOfComponents() != GlobalDim) { OGS_FATAL( - "Number of components of the process variable '%s' is " + "Number of components of the process variable '{:s}' is " "different " - "from the displacement dimension: got %d, expected %d", + "from the displacement dimension: got {:d}, expected {:d}", variable->getName().c_str(), variable->getNumberOfComponents(), GlobalDim); @@ -142,7 +142,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__intrinsic_permeability} "intrinsic_permeability", parameters, 1, &mesh); - DBUG("Use '%s' as intrinsic permeability parameter.", + DBUG("Use '{:s}' as intrinsic permeability parameter.", intrinsic_permeability.name.c_str()); // Storage coefficient @@ -151,7 +151,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__specific_storage} "specific_storage", parameters, 1, &mesh); - DBUG("Use '%s' as specific storage parameter.", + DBUG("Use '{:s}' as specific storage parameter.", specific_storage.name.c_str()); // Fluid viscosity @@ -159,7 +159,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( config, //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__fluid_viscosity} "fluid_viscosity", parameters, 1, &mesh); - DBUG("Use '%s' as fluid viscosity parameter.", + DBUG("Use '{:s}' as fluid viscosity parameter.", fluid_viscosity.name.c_str()); // Fluid density @@ -167,14 +167,14 @@ std::unique_ptr<Process> createHydroMechanicsProcess( config, //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__fluid_density} "fluid_density", parameters, 1, &mesh); - DBUG("Use '%s' as fluid density parameter.", fluid_density.name.c_str()); + DBUG("Use '{:s}' as fluid density parameter.", fluid_density.name.c_str()); // Biot coefficient auto& biot_coefficient = ParameterLib::findParameter<double>( config, //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__biot_coefficient} "biot_coefficient", parameters, 1, &mesh); - DBUG("Use '%s' as Biot coefficient parameter.", + DBUG("Use '{:s}' as Biot coefficient parameter.", biot_coefficient.name.c_str()); // Porosity @@ -182,14 +182,14 @@ std::unique_ptr<Process> createHydroMechanicsProcess( config, //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__porosity} "porosity", parameters, 1, &mesh); - DBUG("Use '%s' as porosity parameter.", porosity.name.c_str()); + DBUG("Use '{:s}' as porosity parameter.", porosity.name.c_str()); // Solid density auto& solid_density = ParameterLib::findParameter<double>( config, //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__solid_density} "solid_density", parameters, 1, &mesh); - DBUG("Use '%s' as solid density parameter.", solid_density.name.c_str()); + DBUG("Use '{:s}' as solid density parameter.", solid_density.name.c_str()); // Specific body force Eigen::Matrix<double, GlobalDim, 1> specific_body_force; @@ -202,8 +202,8 @@ std::unique_ptr<Process> createHydroMechanicsProcess( { OGS_FATAL( "The size of the specific body force vector does not match the " - "displacement dimension. Vector size is %d, displacement " - "dimension is %d", + "displacement dimension. Vector size is {:d}, displacement " + "dimension is {:d}", b.size(), GlobalDim); } @@ -245,7 +245,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( { OGS_FATAL( "Cannot construct fracture constitutive relation of given type " - "'%s'.", + "'{:s}'.", frac_type.c_str()); } } @@ -278,7 +278,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( if (frac_prop->aperture0.isTimeDependent()) { OGS_FATAL( - "The initial aperture parameter '%s' must not be " + "The initial aperture parameter '{:s}' must not be " "time-dependent.", frac_prop->aperture0.name.c_str()); } @@ -297,7 +297,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__initial_effective_stress} "initial_effective_stress", parameters, MathLib::KelvinVector::KelvinVectorDimensions<GlobalDim>::value, &mesh); - DBUG("Use '%s' as initial effective stress parameter.", + DBUG("Use '{:s}' as initial effective stress parameter.", initial_effective_stress.name.c_str()); // initial effective stress in fracture @@ -306,7 +306,7 @@ std::unique_ptr<Process> createHydroMechanicsProcess( config, //! \ogs_file_param_special{prj__processes__process__HYDRO_MECHANICS_WITH_LIE__initial_fracture_effective_stress} "initial_fracture_effective_stress", parameters, GlobalDim, &mesh); - DBUG("Use '%s' as initial fracture effective stress parameter.", + DBUG("Use '{:s}' as initial fracture effective stress parameter.", initial_fracture_effective_stress.name.c_str()); // deactivation of matrix elements in flow diff --git a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp index 69f22abdb3794dc6dcd3ef84df737164b1ef6de5..c4982bb7626432741258b7a414d8f7be850bb839 100644 --- a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp +++ b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp @@ -107,7 +107,7 @@ HydroMechanicsProcess<GlobalDim>::HydroMechanicsProcess( { OGS_FATAL( "Could not get minimum/maximum ranges values for the " - "MaterialIDs property in the mesh '%s'.", + "MaterialIDs property in the mesh '{:s}'.", mesh.getName().c_str()); } @@ -195,7 +195,7 @@ void HydroMechanicsProcess<GlobalDim>::constructDofTable() vec_var_elements, NumLib::ComponentOrder::BY_COMPONENT); - DBUG("created %d DoF", _local_to_global_index_map->size()); + DBUG("created {:d} DoF", _local_to_global_index_map->size()); } template <int GlobalDim> diff --git a/ProcessLib/LIE/HydroMechanics/LocalAssembler/CreateLocalAssemblers.h b/ProcessLib/LIE/HydroMechanics/LocalAssembler/CreateLocalAssemblers.h index 9b83821e27a8525f047797bcb13ccb7d94a3881f..f749059da1d6809ed9317994dd4a3a0f8456c154 100644 --- a/ProcessLib/LIE/HydroMechanics/LocalAssembler/CreateLocalAssemblers.h +++ b/ProcessLib/LIE/HydroMechanics/LocalAssembler/CreateLocalAssemblers.h @@ -11,7 +11,7 @@ #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" diff --git a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h index e7879dcaabd72723bb996c59271a484ab7cc9824..ad016b1f60bf71674f436fa82cba1dd4946c55bb 100644 --- a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h +++ b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h @@ -239,7 +239,8 @@ void HydroMechanicsLocalAssemblerFracture<ShapeFunctionDisplacement, if (b_m < 0.0) { DBUG( - "Element %d, gp %d: Fracture aperture is %g, but it must be " + "Element {:d}, gp {:d}: Fracture aperture is {:g}, but it must " + "be " "non-negative. Setting it to zero.", _element.getID(), ip, b_m); b_m = 0; @@ -369,7 +370,7 @@ void HydroMechanicsLocalAssemblerFracture< if (b_m < 0.0) { DBUG( - "Element %d, gp %d: Fracture aperture is %g, but it is " + "Element {:d}, gp {:d}: Fracture aperture is {:g}, but it is " "expected to be non-negative.", _element.getID(), ip, b_m); } diff --git a/ProcessLib/LIE/HydroMechanics/LocalAssembler/LocalDataInitializer.h b/ProcessLib/LIE/HydroMechanics/LocalAssembler/LocalDataInitializer.h index 116eabde703feddc437a97ebee3a13e76f535185..bdc69649fae2dce1c834b51d1c74b00874c1034e 100644 --- a/ProcessLib/LIE/HydroMechanics/LocalAssembler/LocalDataInitializer.h +++ b/ProcessLib/LIE/HydroMechanics/LocalAssembler/LocalDataInitializer.h @@ -144,7 +144,7 @@ public: if (shapefunction_order != 2) { OGS_FATAL( - "The given shape function order %d is not supported.\nOnly " + "The given shape function order {:d} is not supported.\nOnly " "shape functions of order 2 are supported.", shapefunction_order); } @@ -219,7 +219,7 @@ public: { OGS_FATAL( "You are trying to build a local assembler for an unknown mesh " - "element type (%s)." + "element type ({:s})." " Maybe you have disabled this mesh element type in your build " "configuration or this process requires higher order elements.", type_idx.name()); diff --git a/ProcessLib/LIE/SmallDeformation/CreateSmallDeformationProcess.cpp b/ProcessLib/LIE/SmallDeformation/CreateSmallDeformationProcess.cpp index 6de133a5340ddd2842eb9469e572b3b1715a1fbc..9c9d673b092892e9f7318c4d390d3afde5ad7027 100644 --- a/ProcessLib/LIE/SmallDeformation/CreateSmallDeformationProcess.cpp +++ b/ProcessLib/LIE/SmallDeformation/CreateSmallDeformationProcess.cpp @@ -57,7 +57,7 @@ std::unique_ptr<Process> createSmallDeformationProcess( if (pv_name != "displacement" && pv_name.find("displacement_jump") != 0) { OGS_FATAL( - "Found a process variable name '%s'. It should be " + "Found a process variable name '{:s}'. It should be " "'displacement' or 'displacement_jumpN' or " "'displacement_junctionN'"); } @@ -74,12 +74,12 @@ std::unique_ptr<Process> createSmallDeformationProcess( if (variable == variables.end()) { OGS_FATAL( - "Could not find process variable '%s' in the provided " + "Could not find process variable '{:s}' in the provided " "variables " - "list for config tag <%s>.", + "list for config tag <{:s}>.", pv_name.c_str(), "process_variable"); } - DBUG("Found process variable '%s' for config tag <%s>.", + DBUG("Found process variable '{:s}' for config tag <{:s}>.", variable->getName().c_str(), "process_variable"); per_process_variables.emplace_back( @@ -91,15 +91,15 @@ std::unique_ptr<Process> createSmallDeformationProcess( OGS_FATAL("No displacement jump variables are specified"); } - DBUG("Associate displacement with process variable '%s'.", + DBUG("Associate displacement with process variable '{:s}'.", per_process_variables.back().get().getName().c_str()); if (per_process_variables.back().get().getNumberOfComponents() != DisplacementDim) { OGS_FATAL( - "Number of components of the process variable '%s' is different " - "from the displacement dimension: got %d, expected %d", + "Number of components of the process variable '{:s}' is different " + "from the displacement dimension: got {:d}, expected {:d}", per_process_variables.back().get().getName().c_str(), per_process_variables.back().get().getNumberOfComponents(), DisplacementDim); @@ -144,7 +144,7 @@ std::unique_ptr<Process> createSmallDeformationProcess( { OGS_FATAL( "Cannot construct fracture constitutive relation of given type " - "'%s'.", + "'{:s}'.", frac_type.c_str()); } diff --git a/ProcessLib/LIE/SmallDeformation/LocalAssembler/CreateLocalAssemblers.h b/ProcessLib/LIE/SmallDeformation/LocalAssembler/CreateLocalAssemblers.h index 07f1ddf7162073d2a1de1c00f8c400a8fd5b24f0..39dc70f5feaa8559b552d6feae58408419ef28d0 100644 --- a/ProcessLib/LIE/SmallDeformation/LocalAssembler/CreateLocalAssemblers.h +++ b/ProcessLib/LIE/SmallDeformation/LocalAssembler/CreateLocalAssemblers.h @@ -11,7 +11,7 @@ #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" diff --git a/ProcessLib/LIE/SmallDeformation/LocalAssembler/LocalDataInitializer.h b/ProcessLib/LIE/SmallDeformation/LocalAssembler/LocalDataInitializer.h index 8ce1b7045f12a81f9664b81afdbca02263f0116a..8ac3a2d97dd749a0f60dc436fc075cf39e982fae 100644 --- a/ProcessLib/LIE/SmallDeformation/LocalAssembler/LocalDataInitializer.h +++ b/ProcessLib/LIE/SmallDeformation/LocalAssembler/LocalDataInitializer.h @@ -248,7 +248,7 @@ public: { OGS_FATAL( "You are trying to build a local assembler for an unknown mesh " - "element type (%s)." + "element type ({:s})." " Maybe you have disabled this mesh element type in your build " "configuration or this process requires higher order elements.", type_idx.name()); diff --git a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerFracture-impl.h b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerFracture-impl.h index 0b9469d0b69ccaa62d5e4fc81ef3982ada641c98..e1c7c7490d6a0e54129d3f8215567f6777b43999 100644 --- a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerFracture-impl.h +++ b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerFracture-impl.h @@ -315,8 +315,8 @@ void SmallDeformationLocalAssemblerFracture<ShapeFunction, IntegrationMethod, if (b_m < 0.0) { OGS_FATAL( - "Element %d, gp %d: Fracture aperture is %g, but it must be " - "non-negative.", + "Element {:d}, gp {:d}: Fracture aperture is {:g}, but it must " + "be non-negative.", _element.getID(), ip, b_m); } diff --git a/ProcessLib/LIE/SmallDeformation/SmallDeformationProcess.cpp b/ProcessLib/LIE/SmallDeformation/SmallDeformationProcess.cpp index fabc61b97cca5edbdd36164853add9040d953b54..9d5bc7b2c002635a6f3bf438c42176cd42365863 100644 --- a/ProcessLib/LIE/SmallDeformation/SmallDeformationProcess.cpp +++ b/ProcessLib/LIE/SmallDeformation/SmallDeformationProcess.cpp @@ -59,9 +59,9 @@ SmallDeformationProcess<DisplacementDim>::SmallDeformationProcess( _process_data.fracture_properties.size()) { OGS_FATAL( - "The number of the given fracture properties (%d) are not " + "The number of the given fracture properties ({:d}) are not " "consistent" - " with the number of fracture groups in a mesh (%d).", + " with the number of fracture groups in a mesh ({:d}).", _process_data.fracture_properties.size(), _vec_fracture_mat_IDs.size()); } diff --git a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp index 05e90c5f00c9abbb97cf6a9cd17b30b1eec40535..51f34df443a3d738d7f340c7bae4dda990f7129b 100644 --- a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp +++ b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp @@ -93,7 +93,7 @@ std::unique_ptr<Process> createLiquidFlowProcess( { OGS_FATAL( "The gravity axis must be a number between 0 and one less than the " - "mesh dimension, which is %d. Read gravity axis %d from input " + "mesh dimension, which is {:d}. Read gravity axis {:d} from input " "file.", mesh.getDimension(), gravity_axis_id_input); } diff --git a/ProcessLib/Output/CreateOutput.cpp b/ProcessLib/Output/CreateOutput.cpp index 224dcd3c9c6d5fe663ca7845cbbc71d2a542bbeb..a1923fddfd9ab6555633b7f89c362f9c192b957a 100644 --- a/ProcessLib/Output/CreateOutput.cpp +++ b/ProcessLib/Output/CreateOutput.cpp @@ -10,9 +10,9 @@ #include "CreateOutput.h" -#include <logog/include/logog.hpp> #include <memory> #include <tuple> +#include "BaseLib/Logging.h" #include "BaseLib/Algorithm.h" #include "BaseLib/ConfigTree.h" @@ -89,11 +89,11 @@ std::unique_ptr<Output> createOutput( { if (output_variables.find(out_var) != output_variables.cend()) { - OGS_FATAL("output variable `%s' specified more than once.", + OGS_FATAL("output variable `{:s}' specified more than once.", out_var.c_str()); } - DBUG("adding output variable `%s'", out_var.c_str()); + DBUG("adding output variable `{:s}'", out_var.c_str()); output_variables.insert(out_var); } @@ -112,7 +112,7 @@ std::unique_ptr<Output> createOutput( { mesh_names_for_output.push_back( mesh_config.getValue<std::string>()); - INFO("Configure mesh '%s' for output.", + INFO("Configure mesh '{:s}' for output.", mesh_names_for_output.back().c_str()); } } diff --git a/ProcessLib/Output/IntegrationPointWriter.cpp b/ProcessLib/Output/IntegrationPointWriter.cpp index 8e11d1c4f2b4ab62a7e9c1af36fe84032c0be467..8bf1a417ef30e20104e8bfa586ff4e00175c3fa0 100644 --- a/ProcessLib/Output/IntegrationPointWriter.cpp +++ b/ProcessLib/Output/IntegrationPointWriter.cpp @@ -81,7 +81,7 @@ static ProcessLib::IntegrationPointMetaData extractIntegrationPointMetaData( return {name, md["number_of_components"], md["integration_order"]}; } } - OGS_FATAL("No integration point meta data with name '%s' found.", + OGS_FATAL("No integration point meta data with name '{:s}' found.", name.c_str()); } @@ -110,7 +110,7 @@ IntegrationPointMetaData getIntegrationPointMetaData(MeshLib::Mesh const& mesh, "IntegrationPointMetaData")) { OGS_FATAL( - "Integration point data '%s' is present in the vtk field " + "Integration point data '{:s}' is present in the vtk field " "data but the required 'IntegrationPointMetaData' array " "is not available.", name.c_str()); diff --git a/ProcessLib/Output/Output.cpp b/ProcessLib/Output/Output.cpp index 75075e1f8807a5bad62651cd0506e479d3f6b71d..422b082cf7c49b4c245438bc0ecf75b14f3f6c5e 100644 --- a/ProcessLib/Output/Output.cpp +++ b/ProcessLib/Output/Output.cpp @@ -14,7 +14,7 @@ #include <fstream> #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "Applications/InSituLib/Adaptor.h" #include "BaseLib/FileTools.h" @@ -40,7 +40,7 @@ int convertVtkDataMode(std::string const& data_mode) return 2; } OGS_FATAL( - "Unsupported vtk output file data mode '%s'. Expected Ascii, " + "Unsupported vtk output file data mode '{:s}'. Expected Ascii, " "Binary, or Appended.", data_mode.c_str()); } @@ -180,7 +180,7 @@ void Output::outputBulkMesh(OutputFile const& output_file, MeshLib::Mesh const& mesh, double const t) const { - DBUG("output to %s", output_file.path.c_str()); + DBUG("output to {:s}", output_file.path.c_str()); process_data->pvd_file.addVTUFile(output_file.name, t); @@ -250,9 +250,8 @@ void Output::doOutputAlways(Process const& process, "Need mesh '" + mesh_output_name + "' for the output."); std::vector<MeshLib::Node*> const& nodes = mesh.getNodes(); - DBUG( - "Found %d nodes for output at mesh '%s'.", - nodes.size(), mesh.getName().c_str()); + DBUG("Found {:d} nodes for output at mesh '{:s}'.", nodes.size(), + mesh.getName().c_str()); MeshLib::MeshSubset mesh_subset(mesh, nodes); std::vector<std::unique_ptr<NumLib::LocalToGlobalIndexMap>> @@ -292,12 +291,12 @@ void Output::doOutputAlways(Process const& process, _output_file_data_mode, _output_file_compression}; - DBUG("output to %s", output_file.path.c_str()); + DBUG("output to {:s}", output_file.path.c_str()); makeOutput(output_file.path, mesh, output_file.compression, output_file.data_mode); } - INFO("[time] Output of timestep %d took %g s.", timestep, + INFO("[time] Output of timestep {:d} took {:g} s.", timestep, time_output.elapsed()); } @@ -378,9 +377,9 @@ void Output::doOutputNonlinearIteration(Process const& process, std::string const output_file_path = BaseLib::joinPaths(_output_directory, output_file_name); - DBUG("output iteration results to %s", output_file_path.c_str()); + DBUG("output iteration results to {:s}", output_file_path.c_str()); - INFO("[time] Output took %g s.", time_output.elapsed()); + INFO("[time] Output took {:g} s.", time_output.elapsed()); makeOutput(output_file_path, process.getMesh(), _output_file_compression, _output_file_data_mode); diff --git a/ProcessLib/Output/ProcessOutput.cpp b/ProcessLib/Output/ProcessOutput.cpp index 040cf0b88eb92783a847238e0c1b862cfc819e91..db6b1d9936c69cc1a265f31de8b9d144811d8fd5 100644 --- a/ProcessLib/Output/ProcessOutput.cpp +++ b/ProcessLib/Output/ProcessOutput.cpp @@ -37,7 +37,7 @@ static void addSecondaryVariableNodes( std::string const& output_name, MeshLib::Mesh& mesh) { - DBUG(" secondary variable %s", output_name.c_str()); + DBUG(" secondary variable {:s}", output_name.c_str()); auto& nodal_values_mesh = *MeshLib::getOrCreateMeshProperty<double>( mesh, output_name, MeshLib::MeshItemType::Node, @@ -46,8 +46,8 @@ static void addSecondaryVariableNodes( mesh.getNumberOfNodes() * var.fcts.num_components) { OGS_FATAL( - "Nodal property `%s' does not have the right number of " - "components. Expected: %d, actual: %d", + "Nodal property `{:s}' does not have the right number of " + "components. Expected: {:d}, actual: {:d}", output_name.c_str(), mesh.getNumberOfNodes() * var.fcts.num_components, nodal_values_mesh.size()); @@ -65,8 +65,8 @@ static void addSecondaryVariableNodes( if (nodal_values_mesh.size() != global_vector_size) { OGS_FATAL( - "Secondary variable `%s' did not evaluate to the right " - "number of components. Expected: %d, actual: %d.", + "Secondary variable `{:s}' did not evaluate to the right " + "number of components. Expected: {:d}, actual: {:d}.", var.name.c_str(), nodal_values_mesh.size(), global_vector_size); } @@ -87,7 +87,7 @@ static void addSecondaryVariableResiduals( return; } - DBUG(" secondary variable %s residual", output_name.c_str()); + DBUG(" secondary variable {:s} residual", output_name.c_str()); auto const& property_name_res = output_name + "_residual"; auto& residuals_mesh = *MeshLib::getOrCreateMeshProperty<double>( @@ -97,8 +97,9 @@ static void addSecondaryVariableResiduals( mesh.getNumberOfElements() * var.fcts.num_components) { OGS_FATAL( - "Cell property `%s' does not have the right number of components. " - "Expected: %d, actual: %d", + "Cell property `{:s}' does not have the right number of " + "components. " + "Expected: {:d}, actual: {:d}", property_name_res.c_str(), mesh.getNumberOfElements() * var.fcts.num_components, residuals_mesh.size()); @@ -116,8 +117,8 @@ static void addSecondaryVariableResiduals( if (residuals_mesh.size() != global_vector_size) { OGS_FATAL( - "The residual of secondary variable `%s' did not evaluate to the " - "right number of components. Expected: %d, actual: %d.", + "The residual of secondary variable `{:s}' did not evaluate to the " + "right number of components. Expected: {:d}, actual: {:d}.", var.name.c_str(), residuals_mesh.size(), global_vector_size); } @@ -190,7 +191,7 @@ void processOutputData( already_output.insert(pv.getName()); - DBUG(" process variable %s", pv.getName().c_str()); + DBUG(" process variable {:s}", pv.getName().c_str()); auto const num_comp = pv.getNumberOfComponents(); auto& output_data = *MeshLib::getOrCreateMeshProperty<double>( @@ -248,7 +249,7 @@ void makeOutput(std::string const& file_name, MeshLib::Mesh const& mesh, bool const compress_output, int const data_mode) { // Write output file - DBUG("Writing output to '%s'.", file_name.c_str()); + DBUG("Writing output to '{:s}'.", file_name.c_str()); MeshLib::IO::VtuInterface vtu_interface(&mesh, data_mode, compress_output); vtu_interface.writeToFile(file_name); } diff --git a/ProcessLib/Output/SecondaryVariable.cpp b/ProcessLib/Output/SecondaryVariable.cpp index 422cf24147d584593fa8d37a95e58c7ed912fcee..a05fb733d94f8e862ee9fcccb268ac5deb984e59 100644 --- a/ProcessLib/Output/SecondaryVariable.cpp +++ b/ProcessLib/Output/SecondaryVariable.cpp @@ -33,7 +33,7 @@ void SecondaryVariableCollection::addSecondaryVariable( .second) { OGS_FATAL( - "The secondary variable with internal name `%s' has already been " + "The secondary variable with internal name `{:s}' has already been " "set up.", internal_name.c_str()); } @@ -59,7 +59,8 @@ SecondaryVariable const& SecondaryVariableCollection::get( if (it == _map_external_to_internal.cend()) { OGS_FATAL( - "A secondary variable with external name '%s' has not been set up.", + "A secondary variable with external name '{:s}' has not been set " + "up.", external_name.c_str()); } @@ -69,7 +70,8 @@ SecondaryVariable const& SecondaryVariableCollection::get( if (it2 == _configured_secondary_variables.end()) { OGS_FATAL( - "A secondary variable with internal name '%s' has not been set up.", + "A secondary variable with internal name '{:s}' has not been set " + "up.", internal_name.c_str()); } diff --git a/ProcessLib/PhaseField/CreatePhaseFieldProcess.cpp b/ProcessLib/PhaseField/CreatePhaseFieldProcess.cpp index edaf50c37f81fc4c7fc2bb02439d5d50c9374f61..d73fd0a5fdba643465c087c837f31282f776bd89 100644 --- a/ProcessLib/PhaseField/CreatePhaseFieldProcess.cpp +++ b/ProcessLib/PhaseField/CreatePhaseFieldProcess.cpp @@ -78,26 +78,27 @@ std::unique_ptr<Process> createPhaseFieldProcess( variable_ph = &process_variables[1][0].get(); } - DBUG("Associate displacement with process variable '%s'.", + DBUG("Associate displacement with process variable '{:s}'.", variable_u->getName().c_str()); if (variable_u->getNumberOfComponents() != DisplacementDim) { OGS_FATAL( - "Number of components of the process variable '%s' is different " - "from the displacement dimension: got %d, expected %d", + "Number of components of the process variable '{:s}' is different " + "from the displacement dimension: got {:d}, expected {:d}", variable_u->getName().c_str(), variable_u->getNumberOfComponents(), DisplacementDim); } - DBUG("Associate phase field with process variable '%s'.", + DBUG("Associate phase field with process variable '{:s}'.", variable_ph->getName().c_str()); if (variable_ph->getNumberOfComponents() != 1) { OGS_FATAL( - "Phasefield process variable '%s' is not a scalar variable but has " - "%d components.", + "Phasefield process variable '{:s}' is not a scalar variable but " + "has " + "{:d} components.", variable_ph->getName().c_str(), variable_ph->getNumberOfComponents()); } @@ -115,42 +116,43 @@ std::unique_ptr<Process> createPhaseFieldProcess( phasefield_parameters_config, //! \ogs_file_param_special{prj__processes__process__PHASE_FIELD__phasefield_parameters__residual_stiffness} "residual_stiffness", parameters, 1); - DBUG("Use '%s' as residual stiffness.", residual_stiffness.name.c_str()); + DBUG("Use '{:s}' as residual stiffness.", residual_stiffness.name.c_str()); // Crack resistance auto& crack_resistance = ParameterLib::findParameter<double>( phasefield_parameters_config, //! \ogs_file_param_special{prj__processes__process__PHASE_FIELD__phasefield_parameters__crack_resistance} "crack_resistance", parameters, 1); - DBUG("Use '%s' as crack resistance.", crack_resistance.name.c_str()); + DBUG("Use '{:s}' as crack resistance.", crack_resistance.name.c_str()); // Crack length scale auto& crack_length_scale = ParameterLib::findParameter<double>( phasefield_parameters_config, //! \ogs_file_param_special{prj__processes__process__PHASE_FIELD__phasefield_parameters__crack_length_scale} "crack_length_scale", parameters, 1); - DBUG("Use '%s' as crack length scale.", crack_length_scale.name.c_str()); + DBUG("Use '{:s}' as crack length scale.", crack_length_scale.name.c_str()); // Kinetic coefficient auto& kinetic_coefficient = ParameterLib::findParameter<double>( phasefield_parameters_config, //! \ogs_file_param_special{prj__processes__process__PHASE_FIELD__phasefield_parameters__kinetic_coefficient} "kinetic_coefficient", parameters, 1); - DBUG("Use '%s' as kinetic coefficient.", kinetic_coefficient.name.c_str()); + DBUG("Use '{:s}' as kinetic coefficient.", + kinetic_coefficient.name.c_str()); // Solid density auto& solid_density = ParameterLib::findParameter<double>( config, //! \ogs_file_param_special{prj__processes__process__PHASE_FIELD__solid_density} "solid_density", parameters, 1); - DBUG("Use '%s' as solid density parameter.", solid_density.name.c_str()); + DBUG("Use '{:s}' as solid density parameter.", solid_density.name.c_str()); // History field auto& history_field = ParameterLib::findParameter<double>( phasefield_parameters_config, //! \ogs_file_param_special{prj__processes__process__PHASE_FIELD__phasefield_parameters__history_field} "history_field", parameters, 1); - DBUG("Use '%s' as history field.", history_field.name.c_str()); + DBUG("Use '{:s}' as history field.", history_field.name.c_str()); // Specific body force Eigen::Matrix<double, DisplacementDim, 1> specific_body_force; @@ -163,8 +165,8 @@ std::unique_ptr<Process> createPhaseFieldProcess( { OGS_FATAL( "The size of the specific body force vector does not match the " - "displacement dimension. Vector size is %d, displacement " - "dimension is %d", + "displacement dimension. Vector size is {:d}, displacement " + "dimension is {:d}", b.size(), DisplacementDim); } @@ -179,7 +181,7 @@ std::unique_ptr<Process> createPhaseFieldProcess( { OGS_FATAL( "hydro_crack_scheme must be 'propagating' or 'static' but " - "'%s' was given", + "'{:s}' was given", crack_scheme->c_str()); } diff --git a/ProcessLib/PhaseField/PhaseFieldProcess.cpp b/ProcessLib/PhaseField/PhaseFieldProcess.cpp index 1fd7ef6850d111d49d3af26d6ba7e99b7bd6f38f..3d2f3a03018ccc2a1c7fea6e34085fc9f7c4227b 100644 --- a/ProcessLib/PhaseField/PhaseFieldProcess.cpp +++ b/ProcessLib/PhaseField/PhaseFieldProcess.cpp @@ -241,7 +241,7 @@ void PhaseFieldProcess<DisplacementDim>::preTimestepConcreteProcess( std::vector<GlobalVector*> const& x, double const t, double const dt, const int process_id) { - DBUG("PreTimestep PhaseFieldProcess %d.", process_id); + DBUG("PreTimestep PhaseFieldProcess {:d}.", process_id); _process_data.injected_volume = t; @@ -281,7 +281,7 @@ void PhaseFieldProcess<DisplacementDim>::postTimestepConcreteProcess( _process_data.elastic_energy, _process_data.surface_energy, _process_data.pressure_work, _coupled_solutions); - INFO("Elastic energy: %g Surface energy: %g Pressure work: %g ", + INFO("Elastic energy: {:g} Surface energy: {:g} Pressure work: {:g} ", _process_data.elastic_energy, _process_data.surface_energy, _process_data.pressure_work); } @@ -311,7 +311,7 @@ void PhaseFieldProcess<DisplacementDim>::postNonLinearSolverConcreteProcess( pv.getActiveElementIDs(), dof_tables, x, t, _process_data.crack_volume, _coupled_solutions); - INFO("Integral of crack: %g", _process_data.crack_volume); + INFO("Integral of crack: {:g}", _process_data.crack_volume); if (_process_data.propagating_crack) { @@ -321,7 +321,7 @@ void PhaseFieldProcess<DisplacementDim>::postNonLinearSolverConcreteProcess( _process_data.pressure_error = std::fabs(_process_data.pressure_old - _process_data.pressure) / _process_data.pressure; - INFO("Internal pressure: %g and Pressure error: %.4e", + INFO("Internal pressure: {:g} and Pressure error: {:.4e}", _process_data.pressure, _process_data.pressure_error); auto& u = *_coupled_solutions->coupled_xs[0]; MathLib::LinAlg::scale(const_cast<GlobalVector&>(u), diff --git a/ProcessLib/Process.cpp b/ProcessLib/Process.cpp index c0962a92dca70876a320bc5fcf718f78d73b92cd..0c40e28cbfd343fbdb7fa04b2c942995ea0a291c 100644 --- a/ProcessLib/Process.cpp +++ b/ProcessLib/Process.cpp @@ -123,7 +123,7 @@ void Process::setInitialConditions(const int process_id, double const t, ParameterLib::SpatialPosition pos; auto const& pv = per_process_variables[variable_id]; - DBUG("Set the initial condition of variable %s of process %d.", + DBUG("Set the initial condition of variable {:s} of process {:d}.", pv.get().getName().data(), process_id); auto const& ic = pv.get().getInitialCondition(); diff --git a/ProcessLib/ProcessVariable.cpp b/ProcessLib/ProcessVariable.cpp index 05e5466a53d9f4b990100acaf9005d3be3f82552..025c073b408a0945038807e35a421ed7982aa10d 100644 --- a/ProcessLib/ProcessVariable.cpp +++ b/ProcessLib/ProcessVariable.cpp @@ -11,8 +11,8 @@ #include "ProcessVariable.h" #include <algorithm> -#include <logog/include/logog.hpp> #include <utility> +#include "BaseLib/Logging.h" #include "BaseLib/Algorithm.h" #include "BaseLib/TimeInterval.h" @@ -81,7 +81,8 @@ MeshLib::Mesh const& findMeshInConfig( return mesh->getName() == mesh_name; }, "Required mesh with name '" + mesh_name + "' not found."); - DBUG("Found mesh '%s' with id %d.", mesh.getName().c_str(), mesh.getID()); + DBUG("Found mesh '{:s}' with id {:d}.", mesh.getName().c_str(), + mesh.getID()); return mesh; } @@ -107,11 +108,11 @@ ProcessVariable::ProcessVariable( config.getConfigParameter<std::string>("initial_condition"), parameters, _n_components, &mesh)) { - DBUG("Constructing process variable %s", _name.c_str()); + DBUG("Constructing process variable {:s}", _name.c_str()); if (_shapefunction_order < 1 || 2 < _shapefunction_order) { - OGS_FATAL("The given shape function order %d is not supported", + OGS_FATAL("The given shape function order {:d} is not supported", _shapefunction_order); } @@ -141,7 +142,7 @@ ProcessVariable::ProcessVariable( } else { - INFO("No boundary conditions for process variable '%s' found.", + INFO("No boundary conditions for process variable '{:s}' found.", _name.c_str()); } @@ -171,7 +172,8 @@ ProcessVariable::ProcessVariable( } else { - INFO("No source terms for process variable '%s' found.", _name.c_str()); + INFO("No source terms for process variable '{:s}' found.", + _name.c_str()); } } diff --git a/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp b/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp index 9fe62954be07a5e47b7243fcce696dcd1d428b1c..80131807a3fd8975de51fb553df8d1d4f6da7374 100644 --- a/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp +++ b/ProcessLib/RichardsComponentTransport/CreateRichardsComponentTransportProcess.cpp @@ -90,7 +90,7 @@ std::unique_ptr<Process> createRichardsComponentTransportProcess( config, //! \ogs_file_param_special{prj__processes__process__RichardsComponentTransport__fluid_reference_density} "fluid_reference_density", parameters, 1, &mesh); - DBUG("Use '%s' as fluid_reference_density parameter.", + DBUG("Use '{:s}' as fluid_reference_density parameter.", fluid_reference_density.name.c_str()); // Parameter for the longitudinal solute dispersivity. @@ -99,7 +99,7 @@ std::unique_ptr<Process> createRichardsComponentTransportProcess( config, //! \ogs_file_param_special{prj__processes__process__RichardsComponentTransport__molecular_diffusion_coefficient} "molecular_diffusion_coefficient", parameters, 1, &mesh); - DBUG("Use '%s' as molecular diffusion coefficient parameter.", + DBUG("Use '{:s}' as molecular diffusion coefficient parameter.", molecular_diffusion_coefficient.name.c_str()); // Parameter for the longitudinal solute dispersivity. @@ -108,7 +108,7 @@ std::unique_ptr<Process> createRichardsComponentTransportProcess( config, //! \ogs_file_param_special{prj__processes__process__RichardsComponentTransport__solute_dispersivity_longitudinal} "solute_dispersivity_longitudinal", parameters, 1, &mesh); - DBUG("Use '%s' as longitudinal solute dispersivity parameter.", + DBUG("Use '{:s}' as longitudinal solute dispersivity parameter.", solute_dispersivity_longitudinal.name.c_str()); // Parameter for the transverse solute dispersivity. @@ -117,7 +117,7 @@ std::unique_ptr<Process> createRichardsComponentTransportProcess( config, //! \ogs_file_param_special{prj__processes__process__RichardsComponentTransport__solute_dispersivity_transverse} "solute_dispersivity_transverse", parameters, 1, &mesh); - DBUG("Use '%s' as transverse solute dispersivity parameter.", + DBUG("Use '{:s}' as transverse solute dispersivity parameter.", solute_dispersivity_transverse.name.c_str()); // Parameter for the retardation factor. @@ -141,8 +141,8 @@ std::unique_ptr<Process> createRichardsComponentTransportProcess( if (b.size() < mesh.getDimension()) { OGS_FATAL( - "specific body force (gravity vector) has %d components, mesh " - "dimension is %d", + "specific body force (gravity vector) has {:d} components, mesh " + "dimension is {:d}", b.size(), mesh.getDimension()); } bool const has_gravity = MathLib::toVector(b).norm() > 0; diff --git a/ProcessLib/RichardsMechanics/CreateLocalAssemblers.h b/ProcessLib/RichardsMechanics/CreateLocalAssemblers.h index 74047067c12735106e728ff67e7efb44e7cdb42e..6275ff59da5ee8c07d35085174e3f3b63f051f2d 100644 --- a/ProcessLib/RichardsMechanics/CreateLocalAssemblers.h +++ b/ProcessLib/RichardsMechanics/CreateLocalAssemblers.h @@ -11,7 +11,7 @@ #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" diff --git a/ProcessLib/RichardsMechanics/CreateRichardsMechanicsProcess.cpp b/ProcessLib/RichardsMechanics/CreateRichardsMechanicsProcess.cpp index 94904fc36cea426086b8a5940dfa3d011357328c..fd29c02fff88f1c98b1e0fadee1e7407b1c3e319 100644 --- a/ProcessLib/RichardsMechanics/CreateRichardsMechanicsProcess.cpp +++ b/ProcessLib/RichardsMechanics/CreateRichardsMechanicsProcess.cpp @@ -109,26 +109,26 @@ std::unique_ptr<Process> createRichardsMechanicsProcess( variable_u = &process_variables[1][0].get(); } - DBUG("Associate displacement with process variable '%s'.", + DBUG("Associate displacement with process variable '{:s}'.", variable_u->getName().c_str()); if (variable_u->getNumberOfComponents() != DisplacementDim) { OGS_FATAL( - "Number of components of the process variable '%s' is different " - "from the displacement dimension: got %d, expected %d", + "Number of components of the process variable '{:s}' is different " + "from the displacement dimension: got {:d}, expected {:d}", variable_u->getName().c_str(), variable_u->getNumberOfComponents(), DisplacementDim); } - DBUG("Associate pressure with process variable '%s'.", + DBUG("Associate pressure with process variable '{:s}'.", variable_p->getName().c_str()); if (variable_p->getNumberOfComponents() != 1) { OGS_FATAL( - "Pressure process variable '%s' is not a scalar variable but has " - "%d components.", + "Pressure process variable '{:s}' is not a scalar variable but has " + "{:d} components.", variable_p->getName().c_str(), variable_p->getNumberOfComponents()); } @@ -148,8 +148,8 @@ std::unique_ptr<Process> createRichardsMechanicsProcess( { OGS_FATAL( "The size of the specific body force vector does not match the " - "displacement dimension. Vector size is %d, displacement " - "dimension is %d", + "displacement dimension. Vector size is {:d}, displacement " + "dimension is {:d}", b.size(), DisplacementDim); } diff --git a/ProcessLib/RichardsMechanics/LocalDataInitializer.h b/ProcessLib/RichardsMechanics/LocalDataInitializer.h index af6f2974b6247b66a27c5568ef070a9bcbb327d6..aa449f7fed9d34f2a01c74f29546e0ea1ab10258 100644 --- a/ProcessLib/RichardsMechanics/LocalDataInitializer.h +++ b/ProcessLib/RichardsMechanics/LocalDataInitializer.h @@ -128,7 +128,7 @@ public: : _dof_table(dof_table) { if (shapefunction_order < 1 || 2 < shapefunction_order) - OGS_FATAL("The given shape function order %d is not supported", + OGS_FATAL("The given shape function order {:d} is not supported", shapefunction_order); if (shapefunction_order == 1) @@ -288,7 +288,7 @@ public: { OGS_FATAL( "You are trying to build a local assembler for an unknown mesh " - "element type (%s)." + "element type ({:s})." " Maybe you have disabled this mesh element type in your build " "configuration.", type_idx.name()); diff --git a/ProcessLib/SmallDeformation/CreateLocalAssemblers.h b/ProcessLib/SmallDeformation/CreateLocalAssemblers.h index a3e434221b164ff96c4c274a29db48dd69902691..89dccb7eb96c4a585e85c2252f02257d015d1381 100644 --- a/ProcessLib/SmallDeformation/CreateLocalAssemblers.h +++ b/ProcessLib/SmallDeformation/CreateLocalAssemblers.h @@ -11,7 +11,7 @@ #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" diff --git a/ProcessLib/SmallDeformation/CreateSmallDeformationProcess.cpp b/ProcessLib/SmallDeformation/CreateSmallDeformationProcess.cpp index ca7bed6ffe9e4892d139bc544aee20305d56353b..0c2fbc56f1095c3ea4f7c9e793e7cc8c0bf77d94 100644 --- a/ProcessLib/SmallDeformation/CreateSmallDeformationProcess.cpp +++ b/ProcessLib/SmallDeformation/CreateSmallDeformationProcess.cpp @@ -50,15 +50,15 @@ std::unique_ptr<Process> createSmallDeformationProcess( {//! \ogs_file_param_special{prj__processes__process__SMALL_DEFORMATION__process_variables__process_variable} "process_variable"}); - DBUG("Associate displacement with process variable '%s'.", + DBUG("Associate displacement with process variable '{:s}'.", per_process_variables.back().get().getName().c_str()); if (per_process_variables.back().get().getNumberOfComponents() != DisplacementDim) { OGS_FATAL( - "Number of components of the process variable '%s' is different " - "from the displacement dimension: got %d, expected %d", + "Number of components of the process variable '{:s}' is different " + "from the displacement dimension: got {:d}, expected {:d}", per_process_variables.back().get().getName().c_str(), per_process_variables.back().get().getNumberOfComponents(), DisplacementDim); @@ -76,7 +76,7 @@ std::unique_ptr<Process> createSmallDeformationProcess( config, //! \ogs_file_param_special{prj__processes__process__SMALL_DEFORMATION__solid_density} "solid_density", parameters, 1, &mesh); - DBUG("Use '%s' as solid density parameter.", solid_density.name.c_str()); + DBUG("Use '{:s}' as solid density parameter.", solid_density.name.c_str()); // Specific body force Eigen::Matrix<double, DisplacementDim, 1> specific_body_force; @@ -89,8 +89,8 @@ std::unique_ptr<Process> createSmallDeformationProcess( { OGS_FATAL( "The size of the specific body force vector does not match the " - "displacement dimension. Vector size is %d, displacement " - "dimension is %d", + "displacement dimension. Vector size is {:d}, displacement " + "dimension is {:d}", b.size(), DisplacementDim); } diff --git a/ProcessLib/SmallDeformation/LocalDataInitializer.h b/ProcessLib/SmallDeformation/LocalDataInitializer.h index dfa6299c3ffdcdefe4daab064e7050c40e7af4ad..719965d966c7c4db32cb50626ed1ae159eb7ba06 100644 --- a/ProcessLib/SmallDeformation/LocalDataInitializer.h +++ b/ProcessLib/SmallDeformation/LocalDataInitializer.h @@ -229,7 +229,7 @@ public: { OGS_FATAL( "You are trying to build a local assembler for an unknown mesh " - "element type (%s)." + "element type ({:s})." " Maybe you have disabled this mesh element type in your build " "configuration or this process requires higher order elements.", type_idx.name()); diff --git a/ProcessLib/SmallDeformation/SmallDeformationFEM.h b/ProcessLib/SmallDeformation/SmallDeformationFEM.h index 0d8c4d11dc1cccab3488a4f313a3dda4b573375c..187df453018f03db4710828297ebaaa57dbd94b0 100644 --- a/ProcessLib/SmallDeformation/SmallDeformationFEM.h +++ b/ProcessLib/SmallDeformation/SmallDeformationFEM.h @@ -170,8 +170,8 @@ public: { OGS_FATAL( "Setting integration point initial conditions; The integration " - "order of the local assembler for element %d is different from " - "the integration order in the initial condition.", + "order of the local assembler for element {:d} is different " + "from the integration order in the initial condition.", _element.getID()); } @@ -181,7 +181,7 @@ public: { OGS_FATAL( "Setting initial conditions for stress from integration " - "point data and from a parameter '%s' is not possible " + "point data and from a parameter '{:s}' is not possible " "simultaneously.", _process_data.initial_stress->name.c_str()); } diff --git a/ProcessLib/SmallDeformation/SmallDeformationProcess.cpp b/ProcessLib/SmallDeformation/SmallDeformationProcess.cpp index 45378644dc36f5730a8e1cf3e01cb4b29bc5eef5..cf28cba0a1db39937e09c171c5114c4e9fe8df19 100644 --- a/ProcessLib/SmallDeformation/SmallDeformationProcess.cpp +++ b/ProcessLib/SmallDeformation/SmallDeformationProcess.cpp @@ -164,8 +164,8 @@ void SmallDeformationProcess<DisplacementDim>::initializeConcreteProcess( if (ip_meta_data.n_components != mesh_property.getNumberOfComponents()) { OGS_FATAL( - "Different number of components in meta data (%d) than in " - "the integration point field data for '%s': %d.", + "Different number of components in meta data ({:d}) than in " + "the integration point field data for '{:s}': {:d}.", ip_meta_data.n_components, name.c_str(), mesh_property.getNumberOfComponents()); } diff --git a/ProcessLib/SmallDeformationNonlocal/CreateSmallDeformationNonlocalProcess.cpp b/ProcessLib/SmallDeformationNonlocal/CreateSmallDeformationNonlocalProcess.cpp index 07f37bf827ba8a4174f4e5934d642bf5b0dbb3ad..4c362b8d90ebf353e9aa89073d6993c5d3dce0ec 100644 --- a/ProcessLib/SmallDeformationNonlocal/CreateSmallDeformationNonlocalProcess.cpp +++ b/ProcessLib/SmallDeformationNonlocal/CreateSmallDeformationNonlocalProcess.cpp @@ -50,15 +50,15 @@ std::unique_ptr<Process> createSmallDeformationNonlocalProcess( {//! \ogs_file_param_special{prj__processes__process__SMALL_DEFORMATION_NONLOCAL__process_variables__process_variable} "process_variable"}); - DBUG("Associate displacement with process variable '%s'.", + DBUG("Associate displacement with process variable '{:s}'.", per_process_variables.back().get().getName().c_str()); if (per_process_variables.back().get().getNumberOfComponents() != DisplacementDim) { OGS_FATAL( - "Number of components of the process variable '%s' is different " - "from the displacement dimension: got %d, expected %d", + "Number of components of the process variable '{:s}' is different " + "from the displacement dimension: got {:d}, expected {:d}", per_process_variables.back().get().getName().c_str(), per_process_variables.back().get().getNumberOfComponents(), DisplacementDim); @@ -76,7 +76,7 @@ std::unique_ptr<Process> createSmallDeformationNonlocalProcess( config, //! \ogs_file_param_special{prj__processes__process__SMALL_DEFORMATION_NONLOCAL__solid_density} "solid_density", parameters, 1, &mesh); - DBUG("Use '%s' as solid density parameter.", solid_density.name.c_str()); + DBUG("Use '{:s}' as solid density parameter.", solid_density.name.c_str()); // Specific body force Eigen::Matrix<double, DisplacementDim, 1> specific_body_force; @@ -89,8 +89,8 @@ std::unique_ptr<Process> createSmallDeformationNonlocalProcess( { OGS_FATAL( "The size of the specific body force vector does not match the " - "displacement dimension. Vector size is %d, displacement " - "dimension is %d", + "displacement dimension. Vector size is {:d}, displacement " + "dimension is {:d}", b.size(), DisplacementDim); } diff --git a/ProcessLib/SmallDeformationNonlocal/Damage.h b/ProcessLib/SmallDeformationNonlocal/Damage.h index e3b495d5e182c222373c0cfa4776a2cacefcc391..d1e08e32ea6eced6322b16748040d3087c8301f6 100644 --- a/ProcessLib/SmallDeformationNonlocal/Damage.h +++ b/ProcessLib/SmallDeformationNonlocal/Damage.h @@ -10,8 +10,9 @@ #pragma once +#include <spdlog/spdlog.h> + #include <Eigen/Eigenvalues> -#include <logog/include/logog.hpp> #include "MaterialLib/SolidModels/Ehlers.h" @@ -28,7 +29,7 @@ inline double calculateDamage(double const kappa_d, double const alpha_d, if (damage < 0. || damage >= 1.) { - OGS_FATAL("Damage value %g outside of [0,1) interval.", damage); + OGS_FATAL("Damage value {:g} outside of [0,1) interval.", damage); } return damage; diff --git a/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalFEM.h b/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalFEM.h index e68074db2d9c2d089da89df8f6b49ff116ac3bb2..18cf1aacdece4e81fdcbebc72e7a634a89676aa2 100644 --- a/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalFEM.h +++ b/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalFEM.h @@ -150,8 +150,8 @@ public: { OGS_FATAL( "Setting integration point initial conditions; The integration " - "order of the local assembler for element %d is different from " - "the integration order in the initial condition.", + "order of the local assembler for element {:d} is different " + "from the integration order in the initial condition.", _element.getID()); } @@ -177,7 +177,7 @@ public: { OGS_FATAL( "CellData for kappa_d initial conditions has wrong number " - "of components. 1 expected, got %d.", + "of components. 1 expected, got {:d}.", value.size()); } setKappaD(value[0]); diff --git a/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalProcess.cpp b/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalProcess.cpp index 800ec956fae7871cd0ea19f7fe031dfe5717965b..fe0ebec10689b4267adc5c6d3efc5f17d56b8ee8 100644 --- a/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalProcess.cpp +++ b/ProcessLib/SmallDeformationNonlocal/SmallDeformationNonlocalProcess.cpp @@ -167,8 +167,9 @@ void SmallDeformationNonlocalProcess<DisplacementDim>:: mesh_property.getNumberOfComponents()) { OGS_FATAL( - "Different number of components in meta data (%d) than in " - "the integration point field data for '%s': %d.", + "Different number of components in meta data ({:d}) than " + "in " + "the integration point field data for '{:s}': {:d}.", ip_meta_data.n_components, name.c_str(), mesh_property.getNumberOfComponents()); } @@ -327,7 +328,7 @@ SmallDeformationNonlocalProcess<DisplacementDim>::postIterationConcreteProcess( pv.getActiveElementIDs(), *_local_to_global_index_map, x, _process_data.crack_volume); - INFO("Integral of crack: %g", _process_data.crack_volume); + INFO("Integral of crack: {:g}", _process_data.crack_volume); return NumLib::IterationResult::SUCCESS; } diff --git a/ProcessLib/SourceTerms/CreateLineSourceTerm.cpp b/ProcessLib/SourceTerms/CreateLineSourceTerm.cpp index 7c35c39d8d887a42f3bcf61797c134321656cc01..e616b93b79ace99d82f87679c68a9c36f0c02ac4 100644 --- a/ProcessLib/SourceTerms/CreateLineSourceTerm.cpp +++ b/ProcessLib/SourceTerms/CreateLineSourceTerm.cpp @@ -38,7 +38,7 @@ std::unique_ptr<SourceTerm> createLineSourceTerm( auto& line_source_term = ParameterLib::findParameter<double>( line_source_term_parameter_name, parameters, 1, &source_term_mesh); - DBUG("Using '%s' as line source term parameter.", + DBUG("Using '{:s}' as line source term parameter.", line_source_term.name.c_str()); return std::make_unique<LineSourceTerm>( diff --git a/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp b/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp index 1ca28d9ffd5dfaec29089eac5a31c0ac2ff1ca11..8bcd02e2c6dd27d3822451abfa6a59ada6655200 100644 --- a/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp +++ b/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp @@ -10,7 +10,7 @@ #include "CreateNodalSourceTerm.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" #include "ParameterLib/Utils.h" @@ -32,7 +32,7 @@ std::unique_ptr<SourceTerm> createNodalSourceTerm( //! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__Nodal__parameter} auto const param_name = config.getConfigParameter<std::string>("parameter"); - DBUG("Using parameter %s as nodal source term.", param_name.c_str()); + DBUG("Using parameter {:s} as nodal source term.", param_name.c_str()); auto& param = ParameterLib::findParameter<double>(param_name, parameters, 1, &st_mesh); diff --git a/ProcessLib/SourceTerms/CreateSourceTerm.cpp b/ProcessLib/SourceTerms/CreateSourceTerm.cpp index 4dee77dd747d95b125b5feebde320ec1dbd88207..0f0b3c5f48a0be3ec680105a00dff588428f0a7f 100644 --- a/ProcessLib/SourceTerms/CreateSourceTerm.cpp +++ b/ProcessLib/SourceTerms/CreateSourceTerm.cpp @@ -38,8 +38,8 @@ std::unique_ptr<SourceTerm> createSourceTerm( dof_table_bulk.getNumberOfVariableComponents(variable_id)) { OGS_FATAL( - "Variable id or component id too high. Actual values: (%d, " - "%d), maximum values: (%d, %d).", + "Variable id or component id too high. Actual values: ({:d}, " + "{:d}), maximum values: ({:d}, {:d}).", variable_id, *config.component_id, dof_table_bulk.getNumberOfVariables(), dof_table_bulk.getNumberOfVariableComponents(variable_id)); @@ -50,14 +50,15 @@ std::unique_ptr<SourceTerm> createSourceTerm( { OGS_FATAL( "The required bulk node ids map does not exist in the " - "source term mesh '%s'.", + "source term mesh '{:s}'.", source_term_mesh.getName().c_str()); } std::vector<MeshLib::Node*> const& source_term_nodes = source_term_mesh.getNodes(); DBUG( - "Found %d nodes for source term at mesh '%s' for the variable %d and " - "component %d", + "Found {:d} nodes for source term at mesh '{:s}' for the variable {:d} " + "and " + "component {:d}", source_term_nodes.size(), source_term_mesh.getName().c_str(), variable_id, *config.component_id); @@ -120,7 +121,6 @@ std::unique_ptr<SourceTerm> createSourceTerm( #endif } - - OGS_FATAL("Unknown source term type: `%s'.", type.c_str()); + OGS_FATAL("Unknown source term type: `{:s}'.", type.c_str()); } } // namespace ProcessLib diff --git a/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.cpp b/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.cpp index aee2fc163d7e2169cae1cf5fff0e87907990f55d..127bf7c1ed40cea08516d5c7e9ad837aa2fc9d1a 100644 --- a/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.cpp +++ b/ProcessLib/SourceTerms/CreateVolumetricSourceTerm.cpp @@ -38,7 +38,7 @@ std::unique_ptr<SourceTerm> createVolumetricSourceTerm( volumetric_source_term_parameter_name, parameters, 1, &source_term_mesh); - DBUG("Using '%s' as volumetric source term parameter.", + DBUG("Using '{:s}' as volumetric source term parameter.", volumetric_source_term.name.c_str()); return std::make_unique<VolumetricSourceTerm>( diff --git a/ProcessLib/SourceTerms/Python/CMakeLists.txt b/ProcessLib/SourceTerms/Python/CMakeLists.txt index 0406ad087e4ef2451382a5eb08d39feb307d3ea0..90cfd48520beb028400af4e550eb41bb8cb8eee5 100644 --- a/ProcessLib/SourceTerms/Python/CMakeLists.txt +++ b/ProcessLib/SourceTerms/Python/CMakeLists.txt @@ -8,14 +8,10 @@ ogs_add_library(ProcessLibSourceTermPython target_compile_definitions(ProcessLibSourceTermPython PUBLIC OGS_USE_PYTHON) -target_link_libraries(ProcessLibSourceTermPython - PUBLIC BaseLib - MathLib - MeshLib - NumLib - logog - ${Python3_LIBRARIES} - PRIVATE pybind11::pybind11) +target_link_libraries( + ProcessLibSourceTermPython + PUBLIC BaseLib MathLib MeshLib NumLib ${Python3_LIBRARIES} + PRIVATE pybind11::pybind11 spdlog::spdlog) # For the embedded Python module ogs_add_library(ProcessLibSourceTermPythonModule PythonSourceTermModule.cpp diff --git a/ProcessLib/SourceTerms/Python/CreatePythonSourceTerm.cpp b/ProcessLib/SourceTerms/Python/CreatePythonSourceTerm.cpp index c09eef6e82344cc395063d4311335e3d1da9a7f0..c5dc819bac6d1279c0b474fe04bfab2b3c62fe71 100644 --- a/ProcessLib/SourceTerms/Python/CreatePythonSourceTerm.cpp +++ b/ProcessLib/SourceTerms/Python/CreatePythonSourceTerm.cpp @@ -44,7 +44,8 @@ std::unique_ptr<SourceTerm> createPythonSourceTerm( if (!scope.contains(source_term_object)) { OGS_FATAL( - "Function `%s' is not defined in the python script file, or there " + "Function `{:s}' is not defined in the python script file, or " + "there " "was no python script file specified.", source_term_object.c_str()); } diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp b/ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp index faaadf249d497bf9549d9a037ab205f3576f5b53..1d5127363841f80b922e2a66f5520766cef336a8 100644 --- a/ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp +++ b/ProcessLib/SourceTerms/Python/PythonSourceTerm.cpp @@ -34,7 +34,7 @@ public: return; } - LOGOG_COUT << std::flush; + std::cout << std::flush; } //! Optionally flushes Python's stdout after running Python code. diff --git a/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h b/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h index 1e5c7e3316cb32dc715e23abf14cd466932a3b63..afa1c555a3fb2651c9b1a3f5140a67dd214257bc 100644 --- a/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h +++ b/ProcessLib/SourceTerms/Python/PythonSourceTermLocalAssembler.h @@ -130,7 +130,8 @@ public: { // TODO extend Python BC to mixed FEM ansatz functions OGS_FATAL( - "No d.o.f. found for (node=%d, var=%d, comp=%d). " + "No d.o.f. found for (node={:d}, var={:d}, " + "comp={:d}). " "That might be due to the use of mixed FEM ansatz " "functions, which is currently not supported by " "the implementation of Python BCs. That excludes, " @@ -172,8 +173,8 @@ public: // assembly. OGS_FATAL( "The Python source term must return the derivative of " - "the flux w.r.t. each primary variable. %d components " - "expected. %d components returned from Python.", + "the flux w.r.t. each primary variable. {:d} components " + "expected. {:d} components returned from Python.", num_comp_total, dflux.size()); } diff --git a/ProcessLib/SurfaceFlux/SurfaceFluxData.h b/ProcessLib/SurfaceFlux/SurfaceFluxData.h index c576b94ec9120b0ef28e8f0d8cb32103824c93da..d103e7a7e0eda75d56ebd251b6214d1414333079 100644 --- a/ProcessLib/SurfaceFlux/SurfaceFluxData.h +++ b/ProcessLib/SurfaceFlux/SurfaceFluxData.h @@ -10,11 +10,11 @@ #pragma once -#include <logog/include/logog.hpp> - #include <memory> #include <string> +#include "BaseLib/FileTools.h" +#include "BaseLib/Logging.h" #include "MeshLib/IO/readMeshFromFile.h" // TODO used for output, if output classes are ready this has to be changed #include "MeshLib/IO/writeMeshToFile.h" @@ -42,8 +42,9 @@ struct SurfaceFluxData output_mesh_file_name(std::move(surfaceflux_output_mesh_file_name)) { DBUG( - "read surfaceflux meta data:\n\tsurfaceflux mesh:'%s'\n\tproperty " - "name: '%s'\n\toutput to: '%s'", + "read surfaceflux meta data:\n\tsurfaceflux " + "mesh:'{:s}'\n\tproperty " + "name: '{:s}'\n\toutput to: '{:s}'", mesh_name.c_str(), property_vector_name.c_str(), output_mesh_file_name.c_str()); } diff --git a/ProcessLib/TES/TESLocalAssemblerInner-impl.h b/ProcessLib/TES/TESLocalAssemblerInner-impl.h index 879c16d4077edfd66d0eba0c8b7af493b809637e..57e09e391faaa030f85718a05d93921282764e24 100644 --- a/ProcessLib/TES/TESLocalAssemblerInner-impl.h +++ b/ProcessLib/TES/TESLocalAssemblerInner-impl.h @@ -13,7 +13,7 @@ #pragma once -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/Function/Interpolation.h" diff --git a/ProcessLib/TES/TESProcess.cpp b/ProcessLib/TES/TESProcess.cpp index b1537e7e9757923dc5362d98ef31ac0be74dc553..191f8593bd9e2085ad2ff52bd736948198c99e6b 100644 --- a/ProcessLib/TES/TESProcess.cpp +++ b/ProcessLib/TES/TESProcess.cpp @@ -65,8 +65,8 @@ TESProcess::TESProcess( //! \ogs_file_special config.getConfigParameterOptional<double>(p.first)) { - DBUG("setting parameter `%s' to value `%g'", p.first.c_str(), - *par); + DBUG("setting parameter `{:s}' to value `{:g}'", + p.first.c_str(), *par); *p.second = *par; } } @@ -88,8 +88,8 @@ TESProcess::TESProcess( //! \ogs_file_special config.getConfigParameterOptional<double>(p.first)) { - INFO("setting parameter `%s' to value `%g'", p.first.c_str(), - *par); + INFO("setting parameter `{:s}' to value `{:g}'", + p.first.c_str(), *par); *p.second = Trafo{*par}; } } @@ -102,7 +102,7 @@ TESProcess::TESProcess( { DBUG( "setting parameter `solid_hydraulic_permeability' to isotropic " - "value `%g'", + "value `{:g}'", *par); const auto dim = mesh.getDimension(); _assembly_params.solid_perm_tensor = @@ -119,7 +119,7 @@ TESProcess::TESProcess( //! \ogs_file_param{prj__processes__process__TES__output_element_matrices} config.getConfigParameterOptional<bool>("output_element_matrices")) { - DBUG("output_element_matrices: %s", (*param) ? "true" : "false"); + DBUG("output_element_matrices: {:s}", (*param) ? "true" : "false"); _assembly_params.output_element_matrices = *param; } @@ -130,7 +130,7 @@ TESProcess::TESProcess( //! \ogs_file_param{prj__processes__process__TES__output_global_matrix} config.getConfigParameterOptional<bool>("output_global_matrix")) { - DBUG("output_global_matrix: %s", (*param) ? "true" : "false"); + DBUG("output_global_matrix: {:s}", (*param) ? "true" : "false"); this->_process_output.output_global_matrix = *param; } @@ -307,7 +307,7 @@ NumLib::IterationResult TESProcess::postIterationConcreteProcess( } // TODO remove - DBUG("ts %lu iteration %lu (in current ts: %lu) try %u accepted", + DBUG("ts {:d} iteration {:d} (in current ts: {:d}) try {:d} accepted", _assembly_params.timestep, _assembly_params.total_iteration, _assembly_params.iteration_in_current_timestep, _assembly_params.number_of_try_of_iteration); diff --git a/ProcessLib/TES/TESReactionAdaptor.cpp b/ProcessLib/TES/TESReactionAdaptor.cpp index bec12f56709835c7e6d860a0f7a9f33c0d8a0a18..94c3ac4651aacee33948e63e5a226cde9429cd1f 100644 --- a/ProcessLib/TES/TESReactionAdaptor.cpp +++ b/ProcessLib/TES/TESReactionAdaptor.cpp @@ -10,7 +10,7 @@ #include <cassert> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MathLib/Nonlinear/Root1D.h" #include "MathLib/ODE/ODESolverBuilder.h" diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPMaterialProperties.cpp b/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPMaterialProperties.cpp index 124fceffeea375b2b70254470534e2d93109c043..1b3cc617c3eaaac5a114bb1b2edc2f7d26201480 100644 --- a/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPMaterialProperties.cpp +++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPMaterialProperties.cpp @@ -10,8 +10,8 @@ #include "CreateThermalTwoPhaseFlowWithPPMaterialProperties.h" -#include <logog/include/logog.hpp> #include <tuple> +#include "BaseLib/Logging.h" #include "MaterialLib/Fluid/FluidProperty.h" #include "MaterialLib/Fluid/SpecificHeatCapacity/CreateSpecificFluidHeatCapacityModel.h" diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPProcess.cpp b/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPProcess.cpp index 5cb158103f65c469c3db49ef4c0a0cbdd90808be..8dc554241a71365df7cefef9ac2016bb84d316d0 100644 --- a/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPProcess.cpp +++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/CreateThermalTwoPhaseFlowWithPPProcess.cpp @@ -89,14 +89,14 @@ std::unique_ptr<Process> createThermalTwoPhaseFlowWithPPProcess( config, //! \ogs_file_param_special{prj__processes__process__TWOPHASE_FLOW_THERMAL__density_solid} "density_solid", parameters, 1, &mesh); - DBUG("Use '%s' as density_solid parameter.", density_solid.name.c_str()); + DBUG("Use '{:s}' as density_solid parameter.", density_solid.name.c_str()); // Parameter for the latent heat of evaporation. auto& latent_heat_evaporation = ParameterLib::findParameter<double>( config, //! \ogs_file_param_special{prj__processes__process__TWOPHASE_FLOW_THERMAL__latent_heat_evaporation} "latent_heat_evaporation", parameters, 1, &mesh); - DBUG("Use '%s' as latent_heat_evaporation parameter.", + DBUG("Use '{:s}' as latent_heat_evaporation parameter.", latent_heat_evaporation.name.c_str()); //! \ogs_file_param{prj__processes__process__TWOPHASE_FLOW_THERMAL__material_property} diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPMaterialProperties.cpp b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPMaterialProperties.cpp index 7b734822a3d86abf020c899a661eca4c163f4220..dd1596465a9a8a420b73dc71c567a562f92e984d 100644 --- a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPMaterialProperties.cpp +++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPMaterialProperties.cpp @@ -10,7 +10,7 @@ #include "ThermalTwoPhaseFlowWithPPMaterialProperties.h" -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MaterialLib/Fluid/FluidProperty.h" #include "MaterialLib/PorousMedium/Porosity/Porosity.h" diff --git a/ProcessLib/ThermoHydroMechanics/CreateLocalAssemblers.h b/ProcessLib/ThermoHydroMechanics/CreateLocalAssemblers.h index 891708b2e738a0d4230782bab658290b56774de4..a4e349a62267121f06e94aa633748015fbb99f7b 100644 --- a/ProcessLib/ThermoHydroMechanics/CreateLocalAssemblers.h +++ b/ProcessLib/ThermoHydroMechanics/CreateLocalAssemblers.h @@ -9,13 +9,12 @@ #pragma once -#include <vector> - -#include <logog/include/logog.hpp> +#include <spdlog/spdlog.h> -#include "NumLib/DOF/LocalToGlobalIndexMap.h" +#include <vector> #include "LocalDataInitializer.h" +#include "NumLib/DOF/LocalToGlobalIndexMap.h" namespace ProcessLib { diff --git a/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.cpp b/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.cpp index a0d7118f78d1829574eb170650a125c1e22bca10..e6ff892c8f08ea122a4b7f14405c6c7c19f7a0d0 100644 --- a/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.cpp +++ b/ProcessLib/ThermoHydroMechanics/CreateThermoHydroMechanicsProcess.cpp @@ -89,37 +89,37 @@ std::unique_ptr<Process> createThermoHydroMechanicsProcess( variable_u = &process_variables[2][0].get(); } - DBUG("Associate displacement with process variable '%s'.", + DBUG("Associate displacement with process variable '{:s}'.", variable_u->getName().c_str()); if (variable_u->getNumberOfComponents() != DisplacementDim) { OGS_FATAL( - "Number of components of the process variable '%s' is different " - "from the displacement dimension: got %d, expected %d", + "Number of components of the process variable '{:s}' is different " + "from the displacement dimension: got {:d}, expected {:d}", variable_u->getName().c_str(), variable_u->getNumberOfComponents(), DisplacementDim); } - DBUG("Associate pressure with process variable '%s'.", + DBUG("Associate pressure with process variable '{:s}'.", variable_p->getName().c_str()); if (variable_p->getNumberOfComponents() != 1) { OGS_FATAL( - "Pressure process variable '%s' is not a scalar variable but has " - "%d components.", + "Pressure process variable '{:s}' is not a scalar variable but has " + "{:d} components.", variable_p->getName().c_str(), variable_p->getNumberOfComponents()); } - DBUG("Associate temperature with process variable '%s'.", + DBUG("Associate temperature with process variable '{:s}'.", variable_T->getName().c_str()); if (variable_T->getNumberOfComponents() != 1) { OGS_FATAL( - "temperature process variable '%s' is not a scalar variable but " - "has %d components.", + "temperature process variable '{:s}' is not a scalar variable but " + "has {:d} components.", variable_T->getName().c_str(), variable_T->getNumberOfComponents()); } @@ -133,7 +133,7 @@ std::unique_ptr<Process> createThermoHydroMechanicsProcess( config, //! \ogs_file_param_special{prj__processes__process__THERMO_HYDRO_MECHANICS__reference_temperature} "reference_temperature", parameters, 1, &mesh); - DBUG("Use '%s' as reference temperature parameter.", + DBUG("Use '{:s}' as reference temperature parameter.", reference_temperature.name.c_str()); // Specific body force @@ -147,8 +147,8 @@ std::unique_ptr<Process> createThermoHydroMechanicsProcess( { OGS_FATAL( "The size of the specific body force vector does not match the " - "displacement dimension. Vector size is %d, displacement " - "dimension is %d", + "displacement dimension. Vector size is {:d}, displacement " + "dimension is {:d}", b.size(), DisplacementDim); } diff --git a/ProcessLib/ThermoHydroMechanics/LocalDataInitializer.h b/ProcessLib/ThermoHydroMechanics/LocalDataInitializer.h index 531230d06c640095c28971e9a2583ddc997be493..856c30309960d807721ad82189d9a443a43040c0 100644 --- a/ProcessLib/ThermoHydroMechanics/LocalDataInitializer.h +++ b/ProcessLib/ThermoHydroMechanics/LocalDataInitializer.h @@ -128,7 +128,7 @@ public: : _dof_table(dof_table) { if (shapefunction_order < 1 || 2 < shapefunction_order) - OGS_FATAL("The given shape function order %d is not supported", + OGS_FATAL("The given shape function order {:d} is not supported", shapefunction_order); if (shapefunction_order == 1) @@ -288,7 +288,7 @@ public: { OGS_FATAL( "You are trying to build a local assembler for an unknown mesh " - "element type (%s)." + "element type ({:s})." " Maybe you have disabled this mesh element type in your build " "configuration.", type_idx.name()); diff --git a/ProcessLib/ThermoMechanicalPhaseField/CreateThermoMechanicalPhaseFieldProcess.cpp b/ProcessLib/ThermoMechanicalPhaseField/CreateThermoMechanicalPhaseFieldProcess.cpp index fff64ddbad753b43ed1dff3c181604ecd7575a52..ecde722f9678187fb73a90ae82b85acdda5871d1 100644 --- a/ProcessLib/ThermoMechanicalPhaseField/CreateThermoMechanicalPhaseFieldProcess.cpp +++ b/ProcessLib/ThermoMechanicalPhaseField/CreateThermoMechanicalPhaseFieldProcess.cpp @@ -78,38 +78,39 @@ std::unique_ptr<Process> createThermoMechanicalPhaseFieldProcess( ProcessVariable* variable_ph = &process_variables[process_variables.size() - 1][0].get(); - DBUG("Associate displacement with process variable '%s'.", + DBUG("Associate displacement with process variable '{:s}'.", variable_u->getName().c_str()); if (variable_u->getNumberOfComponents() != DisplacementDim) { OGS_FATAL( - "Number of components of the process variable '%s' is different " - "from the displacement dimension: got %d, expected %d", + "Number of components of the process variable '{:s}' is different " + "from the displacement dimension: got {:d}, expected {:d}", variable_u->getName().c_str(), variable_u->getNumberOfComponents(), DisplacementDim); } - DBUG("Associate phase field with process variable '%s'.", + DBUG("Associate phase field with process variable '{:s}'.", variable_ph->getName().c_str()); if (variable_ph->getNumberOfComponents() != 1) { OGS_FATAL( - "Phasefield process variable '%s' is not a scalar variable but has " - "%d components.", + "Phasefield process variable '{:s}' is not a scalar variable but " + "has " + "{:d} components.", variable_ph->getName().c_str(), variable_ph->getNumberOfComponents()); } - DBUG("Associate temperature with process variable '%s'.", + DBUG("Associate temperature with process variable '{:s}'.", variable_T->getName().c_str()); if (variable_T->getNumberOfComponents() != 1) { OGS_FATAL( - "Temperature process variable '%s' is not a scalar variable but " + "Temperature process variable '{:s}' is not a scalar variable but " "has " - "%d components.", + "{:d} components.", variable_T->getName().c_str(), variable_T->getNumberOfComponents()); } @@ -131,35 +132,36 @@ std::unique_ptr<Process> createThermoMechanicalPhaseFieldProcess( phasefield_parameters_config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICAL_PHASE_FIELD__phasefield_parameters__residual_stiffness} "residual_stiffness", parameters, 1, &mesh); - DBUG("Use '%s' as residual stiffness.", residual_stiffness.name.c_str()); + DBUG("Use '{:s}' as residual stiffness.", residual_stiffness.name.c_str()); // Crack resistance auto& crack_resistance = ParameterLib::findParameter<double>( phasefield_parameters_config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICAL_PHASE_FIELD__phasefield_parameters__crack_resistance} "crack_resistance", parameters, 1, &mesh); - DBUG("Use '%s' as crack resistance.", crack_resistance.name.c_str()); + DBUG("Use '{:s}' as crack resistance.", crack_resistance.name.c_str()); // Crack length scale auto& crack_length_scale = ParameterLib::findParameter<double>( phasefield_parameters_config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICAL_PHASE_FIELD__phasefield_parameters__crack_length_scale} "crack_length_scale", parameters, 1, &mesh); - DBUG("Use '%s' as crack length scale.", crack_length_scale.name.c_str()); + DBUG("Use '{:s}' as crack length scale.", crack_length_scale.name.c_str()); // Kinetic coefficient auto& kinetic_coefficient = ParameterLib::findParameter<double>( phasefield_parameters_config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICAL_PHASE_FIELD__phasefield_parameters__kinetic_coefficient} "kinetic_coefficient", parameters, 1, &mesh); - DBUG("Use '%s' as kinetic coefficient.", kinetic_coefficient.name.c_str()); + DBUG("Use '{:s}' as kinetic coefficient.", + kinetic_coefficient.name.c_str()); // Solid density auto& solid_density = ParameterLib::findParameter<double>( config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICAL_PHASE_FIELD__reference_solid_density} "solid_density", parameters, 1, &mesh); - DBUG("Use '%s' as solid density parameter.", solid_density.name.c_str()); + DBUG("Use '{:s}' as solid density parameter.", solid_density.name.c_str()); // Linear thermal expansion coefficient auto& linear_thermal_expansion_coefficient = ParameterLib::findParameter< @@ -167,7 +169,7 @@ std::unique_ptr<Process> createThermoMechanicalPhaseFieldProcess( thermal_parameters_config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICAL_PHASE_FIELD__thermal_parameters__linear_thermal_expansion_coefficient} "linear_thermal_expansion_coefficient", parameters, 1, &mesh); - DBUG("Use '%s' as linear thermal expansion coefficient.", + DBUG("Use '{:s}' as linear thermal expansion coefficient.", linear_thermal_expansion_coefficient.name.c_str()); // Specific heat capacity @@ -175,7 +177,7 @@ std::unique_ptr<Process> createThermoMechanicalPhaseFieldProcess( thermal_parameters_config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICAL_PHASE_FIELD__thermal_parameters__specific_heat_capacity} "specific_heat_capacity", parameters, 1, &mesh); - DBUG("Use '%s' as specific heat capacity.", + DBUG("Use '{:s}' as specific heat capacity.", specific_heat_capacity.name.c_str()); // Thermal conductivity @@ -183,14 +185,14 @@ std::unique_ptr<Process> createThermoMechanicalPhaseFieldProcess( thermal_parameters_config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICAL_PHASE_FIELD__thermal_parameters__thermal_conductivity} "thermal_conductivity", parameters, 1, &mesh); - DBUG("Use '%s' as thermal conductivity parameter.", + DBUG("Use '{:s}' as thermal conductivity parameter.", thermal_conductivity.name.c_str()); // Residual thermal conductivity auto& residual_thermal_conductivity = ParameterLib::findParameter<double>( thermal_parameters_config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICAL_PHASE_FIELD__thermal_parameters__residual_thermal_conductivity} "residual_thermal_conductivity", parameters, 1, &mesh); - DBUG("Use '%s' as residual thermal conductivity parameter.", + DBUG("Use '{:s}' as residual thermal conductivity parameter.", residual_thermal_conductivity.name.c_str()); // Reference temperature const auto reference_temperature = @@ -208,8 +210,8 @@ std::unique_ptr<Process> createThermoMechanicalPhaseFieldProcess( { OGS_FATAL( "The size of the specific body force vector does not match the " - "displacement dimension. Vector size is %d, displacement " - "dimension is %d", + "displacement dimension. Vector size is {:d}, displacement " + "dimension is {:d}", specific_body_force.size(), DisplacementDim); } diff --git a/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp b/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp index 58ff41e47621c331ca382ae1b3641c0181d63afc..d870ca24a02b977e4f4d40f5f19060a086735f0d 100644 --- a/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp +++ b/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp @@ -88,26 +88,26 @@ std::unique_ptr<Process> createThermoMechanicsProcess( mechanics_process_id = 1; } - DBUG("Associate displacement with process variable '%s'.", + DBUG("Associate displacement with process variable '{:s}'.", variable_u->getName().c_str()); if (variable_u->getNumberOfComponents() != DisplacementDim) { OGS_FATAL( - "Number of components of the process variable '%s' is different " - "from the displacement dimension: got %d, expected %d", + "Number of components of the process variable '{:s}' is different " + "from the displacement dimension: got {:d}, expected {:d}", variable_u->getName().c_str(), variable_u->getNumberOfComponents(), DisplacementDim); } - DBUG("Associate temperature with process variable '%s'.", + DBUG("Associate temperature with process variable '{:s}'.", variable_T->getName().c_str()); if (variable_T->getNumberOfComponents() != 1) { OGS_FATAL( - "Pressure process variable '%s' is not a scalar variable but has " - "%d components.", + "Pressure process variable '{:s}' is not a scalar variable but has " + "{:d} components.", variable_T->getName().c_str(), variable_T->getNumberOfComponents()); } @@ -123,7 +123,7 @@ std::unique_ptr<Process> createThermoMechanicsProcess( config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__reference_solid_density} "reference_solid_density", parameters, 1, &mesh); - DBUG("Use '%s' as solid density parameter.", + DBUG("Use '{:s}' as solid density parameter.", reference_solid_density.name.c_str()); // Linear thermal expansion coefficient @@ -132,21 +132,21 @@ std::unique_ptr<Process> createThermoMechanicsProcess( config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__linear_thermal_expansion_coefficient} "linear_thermal_expansion_coefficient", parameters, 1, &mesh); - DBUG("Use '%s' as linear thermal expansion coefficient.", + DBUG("Use '{:s}' as linear thermal expansion coefficient.", linear_thermal_expansion_coefficient.name.c_str()); // Specific heat capacity auto& specific_heat_capacity = ParameterLib::findParameter<double>( config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__specific_heat_capacity} "specific_heat_capacity", parameters, 1, &mesh); - DBUG("Use '%s' as specific heat capacity parameter.", + DBUG("Use '{:s}' as specific heat capacity parameter.", specific_heat_capacity.name.c_str()); // Thermal conductivity // TODO To be changed as tensor input. auto& thermal_conductivity = ParameterLib::findParameter<double>( config, //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__thermal_conductivity} "thermal_conductivity", parameters, 1, &mesh); - DBUG("Use '%s' as thermal conductivity parameter.", + DBUG("Use '{:s}' as thermal conductivity parameter.", thermal_conductivity.name.c_str()); // Specific body force @@ -160,8 +160,8 @@ std::unique_ptr<Process> createThermoMechanicsProcess( { OGS_FATAL( "The size of the specific body force vector does not match the " - "displacement dimension. Vector size is %d, displacement " - "dimension is %d", + "displacement dimension. Vector size is {:d}, displacement " + "dimension is {:d}", b.size(), DisplacementDim); } diff --git a/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h b/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h index 151519d8522ac8477629325eec94fdfcccdd6b9a..3f0da00f734a5b075fb061c6f6c4e3d2aa895f92 100644 --- a/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h +++ b/ProcessLib/ThermoMechanics/ThermoMechanicsFEM-impl.h @@ -93,7 +93,7 @@ std::size_t ThermoMechanicsLocalAssembler< { OGS_FATAL( "Setting integration point initial conditions; The integration " - "order of the local assembler for element %d is different from " + "order of the local assembler for element {:d} is different from " "the integration order in the initial condition.", _element.getID()); } diff --git a/ProcessLib/ThermoMechanics/ThermoMechanicsProcess.cpp b/ProcessLib/ThermoMechanics/ThermoMechanicsProcess.cpp index aff022094cccb27c6bfb0acab3a403e5182d4926..ec56734caed55a2b9ba9fe15376bbea237cf1ed3 100644 --- a/ProcessLib/ThermoMechanics/ThermoMechanicsProcess.cpp +++ b/ProcessLib/ThermoMechanics/ThermoMechanicsProcess.cpp @@ -230,8 +230,8 @@ void ThermoMechanicsProcess<DisplacementDim>::initializeConcreteProcess( if (ip_meta_data.n_components != mesh_property.getNumberOfComponents()) { OGS_FATAL( - "Different number of components in meta data (%d) than in " - "the integration point field data for '%s': %d.", + "Different number of components in meta data ({:d}) than in " + "the integration point field data for '{:s}': {:d}.", ip_meta_data.n_components, name.c_str(), mesh_property.getNumberOfComponents()); } diff --git a/ProcessLib/TimeLoop.cpp b/ProcessLib/TimeLoop.cpp index e14acebcb78a0bce09e4c6886e856f5862ff1ede..2c58ce687992957dadee27d2a21d51e8c3c4704f 100644 --- a/ProcessLib/TimeLoop.cpp +++ b/ProcessLib/TimeLoop.cpp @@ -366,7 +366,7 @@ double TimeLoop::computeTimeStepping(const double prev_dt, double& t, std::numeric_limits<double>::epsilon()) { WARN( - "Time step %d was rejected %d times " + "Time step {:d} was rejected {:d} times " "and it will be repeated with a reduced step size.", accepted_steps + 1, _repeating_times_of_rejected_step); time_disc->popState(x); @@ -405,7 +405,7 @@ double TimeLoop::computeTimeStepping(const double prev_dt, double& t, if (_last_step_rejected) { OGS_FATAL( - "The new step size of %g is the same as that of the previous " + "The new step size of {:g} is the same as that of the previous " "rejected time step. \nPlease re-run ogs with a proper " "adjustment in the numerical settings, \ne.g those for " "time stepper, local or global non-linear solver.", @@ -413,7 +413,7 @@ double TimeLoop::computeTimeStepping(const double prev_dt, double& t, } else { - DBUG("The time stepping is stabilized with the step size of %g.", + DBUG("The time stepping is stabilized with the step size of {:g}.", dt); } } @@ -455,7 +455,7 @@ void TimeLoop::initialize() BaseLib::RunTime time_phreeqc; time_phreeqc.start(); _chemical_system->executeInitialCalculation(_process_solutions); - INFO("[time] Phreeqc took %g s.", time_phreeqc.elapsed()); + INFO("[time] Phreeqc took {:g} s.", time_phreeqc.elapsed()); } // All _per_process_data share the first process. @@ -508,8 +508,9 @@ bool TimeLoop::loop() const std::size_t timesteps = accepted_steps + 1; // TODO(wenqing): , input option for time unit. - INFO("=== Time stepping at step #%u and time %g with step size %g", - timesteps, t, dt); + INFO( + "=== Time stepping at step #{:d} and time {:g} with step size {:g}", + timesteps, t, dt); // Check element deactivation: for (auto& process_data : _per_process_data) @@ -536,7 +537,7 @@ bool TimeLoop::loop() solveUncoupledEquationSystems(t, dt, timesteps); } - INFO("[time] Time step #%u took %g s.", timesteps, + INFO("[time] Time step #{:d} took {:g} s.", timesteps, time_timestep.elapsed()); dt = computeTimeStepping(prev_dt, t, accepted_steps, rejected_steps); @@ -557,16 +558,16 @@ bool TimeLoop::loop() if (dt < std::numeric_limits<double>::epsilon()) { WARN( - "Time step size of %g is too small.\n" - "Time stepping stops at step %u and at time of %g.", + "Time step size of {:g} is too small.\n" + "Time stepping stops at step {:d} and at time of {:g}.", dt, timesteps, t); break; } } INFO( - "The whole computation of the time stepping took %u steps, in which\n" - "\t the accepted steps are %u, and the rejected steps are %u.\n", + "The whole computation of the time stepping took {:d} steps, in which\n" + "\t the accepted steps are {:d}, and the rejected steps are {:d}.\n", accepted_steps + rejected_steps, accepted_steps, rejected_steps); // output last time step @@ -605,7 +606,7 @@ static NumLib::NonlinearSolverStatus solveMonolithicProcess( auto const nonlinear_solver_status = solveOneTimeStepOneProcess(x, timestep_id, t, dt, process_data, output); - INFO("[time] Solving process #%u took %g s in time step #%u ", + INFO("[time] Solving process #{:d} took {:g} s in time step #{:d} ", process_data.process_id, time_timestep_process.elapsed(), timestep_id); return nonlinear_solver_status; @@ -655,8 +656,9 @@ NumLib::NonlinearSolverStatus TimeLoop::solveUncoupledEquationSystems( process_data->nonlinear_solver_status = nonlinear_solver_status; if (!nonlinear_solver_status.error_norms_met) { - ERR("The nonlinear solver failed in time step #%u at t = %g s for " - "process #%u.", + ERR("The nonlinear solver failed in time step #{:d} at t = {:g} s " + "for " + "process #{:d}.", timestep_id, t, process_id); if (!process_data->timestepper->canReduceTimestepSize()) @@ -725,15 +727,16 @@ TimeLoop::solveCoupledEquationSystemsByStaggeredScheme( process_data->nonlinear_solver_status = nonlinear_solver_status; INFO( - "[time] Solving process #%u took %g s in time step #%u " - " coupling iteration #%u", + "[time] Solving process #{:d} took {:g} s in time step #{:d} " + " coupling iteration #{:d}", process_id, time_timestep_process.elapsed(), timestep_id, global_coupling_iteration); if (!nonlinear_solver_status.error_norms_met) { - ERR("The nonlinear solver failed in time step #%u at t = %g s " - "for process #%u.", + ERR("The nonlinear solver failed in time step #{:d} at t = " + "{:g} s " + "for process #{:d}.", timestep_id, t, process_id); if (!process_data->timestepper->canReduceTimestepSize()) @@ -782,7 +785,7 @@ TimeLoop::solveCoupledEquationSystemsByStaggeredScheme( { WARN( "The coupling iterations reaches its maximum number in time step" - "#%u at t = %g s", + "#{:d} at t = {:g} s", timestep_id, t); } @@ -796,7 +799,7 @@ TimeLoop::solveCoupledEquationSystemsByStaggeredScheme( BaseLib::RunTime time_phreeqc; time_phreeqc.start(); _chemical_system->doWaterChemistryCalculation(_process_solutions, dt); - INFO("[time] Phreeqc took %g s.", time_phreeqc.elapsed()); + INFO("[time] Phreeqc took {:g} s.", time_phreeqc.elapsed()); } postTimestepForAllProcesses(t, dt, _per_process_data, _process_solutions); diff --git a/ProcessLib/TimeLoop.h b/ProcessLib/TimeLoop.h index 0fb6c5527b36fe8439802ec8c98f9827636df776..792a7507abd8e57257312bb765103ff6965d6dc3 100644 --- a/ProcessLib/TimeLoop.h +++ b/ProcessLib/TimeLoop.h @@ -13,7 +13,7 @@ #include <functional> #include <memory> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/ODESolver/NonlinearSolver.h" #include "NumLib/TimeStepping/Algorithms/TimeStepAlgorithm.h" diff --git a/ProcessLib/TwoPhaseFlowWithPrho/CreateTwoPhaseFlowPrhoMaterialProperties.cpp b/ProcessLib/TwoPhaseFlowWithPrho/CreateTwoPhaseFlowPrhoMaterialProperties.cpp index dc4f150508803b1e91d9b405f42c80f95bb734b8..f11fce34fb70ce3d8742ee2f16a1a40b900ae5c9 100644 --- a/ProcessLib/TwoPhaseFlowWithPrho/CreateTwoPhaseFlowPrhoMaterialProperties.cpp +++ b/ProcessLib/TwoPhaseFlowWithPrho/CreateTwoPhaseFlowPrhoMaterialProperties.cpp @@ -9,8 +9,8 @@ */ #include "CreateTwoPhaseFlowPrhoMaterialProperties.h" -#include <logog/include/logog.hpp> #include "BaseLib/Algorithm.h" +#include "BaseLib/Logging.h" #include "MaterialLib/Fluid/FluidProperty.h" #include "MaterialLib/PorousMedium/Porosity/Porosity.h" #include "MaterialLib/PorousMedium/Storage/Storage.h" diff --git a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.cpp b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.cpp index 2a4ae2113db9c31b75afc50983e9b43e8918f2fa..98ef4430bddb669c1f85f67bdee3ee89d6f51413 100644 --- a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.cpp +++ b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoMaterialProperties.cpp @@ -9,8 +9,8 @@ */ #include "TwoPhaseFlowWithPrhoMaterialProperties.h" -#include <logog/include/logog.hpp> #include <utility> +#include "BaseLib/Logging.h" #include "MaterialLib/Fluid/FluidProperty.h" #include "MaterialLib/PorousMedium/Porosity/Porosity.h" #include "MaterialLib/PorousMedium/Storage/Storage.h" diff --git a/ProcessLib/Utils/CreateLocalAssemblers.h b/ProcessLib/Utils/CreateLocalAssemblers.h index fad22797bec6f3e89c7851b73142f1f9b358de39..df4798282cb3fdd7b483a9b64230e6515170fc18 100644 --- a/ProcessLib/Utils/CreateLocalAssemblers.h +++ b/ProcessLib/Utils/CreateLocalAssemblers.h @@ -11,7 +11,7 @@ #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" diff --git a/ProcessLib/Utils/LocalDataInitializer.h b/ProcessLib/Utils/LocalDataInitializer.h index 8b227fcbf1a7e72a21d9c9a0a0042fd459ff06fc..570d82965d1f95c9bab789a1c4b445da87e43e21 100644 --- a/ProcessLib/Utils/LocalDataInitializer.h +++ b/ProcessLib/Utils/LocalDataInitializer.h @@ -132,7 +132,7 @@ public: : _dof_table(dof_table) { if (shapefunction_order < 1 || 2 < shapefunction_order) - OGS_FATAL("The given shape function order %d is not supported", + OGS_FATAL("The given shape function order {:d} is not supported", shapefunction_order); if (shapefunction_order == 1) @@ -325,7 +325,7 @@ public: { OGS_FATAL( "You are trying to build a local assembler for an unknown mesh " - "element type (%s)." + "element type ({:s})." " Maybe you have disabled this mesh element type in your build " "configuration.", type_idx.name()); diff --git a/ProcessLib/Utils/ProcessUtils.cpp b/ProcessLib/Utils/ProcessUtils.cpp index 232a7a183b2fb074c9c3eb65ba2eb917c2f9375b..86a3d2009ceee45bcc50c11daf085361f9744d93 100644 --- a/ProcessLib/Utils/ProcessUtils.cpp +++ b/ProcessLib/Utils/ProcessUtils.cpp @@ -28,12 +28,12 @@ ProcessLib::ProcessVariable& findVariableByName( if (variable == variables.end()) { OGS_FATAL( - "There is no entry of the defined process variable '%s' in the " + "There is no entry of the defined process variable '{:s}' in the " "provided variables list (see tag <process_variables>). A " - "definition is required for config tag <%s>.", + "definition is required for config tag <{:s}>.", name.c_str(), tag.c_str()); } - DBUG("Found process variable '%s' for config tag <%s>.", + DBUG("Found process variable '{:s}' for config tag <{:s}>.", variable->getName().c_str(), tag.c_str()); // Const cast is needed because of variables argument constness. @@ -86,7 +86,7 @@ std::vector<std::reference_wrapper<ProcessVariable>> findProcessVariables( if (var_names.empty()) { - OGS_FATAL("No entity is found with config tag <%s>.", tag.c_str()); + OGS_FATAL("No entity is found with config tag <{:s}>.", tag.c_str()); } std::vector<std::string> cached_var_names; @@ -102,7 +102,7 @@ std::vector<std::reference_wrapper<ProcessVariable>> findProcessVariables( if (cached_var_names.size() != var_names.size()) { - OGS_FATAL("Found duplicates with config tag <%s>.", tag.c_str()); + OGS_FATAL("Found duplicates with config tag <{:s}>.", tag.c_str()); } return vars; diff --git a/Tests/BaseLib/TestConfigTree.cpp b/Tests/BaseLib/TestConfigTree.cpp index ab71ca1f7b74d20f3ea33fd203840a1601dbe9ee..4d5dbc15811af292a86f93bc422b35425ff344ba 100644 --- a/Tests/BaseLib/TestConfigTree.cpp +++ b/Tests/BaseLib/TestConfigTree.cpp @@ -8,7 +8,7 @@ */ #include <gtest/gtest.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <boost/property_tree/xml_parser.hpp> #include <numeric> @@ -44,7 +44,7 @@ public: // move construction/assignment EXPECT_EQ("FILENAME", filename); - DBUG("error <%s> : %s", path.c_str(), message.c_str()); + DBUG("error <{:s}> : {:s}", path.c_str(), message.c_str()); _error = true; throw Exc(); // throw in order to stop normal execution }; @@ -62,7 +62,7 @@ public: // move construction/assignment EXPECT_EQ("FILENAME", filename); - DBUG("warning <%s> : %s", path.c_str(), message.c_str()); + DBUG("warning <{:s}> : {:s}", path.c_str(), message.c_str()); _warning = true; }; } diff --git a/Tests/FileIO/TestBoostGmlInterface.cpp b/Tests/FileIO/TestBoostGmlInterface.cpp index acdeca0fd1ef298c32ba3a9d1b62a1d917749279..3b8ea261eeec941a3f4ee0fa85cd5dad1033657d 100644 --- a/Tests/FileIO/TestBoostGmlInterface.cpp +++ b/Tests/FileIO/TestBoostGmlInterface.cpp @@ -14,14 +14,13 @@ #include <cstdio> -#include "gtest/gtest.h" - +#include "BaseLib/StringTools.h" +#include "GeoLib/GEOObjects.h" +#include "GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.h" +#include "InfoLib/TestInfo.h" #include "Tests/FileIO/TestGmlInterface.h" - #include "filesystem.h" -#include "InfoLib/TestInfo.h" -#include "GeoLib/IO/XmlIO/Boost/BoostXmlGmlInterface.h" -#include "GeoLib/GEOObjects.h" +#include "gtest/gtest.h" TEST_F(TestGmlInterface, BoostXmlGmlWriterReaderTest) { diff --git a/Tests/FileIO_Qt/TestQtGmlInterface.cpp b/Tests/FileIO_Qt/TestQtGmlInterface.cpp index bf361f4e7af36506ba80617219b003bd243ac2cc..b033576b4ea0480a902e0feacdb37d19a56537cf 100644 --- a/Tests/FileIO_Qt/TestQtGmlInterface.cpp +++ b/Tests/FileIO_Qt/TestQtGmlInterface.cpp @@ -14,14 +14,13 @@ #include <cstdio> -#include "gtest/gtest.h" - +#include "BaseLib/StringTools.h" +#include "GeoLib/GEOObjects.h" +#include "GeoLib/IO/XmlIO/Qt/XmlGmlInterface.h" +#include "InfoLib/TestInfo.h" #include "Tests/FileIO/TestGmlInterface.h" - #include "filesystem.h" -#include "InfoLib/TestInfo.h" -#include "GeoLib/IO/XmlIO/Qt/XmlGmlInterface.h" -#include "GeoLib/GEOObjects.h" +#include "gtest/gtest.h" TEST_F(TestGmlInterface, QtXmlGmlWriterReaderTest) { diff --git a/Tests/GeoLib/IO/TestGLIReader.cpp b/Tests/GeoLib/IO/TestGLIReader.cpp index d71c3f1aa47864065e82de07b3f65cc6dbddc482..9058d7d8b9122609bed0f3fb78426e048fffa253 100644 --- a/Tests/GeoLib/IO/TestGLIReader.cpp +++ b/Tests/GeoLib/IO/TestGLIReader.cpp @@ -10,15 +10,15 @@ * */ -#include <fstream> #include <cstdio> +#include <fstream> -#include "gtest/gtest.h" - -#include "filesystem.h" -#include "InfoLib/TestInfo.h" #include "Applications/FileIO/Legacy/OGSIOVer4.h" +#include "BaseLib/StringTools.h" #include "GeoLib/GEOObjects.h" +#include "InfoLib/TestInfo.h" +#include "filesystem.h" +#include "gtest/gtest.h" class OGSIOVer4InterfaceTest : public ::testing::Test { diff --git a/Tests/MathLib/TestGaussLegendreIntegration.cpp b/Tests/MathLib/TestGaussLegendreIntegration.cpp index 835747e379d58e064bf715333426bd3d7c81901e..7ee755de9db1fa90b2b667fb953841988deae9c6 100644 --- a/Tests/MathLib/TestGaussLegendreIntegration.cpp +++ b/Tests/MathLib/TestGaussLegendreIntegration.cpp @@ -417,7 +417,7 @@ std::unique_ptr<FBase> getF(unsigned polynomial_order) return std::make_unique<FQuad>(); } - OGS_FATAL("unsupported polynomial order: %d.", polynomial_order); + OGS_FATAL("unsupported polynomial order: {:d}.", polynomial_order); } } // namespace GaussLegendreTest @@ -455,7 +455,7 @@ OGS_DONT_TEST_THIS_IF_PETSC(MathLib, IntegrationGaussLegendreTet) for (unsigned integration_order : {1, 2, 3}) { - DBUG("\n==== integration order: %u.\n", integration_order); + DBUG("\n==== integration order: {:d}.\n", integration_order); GaussLegendreTest::IntegrationTestProcess pcs_tet(*mesh_tet, integration_order); @@ -466,7 +466,7 @@ OGS_DONT_TEST_THIS_IF_PETSC(MathLib, IntegrationGaussLegendreTet) break; } - DBUG(" == polynomial order: %u.", polynomial_order); + DBUG(" == polynomial order: {:d}.", polynomial_order); auto f = GaussLegendreTest::getF(polynomial_order); auto const integral_tet = pcs_tet.integrate(f->getClosure()); @@ -484,7 +484,7 @@ OGS_DONT_TEST_THIS_IF_PETSC(MathLib, IntegrationGaussLegendreHex) for (unsigned integration_order : {1, 2, 3}) { - DBUG("\n==== integration order: %u.\n", integration_order); + DBUG("\n==== integration order: {:d}.\n", integration_order); GaussLegendreTest::IntegrationTestProcess pcs_hex(*mesh_hex, integration_order); @@ -495,7 +495,7 @@ OGS_DONT_TEST_THIS_IF_PETSC(MathLib, IntegrationGaussLegendreHex) break; } - DBUG(" == polynomial order: %u.", polynomial_order); + DBUG(" == polynomial order: {:d}.", polynomial_order); auto f = GaussLegendreTest::getF(polynomial_order); auto const integral_hex = pcs_hex.integrate(f->getClosure()); @@ -516,7 +516,7 @@ OGS_DONT_TEST_THIS_IF_PETSC( for (unsigned integration_order : {1, 2, 3}) { - DBUG("\n==== integration order: %u.\n", integration_order); + DBUG("\n==== integration order: {:d}.\n", integration_order); GaussLegendreTest::IntegrationTestProcess pcs_tet(*mesh_tet, integration_order); @@ -525,7 +525,7 @@ OGS_DONT_TEST_THIS_IF_PETSC( polynomial_order < 2 * integration_order; ++polynomial_order) { - DBUG(" == polynomial order: %u.", polynomial_order); + DBUG(" == polynomial order: {:d}.", polynomial_order); GaussLegendreTest::F3DSeparablePolynomial f(polynomial_order); auto const integral_tet = pcs_tet.integrate(f.getClosure()); @@ -544,7 +544,7 @@ OGS_DONT_TEST_THIS_IF_PETSC(MathLib, for (unsigned integration_order : {1, 2, 3, 4}) { - DBUG("\n==== integration order: %u.\n", integration_order); + DBUG("\n==== integration order: {:d}.\n", integration_order); GaussLegendreTest::IntegrationTestProcess pcs_hex(*mesh_hex, integration_order); @@ -553,7 +553,7 @@ OGS_DONT_TEST_THIS_IF_PETSC(MathLib, polynomial_order < 2 * integration_order; ++polynomial_order) { - DBUG(" == polynomial order: %u.", polynomial_order); + DBUG(" == polynomial order: {:d}.", polynomial_order); GaussLegendreTest::F3DSeparablePolynomial f(polynomial_order); auto const integral_hex = pcs_hex.integrate(f.getClosure()); @@ -572,7 +572,7 @@ OGS_DONT_TEST_THIS_IF_PETSC(MathLib, for (unsigned integration_order : {1, 2, 3}) { - DBUG("\n==== integration order: %u.\n", integration_order); + DBUG("\n==== integration order: {:d}.\n", integration_order); GaussLegendreTest::IntegrationTestProcess pcs_tet(*mesh_tet, integration_order); @@ -581,7 +581,7 @@ OGS_DONT_TEST_THIS_IF_PETSC(MathLib, polynomial_order < 2 * integration_order; ++polynomial_order) { - DBUG(" == polynomial order: %u.", polynomial_order); + DBUG(" == polynomial order: {:d}.", polynomial_order); GaussLegendreTest::F3DNonseparablePolynomial f(polynomial_order); auto const integral_tet = pcs_tet.integrate(f.getClosure()); @@ -600,7 +600,7 @@ OGS_DONT_TEST_THIS_IF_PETSC(MathLib, for (unsigned integration_order : {1, 2, 3, 4}) { - DBUG("\n==== integration order: %u.\n", integration_order); + DBUG("\n==== integration order: {:d}.\n", integration_order); GaussLegendreTest::IntegrationTestProcess pcs_hex(*mesh_hex, integration_order); @@ -609,7 +609,7 @@ OGS_DONT_TEST_THIS_IF_PETSC(MathLib, polynomial_order < 2 * integration_order; ++polynomial_order) { - DBUG(" == polynomial order: %u.", polynomial_order); + DBUG(" == polynomial order: {:d}.", polynomial_order); GaussLegendreTest::F3DNonseparablePolynomial f(polynomial_order); auto const integral_hex = pcs_hex.integrate(f.getClosure()); diff --git a/Tests/MathLib/TestNonlinear1D.cpp b/Tests/MathLib/TestNonlinear1D.cpp index 12827a3c27013b2e43a7d179ca4016d6671fcf6b..8974cc2a7206f9ec2733781ec151fc43a13d33ec 100644 --- a/Tests/MathLib/TestNonlinear1D.cpp +++ b/Tests/MathLib/TestNonlinear1D.cpp @@ -7,10 +7,10 @@ * */ +#include <gtest/gtest.h> #include <limits> #include <type_traits> -#include <gtest/gtest.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "MathLib/Nonlinear/Root1D.h" double f(double x) @@ -33,7 +33,7 @@ TYPED_TEST(MathLibRegulaFalsi, QuadraticFunction) auto rf = NL::makeRegulaFalsi<TypeParam>(f, -0.1, 1.1); double old_range = rf.getRange(); - DBUG(" 0 -- x ~ %23.16g, range = %23.16g", rf.getResult(), old_range); + DBUG(" 0 -- x ~ {:23.16g}, range = {:23.16g}", rf.getResult(), old_range); for (unsigned n=0; n<10; ++n) { @@ -42,7 +42,8 @@ TYPED_TEST(MathLibRegulaFalsi, QuadraticFunction) // expect that the interval of the root search shrinks EXPECT_GT(old_range, range); old_range = range; - DBUG("%2i -- x ~ %23.16g, range = %23.16g", n+1, rf.getResult(), range); + DBUG("{:2d} -- x ~ {:23.16g}, range = {:23.16g}", n + 1, rf.getResult(), + range); if (range < std::numeric_limits<double>::epsilon()) { diff --git a/Tests/MathLib/TestODESolver.cpp b/Tests/MathLib/TestODESolver.cpp index c1376b9f225f54d4bafc9a5342e6d6219f864db7..d9d0ec8ae61b1748091e70e9b46e3283576d5c80 100644 --- a/Tests/MathLib/TestODESolver.cpp +++ b/Tests/MathLib/TestODESolver.cpp @@ -8,7 +8,7 @@ */ #include <gtest/gtest.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" #include "MathLib/ODE/ODESolverBuilder.h" @@ -99,8 +99,10 @@ std::unique_ptr<MathLib::ODE::ODESolver<NumEquations>> make_ode_solver( void check(const double time_reached, const double y, const double y_dot, const double time, const double y_ana, const double y_dot_ana) { - DBUG("t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g", - time_reached, y, y - y_ana, y_dot, y_dot - y_dot_ana); + DBUG( + "t: {:14.7g}, y: {:14.7g}, diff: {:14.7g}, y_dot: {:14.7g}, diff: " + "{:14.7g}", + time_reached, y, y - y_ana, y_dot, y_dot - y_dot_ana); (void)y_dot_ana; // Avoid unused variable warning when DBUG output is // disabled. diff --git a/Tests/MeshGeoToolsLib/TestGeoMapper.cpp b/Tests/MeshGeoToolsLib/TestGeoMapper.cpp index e19a7748bad1bd2c2a00488b4298d143906f68d8..610910a1e60b6fc1ed68424bfd28425dc8071bd4 100644 --- a/Tests/MeshGeoToolsLib/TestGeoMapper.cpp +++ b/Tests/MeshGeoToolsLib/TestGeoMapper.cpp @@ -69,8 +69,8 @@ TEST_F(MeshGeoToolsLibGeoMapper, PointsOnSurfaceMesh) { if (std::abs(std::cos(p[0]+p[1]) - p[2]) >= eps) { - INFO("std::cos(%f + %f) = %f, %f", - p[0], p[1], cos(p[0]+p[1]), p[2]); + INFO("std::cos({:f} + {:f}) = {:f}, {:f}", p[0], p[1], + cos(p[0] + p[1]), p[2]); return false; } } diff --git a/Tests/NumLib/ODEs.h b/Tests/NumLib/ODEs.h index 5475f24f87648c0759a81b5efe4014e661e8a5b4..cf37bf1c9e9e1a9de4586defb0dfadec3df13c9a 100644 --- a/Tests/NumLib/ODEs.h +++ b/Tests/NumLib/ODEs.h @@ -305,10 +305,10 @@ public: // Eigen::MatrixXd J(Jac.getRawMatrix()); - // INFO("t: %e, x: %e, y: %e, z: %e, dxdot/dx: %e", t, x, y, z, dxdot_dx); - // std::cout << "Jacobian:\n" << J << "\n"; + // INFO("t: {:e}, x: {:e}, y: {:e}, z: {:e}, dxdot/dx: {:e}", t, x, y, + // z, dxdot_dx); std::cout << "Jacobian:\n" << J << "\n"; - // INFO("Det J: %e <<<", J.determinant()); + // INFO("Det J: {:e} <<<", J.determinant()); } MathLib::MatrixSpecifications getMatrixSpecifications( diff --git a/Tests/NumLib/TestComponentNorms.cpp b/Tests/NumLib/TestComponentNorms.cpp index 031307f06c130fa06ff4c5b2a72c15c25ebd04ca..5395ba7d19d56b32e20db323831750a78dd99c77 100644 --- a/Tests/NumLib/TestComponentNorms.cpp +++ b/Tests/NumLib/TestComponentNorms.cpp @@ -9,7 +9,7 @@ #include <gtest/gtest.h> #include <limits> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #ifdef USE_PETSC #include "InfoLib/TestInfo.h" @@ -128,7 +128,7 @@ TEST(MPITest_NumLib, ComponentNormSingleComponent) using VNT = MathLib::VecNormType; for (auto norm_type : {VNT::NORM1, VNT::NORM2, VNT::INFINITY_N}) { - DBUG("norm type: %s.", + DBUG("norm type: {:s}.", MathLib::convertVecNormTypeToString(norm_type).c_str()); do_test(num_components, norm_type, tolerance, [](double /*n_total*/, double n) { return n; }, diff --git a/Tests/NumLib/TestExtrapolation.cpp b/Tests/NumLib/TestExtrapolation.cpp index f4e6540ca725b1e9e8fb903d4f6752f44ee988d9..e32f6867d4d8fe4c398ab8ea8c96b8393c404cd4 100644 --- a/Tests/NumLib/TestExtrapolation.cpp +++ b/Tests/NumLib/TestExtrapolation.cpp @@ -235,7 +235,7 @@ void extrapolate( ASSERT_EQ(nelements, residual.size()); auto const res_norm = LinAlg::normMax(residual); - DBUG("maximum norm of residual: %g", res_norm); + DBUG("maximum norm of residual: {:g}", res_norm); EXPECT_GT(tolerance_res, res_norm); auto delta_x = MathLib::MatrixVectorTraits<GlobalVector>::newInstance( @@ -243,7 +243,7 @@ void extrapolate( LinAlg::axpy(*delta_x, -1.0, x_extra); // delta_x = x_expected - x_extra auto const dx_norm = LinAlg::normMax(*delta_x); - DBUG("maximum norm of delta x: %g", dx_norm); + DBUG("maximum norm of delta x: {:g}", dx_norm); EXPECT_GT(tolerance_dx, dx_norm); } @@ -279,7 +279,7 @@ TEST(NumLib, DISABLED_Extrapolation) auto const nnodes = mesh->getNumberOfNodes(); auto const nelements = mesh->getNumberOfElements(); - DBUG("number of nodes: %lu, number of elements: %lu", nnodes, + DBUG("number of nodes: {:d}, number of elements: {:d}", nnodes, nelements); ExtrapolationTest::ExtrapolationTestProcess pcs(*mesh, diff --git a/Tests/NumLib/TestODEInt.cpp b/Tests/NumLib/TestODEInt.cpp index ca6d00bc2edab2e3bb9bfc5acc0f20f64f1d4b7c..aa91edc15291236f871b7de898ae1e9b5072f913 100644 --- a/Tests/NumLib/TestODEInt.cpp +++ b/Tests/NumLib/TestODEInt.cpp @@ -13,8 +13,8 @@ #include <memory> #include <typeinfo> -#include <logog/include/logog.hpp> #include <boost/property_tree/xml_parser.hpp> +#include "BaseLib/Logging.h" #include "InfoLib/TestInfo.h" #include "NumLib/NumericsConfig.h" @@ -87,7 +87,7 @@ public: const double delta_t = (num_timesteps == 0) ? -1.0 : ((t_end-t0) / num_timesteps); - DBUG("Running test with %u timesteps of size %g s.", num_timesteps, + DBUG("Running test with {:d} timesteps of size {:g} s.", num_timesteps, delta_t); // initial condition diff --git a/Tests/NumLib/TestTimeSteppingEvolutionaryPIDcontroller.cpp b/Tests/NumLib/TestTimeSteppingEvolutionaryPIDcontroller.cpp index 36d36be8bbe3ea3a6e1b5e998a779404d7afd449..7d03e7fed91a05681d3a0df9ca041b042fc6a491 100644 --- a/Tests/NumLib/TestTimeSteppingEvolutionaryPIDcontroller.cpp +++ b/Tests/NumLib/TestTimeSteppingEvolutionaryPIDcontroller.cpp @@ -14,7 +14,7 @@ #include <memory> #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "BaseLib/ConfigTree.h" diff --git a/Tests/NumLib/TestTimeSteppingFixed.cpp b/Tests/NumLib/TestTimeSteppingFixed.cpp index c1104be261b959bddebb8714cf6f5812dc9e5b2c..20e4be4e51a00b306190e0fcb2f6d095108df3ee 100644 --- a/Tests/NumLib/TestTimeSteppingFixed.cpp +++ b/Tests/NumLib/TestTimeSteppingFixed.cpp @@ -13,7 +13,7 @@ #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/TimeStepping/Algorithms/FixedTimeStepping.h" #include "NumLib/TimeStepping/TimeStep.h" diff --git a/Tests/NumLib/TestTimeSteppingIterationNumber.cpp b/Tests/NumLib/TestTimeSteppingIterationNumber.cpp index d9c9ab49fab1f7848762918b1a2a4ffa1878e84f..d64a4cee3420554e1b7c63eb7495ffb83cee351f 100644 --- a/Tests/NumLib/TestTimeSteppingIterationNumber.cpp +++ b/Tests/NumLib/TestTimeSteppingIterationNumber.cpp @@ -14,7 +14,7 @@ #include <utility> #include <vector> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/TimeStepping/TimeStep.h" #include "NumLib/TimeStepping/Algorithms/IterationNumberBasedTimeStepping.h" diff --git a/Tests/NumLib/TimeLoopSingleODE.h b/Tests/NumLib/TimeLoopSingleODE.h index 16bf82f688ebb9bc365860591eee3e0ac0036908..33155d4660bbd3376e64881fa7e1b5e63e559d28 100644 --- a/Tests/NumLib/TimeLoopSingleODE.h +++ b/Tests/NumLib/TimeLoopSingleODE.h @@ -113,7 +113,7 @@ NumLib::NonlinearSolverStatus TimeLoopSingleODE<NLTag>::loop( { ++timestep; - // INFO("time: %e, delta_t: %e", t, delta_t); + // INFO("time: {:e}, delta_t: {:e}", t, delta_t); time_disc.nextTimestep(t, delta_t); int const process_id = 0; @@ -136,7 +136,8 @@ NumLib::NonlinearSolverStatus TimeLoopSingleODE<NLTag>::loop( if (!nonlinear_solver_status.error_norms_met) { - ERR("Nonlinear solver failed in timestep #%u at t = %g s", timestep, t); + ERR("Nonlinear solver failed in timestep #{:d} at t = {:g} s", timestep, + t); } return nonlinear_solver_status; } diff --git a/Tests/NumLib/TimeSteppingTestingTools.h b/Tests/NumLib/TimeSteppingTestingTools.h index 45a2ba8ebcc7450f10daa11e6e8df9c822391394..916474f930cd3cd0626551c0328a64bc509cac70 100644 --- a/Tests/NumLib/TimeSteppingTestingTools.h +++ b/Tests/NumLib/TimeSteppingTestingTools.h @@ -11,7 +11,7 @@ #pragma once -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include "NumLib/TimeStepping/TimeStep.h" @@ -42,7 +42,7 @@ std::vector<double> timeStepping(T_TIME_STEPPING& algorithm, } NumLib::TimeStep t = algorithm.getTimeStep(); - //INFO("t: n=%d,t=%g,dt=%g", t.steps(), t.current(), t.dt()); + // INFO("t: n={:d},t={:g},dt={:g}", t.steps(), t.current(), t.dt()); if (obj) { (*obj)(algorithm); // do something diff --git a/Tests/ParameterLib/Parameter.cpp b/Tests/ParameterLib/Parameter.cpp index fdb387ff4c648e6a7b44fb4c58430a3537922ed1..ababafa72d26265bf2b6da050bde886e4d25379a 100644 --- a/Tests/ParameterLib/Parameter.cpp +++ b/Tests/ParameterLib/Parameter.cpp @@ -8,7 +8,7 @@ */ #include <gtest/gtest.h> -#include <logog/include/logog.hpp> +#include "BaseLib/Logging.h" #include <boost/property_tree/xml_parser.hpp> #include <numeric> @@ -138,8 +138,9 @@ bool testNodalValuesOfElement( double const expected_value = get_expected_value(e, i); if (expected_value != nodal_values(i, 0)) { - ERR("Mismatch for element %d, node %d; Expected %g, got " - "%g.", + ERR("Mismatch for element {:d}, node {:d}; Expected {:g}, " + "got " + "{:g}.", e->getID(), i, expected_value, nodal_values(i, 0)); return false; } diff --git a/Tests/ProcessLib/TestJacobianAssembler.cpp b/Tests/ProcessLib/TestJacobianAssembler.cpp index b17d1280f1eeeaf95c55cd68084b3d0af8f0405c..bab762d985ec2ed0af8b5d2ac39f59825ebde64c 100644 --- a/Tests/ProcessLib/TestJacobianAssembler.cpp +++ b/Tests/ProcessLib/TestJacobianAssembler.cpp @@ -576,7 +576,7 @@ private: ASSERT_EQ(x.size()*x.size(), Jac_data_cd.size()); ASSERT_EQ(x.size()*x.size(), Jac_data_ana.size()); for (std::size_t i=0; i<x.size()*x.size(); ++i) { - // DBUG("%lu, %g, %g", i, Jac_data_ana[i], Jac_data_cd[i]); + // DBUG("{:d}, {:g}, {:g}", i, Jac_data_ana[i], Jac_data_cd[i]); EXPECT_NEAR(Jac_data_ana[i], Jac_data_cd[i], LocAsm::getTol()); } } diff --git a/Tests/testrunner.cpp b/Tests/testrunner.cpp index 8f90a1d694879c897c71c33bf6d740e7e94fb0df..8b674fc9d9e60514d4612271462757a7454afc9b 100644 --- a/Tests/testrunner.cpp +++ b/Tests/testrunner.cpp @@ -12,15 +12,15 @@ * */ -// ** INCLUDES ** -#include <clocale> +#include <spdlog/spdlog.h> -#include "gtest/gtest.h" +#include <clocale> -#include "Applications/ApplicationsLib/LogogSetup.h" #include "Applications/ApplicationsLib/LinearSolverLibrarySetup.h" +#include "BaseLib/Error.h" +#include "BaseLib/Logging.h" #include "NumLib/DOF/GlobalMatrixProviders.h" -#include "BaseLib/TemplateLogogFormatterSuppressedGCC.h" +#include "gtest/gtest.h" #ifdef OGS_BUILD_GUI #include <QCoreApplication> @@ -51,24 +51,22 @@ int main(int argc, char* argv[]) QCoreApplication app(argc, argv, false); #endif - // Attention: Order matters! - // logog_setup must be created first, then the linear_solver_library_setup, - // because destruction order is the reverse of the creation order and the - // destructor of linear_solver_library_setup might print log messages. - // The methods on logog_setup must be called after the construction of - // linear_solver_library_setup since they require, e.g., that MPI_Init() - // has been called before. - - ApplicationsLib::LogogSetup logog_setup; - ApplicationsLib::LinearSolverLibrarySetup linear_solver_library_setup( argc, argv); - logog_setup.setFormatter( - std::make_unique<BaseLib::TemplateLogogFormatterSuppressedGCC< - TOPIC_LEVEL_FLAG | TOPIC_FILE_NAME_FLAG | - TOPIC_LINE_NUMBER_FLAG>>()); - logog_setup.setLevel(logLevel); + BaseLib::setConsoleLogLevel(logLevel); + spdlog::set_pattern("%^%l:%$ %v"); + spdlog::set_error_handler([](const std::string& msg) { + std::cerr << "spdlog error: " << msg << std::endl; + OGS_FATAL("spdlog logger error occured."); + }); +#ifdef USE_PETSC + { // Can be called only after MPI_INIT. + int mpi_rank; + MPI_Comm_rank(PETSC_COMM_WORLD, &mpi_rank); + spdlog::set_pattern(fmt::format("[{}] %^%l:%$ %v", mpi_rank)); + } +#endif try { diff --git a/ThirdParty/CMakeLists.txt b/ThirdParty/CMakeLists.txt index d91cfa8db44f748ffda4b2501941cf7b4ed74111..016efa661f5d6101daa4d514d16ea54a0ad7c368 100644 --- a/ThirdParty/CMakeLists.txt +++ b/ThirdParty/CMakeLists.txt @@ -1,5 +1,5 @@ -add_subdirectory(logog) -set(DISABLE_WARNINGS_TARGETS logog) +add_subdirectory(spdlog) +set(DISABLE_WARNINGS_TARGETS spdlog) set(gtest_force_shared_crt ON CACHE INTERNAL "") # Use dynamic MSVC runtime set(INSTALL_GTEST OFF CACHE INTERNAL "") diff --git a/ThirdParty/ReadMe.md b/ThirdParty/ReadMe.md index 8562dd872e3cc990697abdcc6446263dae3470f1..02fd52e623bbd97bcbc3aedeb51867fc3583ef32 100644 --- a/ThirdParty/ReadMe.md +++ b/ThirdParty/ReadMe.md @@ -1,17 +1,5 @@ # Third-party libraries # -## logog ## - -For details how to use logog see the [OGS devguide](http://devguide.opengeosys.com/logging/) and the [logog documentation](http://johnwbyrd.github.com/logog/). - -[logog](http://johnwbyrd.github.com/logog/) is integrated as a [git-subtree](https://github.com/apenwarr/git-subtree) and can be updated with (executed in the sources root): - - git-subtree pull -P ThirdParty/logog --squash https://github.com/johnwbyrd/logog.git - -It was initially integrated with: - - git-subtree add -P ThirdParty/logog --squash https://github.com/johnwbyrd/logog.git master - ## RapidXML ## Is used for XML-IO. Is integrated directly. @@ -40,3 +28,7 @@ tests are too large. ## exprtk ## Header only c++ mathematical expression parsing and evaluation library + +## spdlog ## + +Very fast, header-only/compiled, C++ logging library. diff --git a/ThirdParty/logog/CMakeLists.txt b/ThirdParty/logog/CMakeLists.txt deleted file mode 100644 index c32fbf5676c3128efd53127087b2d33461e15763..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -# logog needs thread support on linux -find_package( Threads ) -add_library( logog - src/api.cpp - src/checkpoint.cpp - src/formatter.cpp - src/lobject.cpp - src/lstring.cpp - src/message.cpp - src/mutex.cpp - src/node.cpp - src/platform.cpp - src/socket.cpp - src/statics.cpp - src/target.cpp - src/timer.cpp - src/topic.cpp - src/unittest.cpp -) -target_include_directories(logog SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) -if(BUILD_SHARED_LIBS) - install(TARGETS logog LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) -endif() diff --git a/ThirdParty/logog/doc/make-doxygen.bat b/ThirdParty/logog/doc/make-doxygen.bat deleted file mode 100644 index ec6f2db2a281b30389f824ef95bfd6ef90f026a5..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/doc/make-doxygen.bat +++ /dev/null @@ -1,2 +0,0 @@ -cd .. -bin\win32\dev\doxygen.exe \ No newline at end of file diff --git a/ThirdParty/logog/doc/overview.dox b/ThirdParty/logog/doc/overview.dox deleted file mode 100644 index 0baf43db1b99c2dab35e61a0342f1c0d38dfa17e..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/doc/overview.dox +++ /dev/null @@ -1,991 +0,0 @@ -/* - -Online documentation is available at http://www.logog.org. - -This is a documentation file for logog, written in doxygen format. It's not -intended to be read by a human; rather, it's intended to be read by the -doxygen formatting tool to generate help in a number of user-readable formats. - -If you wish to generate a local copy of the html documentation, then -install the doxygen utility from http://www.doxygen.org , and run the -utility from the root of the logog installation folder. A folder -named doc/html will be created with complete html documentation for the -current release of logog. - -*/ - -namespace logog { - -/*! -\mainpage logog - logger optimized for games - -\htmlonly -<a href="http://www.github.com/johnwbyrd/logog"> -<img src="download.jpg" width=120 height=90 alt="Download logog" > -</a> -\endhtmlonly - -\section introduction Introduction - -logog is a portable C++ library to -facilitate logging of real-time events in performance-oriented -applications, such as games. It is especially appropriate for projects -that have constrained memory and constrained CPU requirements. - -The latest documentation for logog is online at <a href="http://www.logog.org"> -http://www.logog.org</a>. You can download the latest tarball or zipfile -<a href="http://www.github.com/johnwbyrd/logog">here</a>. - -For the impatient, you can add logging functionality into your program -within five minutes by reading the \ref quickstart section. - -\subsection gettingstarted Getting started - -- \ref quickstart -- \ref requirements -- \ref supportedplatforms -- \ref features - -\subsection basic Basic functionality - -- \ref loggingevents -- \ref levels - -\subsection advancedfeatures Advanced functionality - -- \ref categoriesgroups -- \ref multipletargets -- \ref deferredoutput -- \ref addingnewtargets -- \ref customformatting -- \ref memorymanager -- \ref unicodesupport -- \ref performance -- \ref leakdetection - -\subsection relatedtopics Related topics - -- \ref porting -- \ref unittesting -- \ref othersystems -- \ref license - -\subsection gettinghelp Getting help - -- \ref community - -\htmlonly -<table border=0 style="background-color: #fff; padding: 5px;" cellspacing=0> - <tr><td> - <img src="http://groups.google.com/intl/en/images/logos/groups_logo_sm.gif" - height=30 width=140 alt="Google Groups"> - </td></tr> - <tr><td style="padding-left: 5px"> - <b>Subscribe to Logog</b> - </td></tr> - <form action="http://groups.google.com/group/logog/boxsubscribe"> - <input type=hidden name="hl" value="en"> - <tr><td style="padding-left: 5px;"> - Email: <input type=text name=email> - <input type=submit name="sub" value="Subscribe"> - </td></tr> -</form> -<tr><td align=right> - <a href="http://groups.google.com/group/logog?hl=en">Visit this group</a> -</td></tr> -</table> -\endhtmlonly - - -\page features Features - -Why yet another logging library? Because professional games have -very specific logging requirements that aren't met by any previous -logging system. - -logog supports the following features: - -- High performance. It is possible to disable all logging functionality -entirely within logog. In this case logog incurs zero performance -penalty on executing code. All logging functions compile to no-ops in -the case where the logging level is set to disabled. When logging is -enabled, the do-not-log control path requires exactly one boolean -comparison. All performance-critical operations have been constructed to -have constant time or near constant time performance. logog was designed -to assume that no memory or CPU time is available for logging on a final -release build of software. When compiling in final release mode, logog -is designed to compile completely away -- zero memory allocations, zero -CPU cycles spent. - -- Logging to arbitrary destinations. Log messages can be sent to stdout, -stderr, a log file or into memory, or any combination of these. Logging -classes are highly extensible, so logging to new destinations is easy to -add. - -- Multiple simultaneous logging criteria. Messages can be simultaneously -logged to different log targets with different requirements: by file, by -category, by log level, or by group. Substring matching permits -regexp-like behavior on logging criteria. - -- Limited external dependencies. logog only requires a reasonably modern -standards-compliant C++ compiler (tr1 or later). logog has limited -dependencies on STL. Those dependencies have been orchestrated to mitigate -the negative performance impacts of the STL. Additionally, those dependencies -have been abstracted into macros so that STL can easily be replaced with a somewhat -compatible template library of your own choosing. - -- Highly granular control over which message types are logged. Control -over these messages may be determined at compile-time for maximal -performance, or at run-time for interactively enabling or disabling log -message types during execution. Messages may be logged by source file, -group, category, or message contents. - -- Support for advanced logging requirements. logog's pub-sub -architecture means that logging can occur simultaneously to multiple log -targets, each with its own logging criteria. Stable base classes permit -new logging targets to be easily added. - -- Extremely configurable memory usage and policy. All memory allocations -happen after initialization time via a user-supplied memory manager (or -the default std::allocator). In other words, you can configure ALL -memory allocations to occur from custom malloc() and free() style -functions of your own authorship. - -- All allocated memory is freed after the shutdown -- logog does not -leak memory. A special compilation flag (LOGOG_LEAK_DETECTION) audits -every allocation and free within logog to discover and fix memory leaks therein. -Additionally, if you don't trust logog's internal leak detector, support exists -for auditing leaks with Microsoft's CRT library with LOGOG_LEAK_DETECTION_MICROSOFT. - -- Support for POSIX-type and Windows-type operating systems. -Support for proprietary game consoles is implicit or latent; the system -has been demonstrated to work on Xbox 360 and PS3 (with certain proprietary header -files). Support for other OSes is straightforward; all OS dependencies are encapsulated in -macros. - -- Support for multithreading. Multiple thread sources are permitted to -send logging messages at the same time. - -- Support for re-entrancy. If triggering a log message indirectly causes -another log message to be triggered, either through the memory allocator -or some other user-based policy, logog is not permitted to hang in a -multithreaded environment. - -- Unicode (wide-character) support for all strings; define LOGOG_UNICODE -and all strings go from char-based to wchar-based. - -- Verbose documentation. By far the best documented logging system -available. logog uses doxygen comments throughout. - -- Extremely permissive license. logog is released under the MIT License, -so it may be used freely in commercial as well as open-source projects, -with proper attribution to logog's authors (Gigantic Software). - -\page quickstart Quick start - -The logog system is a set of C++ header files and C++ source files. -To use them, compile all the C++ source files into a single library. -The compiler will need to reference the files in the include directory -when compiling the logog library. - -\par Build the logog library - -To make this easier, logog has been set up to compile using CMake, available -at http://www.cmake.org/ . -CMake is a free cross-platform build system, and executables are available for -most major platforms and development environments. Download and install CMake -in order to generate a build for your platform. - -For example, to build the project and libraries on Visual Studio 2008, find and launch -the Visual Studio 2008 Command Prompt at <b>Microsoft Visual Studio 2008 / Visual Studio Tools / -Visual Studio 2008 Command Prompt.</b> - -Then, to create the appropriate project files, create an empty directory, make that -directory the current directory, and run the CMake command with the logog directory as -a parameter: - -\code -mkdir logog-build -cd logog-build -cmake [path-to-logog-top-directory] -\endcode - -At this point, your directory will contain appropriate project and solution files for your -platform. Once the solution is building, the CMake program is no longer needed. -Compile and link the library for your own platform using the makefile or project files generated -for your platform. - -\par Your Hello, Logog! program - -Here is a working logog example that initializes logog, outputs some sample messages and then -terminates. - -\snippet test.cpp HelloLogog - -The most common mistake when getting started with logog is creating a Cerr or Cout -object and not destroying the object before LOGOG_SHUTDOWN(). This is a usage -error and will be detected as heap corruption by most debuggers. - -\par Integrate logog into your own project - -To use the logging library in your own project, put the following line -at the top of your source file(s): - -\code -#include "logog.hpp" -\endcode - -Additionally, make sure to add logog's /include path into the directories -your build process searches. - -At the beginning of your program, initialize logog exactly once, with this -macro: - -\code -LOGOG_INITIALIZE(); -\endcode - -\par Choose one or more output types - -To tell logog what type of output should be logged, you must first create a logog::Cerr, -a logog::Cout, or a logog::LogFile object. Once this object is instantiated, -all messages will be routed to that target. For example: - -\code -logog::Cerr errOutput; -\endcode - -Or: - -\code -logog::LogFile errFile("log.txt"); -\endcode - -It's only necessary to create one target per process, immediately after initializing -logog; you don't need to instance a different Cout, Cerr or LogFile for each class or each file. - -\par Start logging events - -To log a message in your code, use one of the following macros, in order -of severity. Arguments are assumed to be sprintf-style varargs: - -\snippet macro.hpp Shorthand - -Note the funny spellings on DBUG and ERR to avoid conflicting with existing macros -on Windows platforms. - -If it turns out that the names of these macros conflict with your existing code, -then before including the logog.hpp file, define the following constant: - -\code -#define LOGOG_USE_PREFIX 1 -\endcode - -If you enable that prefix, you may log with the following macros instead: - -\code -LOGOG_DEBUG( __VA_ARGS__ ) -LOGOG_INFO( __VA_ARGS__ ) -LOGOG_WARN3( __VA_ARGS__ ) -LOGOG_WARN2( __VA_ARGS__ ) -LOGOG_WARN1( __VA_ARGS__ ) -LOGOG_WARN( __VA_ARGS__ ) -LOGOG_ERROR( __VA_ARGS__ ) -LOGOG_ALERT( __VA_ARGS__ ) -LOGOG_CRITICAL( __VA_ARGS__ ) -LOGOG_EMERGENCY( __VA_ARGS__ ) -\endcode - -An example usage follows: - -\code -int foo = 9001; -int maxfoo = 9000; - -if ( foo > maxfoo ) -{ - WARN("Foo is over %d! Current value is %d.", maxfoo, foo ); - WARN("Since this is a warning, by default all builds will log this message!"); -} - -const char *pMessage = "message" -INFO( "This is an informational %s.", pMessage ); -\endcode - -At this point, your Target object (in this case, the errOutput object) should -be destroyed. Falling out of scope is the easiest way to achieve this. - -Then, terminate your program and logging with the following message: - -\code -LOGOG_SHUTDOWN(); -\endcode - -Lastly, compile and link with the logog library you created earlier. - -\page loggingevents Logging events in your code - -In order to log events in your code, it's important to first understand the logging -levels that are available to you. Out of the box, logog comes with these logging -levels, which are compatible with the syslog standard: - -\snippet const.hpp Level Constants - -So, the lower the level number is, the more important the logging message is. - -To log an event in your code, there exists macros for each of the logging -levels. So, for example, to log an event of level WARN3, you would use the -following macro in your code: - -\code -LOGOG_WARN3("Disk reads are taking %d milliseconds to complete!", nMilliseconds ); -\endcode - -It can get laborious to type the LOGOG_ prefix on all log messages, so, if the -LOGOG_USE_PREFIX macro is not defined, you may use these shorter alternate -logging forms: - -\snippet macro.hpp Shorthand - -If you want to generate a log message of some user-specified level, check out -the LOGOG_LEVEL_MESSAGE macro. - -Keep in mind that you must instantiate at least one Target object in your application -for log messages to have any effect. - -\page levels Verbosity levels of logging - -During early stages of product development, you may want to spread DBUG() -and INFO() type messages liberally across your code base in order to detect -bugs earlier in the process. However, as your code develops you will -want to omit these instructions entirely, as too many log messages will -slow down your program. - -To omit all logging messages of lower than a specific level at compilation time, -\#define the LOGOG_LEVEL constant to be some value from the following list: - -\snippet const.hpp Level Constants - -All logging macros of a lower level will be omitted. - -You may enable all logging messages in the following manner before loading -logog.hpp: - -\code -#define LOGOG_LEVEL LOGOG_LEVEL_ALL -\endcode - -And you may disable all logging messages with this before logog.hpp: - -\code -#define LOGOG_LEVEL LOGOG_LEVEL_NONE -\endcode - -The standard warnings apply to incrementing or changing variables within a macro. -For example: - -\code -INFO("The core has exploded %d times", nExploded++); -\endcode - -The nExploded variable will only be incremented if LOGOG_LEVEL is set to LOGOG_LEVEL_INFO -or lower. - -\page filters Filters and their uses - -A Filter is a special type of Topic that accepts messages from a publisher -and routes them forward to another Topic, based on criteria decided by the Filter. -When logog is initialized, it creates one default filter that automatically forwards -all messages to all Target objects. This default behavior can be modified in -to generate more complicated logging behaviors. - -You can get a reference to the default filter with GetDefaultFilter(). You -can also instantiate your own filters before you start logging messages -and messages will automatically find and route through them as well. - -Messages attempt to publish themselves to all filters when the message is -instantiated. Filters automatically attempt to publish themselves -to all targets when the filter is instantiated. - -\page categoriesgroups Organizing and filtering log messages by types - -Areas of a program such as a game can be broken down into a set of functional -areas. Some areas might include AI, audio, graphics, input and the file system. - -The logog system allows you to store two dimensions of information with each message -that further type the message. These dimensions are referred to as the -<b>category</b> and the <b>group</b> of the message. The ultimate meaning of -these fields is up to you. - -To define the current group for all messages following a certain point in your -code, \#define the LOGOG_GROUP constant to the name of the group, surrounded -by double quotes. Likewise \#define the LOGOG_CATEGORY constant to the name -of the category surrounded by double quotes. - -Your compiler may need the \#undef macro to undefine the previous setting of -a constant before \#define'ing it to something else. - -If you wish to set further messages to no specific category or group, \#define -either LOGOG_CATEGORY or LOGOG_GROUP to NULL as necessary. - -\snippet test.cpp GroupCategory1 - -A Filter can be told to route only messages matching a specified category or -group. To do this, call the Filter::Category() or Filter::Group() methods on -a specific filter. That filter will then only pass messages matching -the criteria you've set. - -\snippet test.cpp GroupCategory2 - -\page multipletargets Logging to permutations of multiple targets - -It's possible to create multiple filters with multiple criteria on each filter -and then route each filter to a separate target. This permits advanced logging -of different types of events to different log targets. - -A filter will automatically attempt to publish itself to all targets. You can -change this behavior by calling UnpublishToMultiple( AllTargets() ) on that filter, -followed by PublishTo() to publish that filter to an output of your choice. - -\snippet test.cpp GroupCategory4 - -\page deferredoutput Deferring logging output - -Writing debug output can take a lot of time on most platforms. -Especially in programs that produce copious debug output, logging can slow -a program's operation considerably. - -To get around this behavior, use the LogBuffer class. To Create a LogBuffer, -you provide a pointer to the ultimate Target you want to write to, such as -a Cerr or a LogFile, as well as the size of the LogBuffer. Logging then occurs -solely to the LogBuffer, and no output is written to the Target until the -LogBuffer is destroyed, or the LogBuffer::Dump() method is called. - -\page customformatting Custom formatting of log messages - -The Formatter object is responsible for rendering a particular Topic into a human-readable -format. A default Formatter is created by default for you based on the flavor of the compile -target. See FormatterGCC and FormatterMSVC objects for examples. - -If you want log messages in your own custom format, subclass the Formatter::Format -method into your own custom class, and write your own formatting function for a topic. -See FormatterMSVC::Format and FormatterGCC::Format for examples. - -If all you want to do is enable or disable a certain type of output on your formatter -- for example, to remove file and line number information from -all your output lines -- then there's a very simple way of doing this. -The Formatter class implements a Formatter::GetTopicFlags() function that -in the default case queries the topic in order to find out which fields -to render. You can if you wish override this default behavior for a custom -formatter in order to always or never render specific fields. - -The following example overrides the standard FormatterMSVC formatter in -order to never show file and line number information on the output. - -\snippet test.cpp FormatterCustom1 - -If you wish, you can force a formatter to output the current date and time as -part of their format. You can do this by calling the Formatter::SetShowTimeOfDay function -with a value of true, as follows: - -\snippet test.cpp DateAndTimeLogging - -\page addingnewtargets Adding new logging output targets - -To add a new type of logging output, such as a network socket or a printer, -create a subclass of the Target class, and implement your own Output() -function that renders the information to your output device. - -\snippet target.cpp Cout - -Then, instance your new class after your call to LOGOG_INITIALIZE() but -before messages are invoked. - -\page memorymanager Implementing a custom memory manager - -All memory allocated by logog, by default, goes through the system malloc() -and free() routines. However, many games prefer to implement their -own memory management systems in order to track memory usage in detail. - -In this case, logog can be made to allocate memory via a callback into -your own custom code. In order to implement this callback, -allocate an INIT_PARAMS structure on the stack, and then replace -the m_pfMalloc and m_pfFree pointers to pointers to your own custom -allocation and free routines. (It's fine to allocate an INIT_PARAMS structure -on the stack.) -Then, when calling the LOGOG_INITIALIZE() macro, provide the address -of the INIT_PARAMS structure as a parameter. The INIT_PARAMS structure -may then be freed. - -\snippet api.hpp INIT_PARAMS - -\page leakdetection Memory leak detection - -A memory leak detection mechanism has been built into logog that tracks all -internal memory allocations and matches them with corresponding frees. -The system also detects incorrect reallocations and double frees. This -system only needs to be enabled if you suspect that logog is leaking memory. - -To enable this checking, \#define the LOGOG_LEAK_DETECTION constant at compilation -time before \#include'ing logog.hpp, and then recompile both the logog library and your -code. Additionally, if you want a detailed report about memory allocations -and frees at the time they occur, enable the LOGOG_REPORT_ALLOCATIONS flag during -compilation for an action-packed report during run time. - -If you don't trust logog's built-in leak detector and are using a Microsoft -toolset, Microsoft may have enabled support for your platform to detect -leaks using the CRT library. If you want to try to use the Microsoft leak -detector to find leaks in logog, then \#define the LOGOG_LEAK_DETECTION_MICROSOFT constant at -compile time before \#include'ing logog, and recompile both the logog library -and your application. See http://msdn.microsoft.com/en-us/library/x98tx3cf.aspx -for more details on how Microsoft implements CRT leak detection. - -It's not recommended to leave either of these options on for general use. -Memory leak detection will slow down logog; additionally, memory leak -detection avoids logog's custom memory manager, in order -to avoid an infinite recursion. - -Don't try to enable both LOGOG_LEAK_DETECTION and LOGOG_LEAK_DETECTION_MICROSOFT -at the same time. - -\page unicodesupport Unicode support - -The logog library may be compiled either in ANSI mode or in Unicode mode. By default, -logog is compiled as an ANSI library. In this case, multibyte characters are -not permitted in log messages. To enable Unicode support, define the LOGOG_UNICODE -flag in logog.hpp before compiling the logog library. - -Defining this flag sets wchar_t as the base type for all logog character operations. -On Windows like platforms, a wchar_t is two bytes, and on Posix-like platforms this -may be two bytes or four bytes. - -Because Unicode support is based around wchar_t, the exact format of the Unicode -output depends on the endianness of the target platform as well as the size of -wchar_t. If logog is creating a new output log file, logog tries to add a Unicode -BOM to the start of the file, if wchar_t is either two or four bytes in length. -In this case, logog can write a UTF-16 or UTF-32 BOM, in either little or big -endian format. See LogFile::WriteUnicodeBOM() for more information on how this -BOM is written. More information on what a BOM does is available at -http://unicode.org/faq/utf_bom.html . - -Defining LOGOG_UNICODE has several effects on logog. First, this forces all -logging functions to expect to receive string parameters as arrays of the -local wchar_t type instead of char types. In other words, the LOGOG_CHAR -base type is redefined to wchar_t instead of char. Second, this forces logog to route all -Cout messages to wcout, and all Cerr messages to wcerr. - -A convenience macro, _LG(), is available (if you haven't defined LOGOG_USE_PREFIX) -for easily switching your constant strings from ANSI to Unicode, based on the compilation -value of LOGOG_UNICODE. To use this macro, and hence to have all your code compile -in both ANSI and Unicode modes, log in the following fashion: - -\code -INFO(_LG("This informational message is displayed in both ANSI and Unicode builds.")); -WARN(LOGOG_CONST_STRING("And this one works regardless of the LOGOG_USE_PREFIX setting.")); -\endcode - -Mixing and matching both Unicode and ANSI messages in one application is not currently -supported, as most compilers do not implement this functionality. - -<b>Windows specific issues</b> - -Windows platforms have special considerations when logging to the console with -wide characters via wcout or wcerr. Because logog shares the console with its -host application, it does not initialize the console in any way. On Windows -flavored platforms, the console must be initialized in a Unicode-friendly way. -See http://blogs.msdn.com/b/michkap/archive/2008/03/18/8306597.aspx for details -about how this might work. - -One way of initializing a Windows console for Unicode support, which seems to -work, is as follows: - -\snippet test.cpp WindowsUnicodeSetup - -See also Microsoft's documentation at http://msdn.microsoft.com/en-us/library/tw4k6df8.aspx . - -\page pubsub Publisher-subscriber functionality - -Topic objects are a base class that provides publisher-subscriber -features to subclasses. Most classes in logog descend from the -Topic class. - -Topics are capable of sending other topics (or themselves) to other -subscribers, as well as receiving another topic from a publisher. -See Topic::Send() and Topic::Receive() for more details. - -You can cause a Topic to send itself to its subscribers by calling -Topic::Transmit(). - -Topics can publish, unpublish, subscribe and unsubscribe themselves -from other topics. See Topic::Publish(), Topic::Unpublish(), -Topic::Subscribe(), Topic::Unsubscribe() for more details. - -Topics can also do all these tasks to lists of other topics. -See Topic::PublishToMultiple(), Topic::UnpublishToMultiple(), -Topic::SubscribeToMultiple(), Topic::UnsubscribeToMultiple(). - -\snippet test.cpp Subscription - -\page architecture Internal architecture - -The logog system uses a publisher-subscriber model in order to handle -message flow from source to destination. While the higher-level class -architecture takes care of typical message routing, the standard message -flow can be changed to support advanced logging models. - -A key base class is the Topic class. Topics contain strings and numeric -information representing a file name, line number, a free-form group -name, a free-form category name, and a free-form message string. Topics -know how to transmit and receive themselves to and from other topics, -but they don't know how to discover those other topics. They do know how -to negotiate with another topic in order to discover whether they should -subscribe to that other topic -- see Topic::CanSubscribeCheckTopic() for -details. Topics implement the core functionality of subscribing and -publishing. Topics can subscribe to multiple other topics, and they can -publish to multiple other topics. - -Some Topic behavior, especially the subscriber-publisher behavior and -cross-thread locking, is subsumed into the Node class. Nodes should -generally not be instanced by themselves, as they are not sufficiently -functional to be useful. - -Topics are subclassed into TopicSource and TopicSink classes. -TopicSources can only publish, and TopicSinks can only subscribe. - -A Target is a TopicSink that is capable of rendering its subscriptions -to a logical output device. Targets include the Cout, Cerr, and the -OutputDebug classes. To make logog send output to some arbitrary new -destination, create a new Target subclass and override the -Target::Output() method, and instance a new element of your class at the -top of your program. - -A Filter is a Topic that functions basically as a subscriber and a -publisher. It's used to limit the scope of incoming messages to a -particular type, group, or category. For example, a Filter may be used -to permit only messages with a level of LOGOG_LEVEL_WARN or higher to be -logged. Other messages are dropped. By default a filter will attempt to -subscribe itself to all existing Targets; however, this behavior may be -changed by overriding the Initialize() method within your Target -subclass, or by manually calling Target::Unpublish() on each Target that -you want the Filter to not publish to. - -This design permits more advanced logging models. For example, it's -possible to have two Filters, one which filters for error messages and -logs those to the console, versus informational and warning messages, -which are logged to a file. Note that the routing of any of the -higher-level classes such as Filter or Output by simply instantiating a -Topic and manually calling PublishTo() and SubscribeTo() to the desired -inputs and outputs. - -A Message is a sub-sub-class of TopicSource that knows how to publish -itself automatically to any outstanding Filter objects. A program will -typically instance a set of static Message objects and use them to -indicate execution of a certain point in the program. - -String types receive their own custom class. Since logog spends a lot of -time shuffling strings from class to class, this permits string copies -to be fast constant-time operations (a copy of pointers). - -All statically allocated elements are stored inside the Statics class. -This permits all items to be tracked and freed, thus assuring no memory -leaks. - -In order to support cross-platform, multithread-safe support, logog -implements a Thread class, a Timer class, and a Mutex class. These of -course can be customized to support future platforms. - -\page performance Performance topics - -Multiple memory allocations and frees are the bane of performance-oriented -code. STL is particularly naughty in this regard. - -To that end, logog attempts to do as few allocations as possible at run-time. -Message objects are allocated exactly once, when a message macro is run for -the first time. Publisher-subscriber negotiation occurs at this time -as well, which is when the pub-sub lists in the Filter objects get updated. -This process happens only once per message, regardless of the number of times -the message is invoked. Therefore, messages that are never executed never -allocate any memory, and the memory-allocation penalty for a message is incurred -exactly once, the first time the message is transmitted. - -A platform-specific vsprintf() type function is used to convert the varargs -in a message into a final destination string. I looked at this problem -for quite a while, and it seems that this method provides the best performance -guarantees without relying on a large external library, such as Boost, or -increasing the code size significantly. A template-based approach for -running vsprintf type functions would theoretically be faster than calling -vsprintf(); however, this would require the inclusion of a significant -amount of template-based code to handle all the possible situations that -vsprintf() must deal with. This would likely double the existing code size; -so I erred on the size of keeping logog smaller and more self-contained. - -If, after all that, you want to replace vsprintf() for your platform, it is -called in only one place in the logog source code (in String.cpp). - -Because logog spends so much time passing strings around, logog provides a -custom string class that internally represents strings as fixed buffers. -This helps reduce the repeated allocations and frees that std::string is notorious -for. - -Because most logging outputs can be slow, logog provides a LogBuffer class to -help with \ref deferredoutput . - -\page locking Multithread locking and mutexes - -The Mutex object is responsible for multithread safety in logog. All -platforms support a Mutex object. Only one thread may acquire -a Mutex object at one time. Other threads fall into a wait state until -the locking thread releases the Mutex. - -The ScopedLock object is a convenient way to represent a Mutex lock -as part of an object's auto scope. To use a ScopedLock, create -a Mutex lock on a known thread, then create a ScopedLock with the -previously defined Lock as a parameter. Code is guaranteed to be -single threaded within the scope of the ScopedLock. - -\snippet test.cpp SimpleLocking - -\page porting Porting logog - -Porting logog should be a straightforward affair, if you follow these -guidelines. - -First of all, you'll need to choose a flavor of operating system for -your platform. Nearly all OSes will fall into one of two flavors: -POSIX-like and Windows-like. platform.hpp tries to detect the local OS -and compile for it; you may need to change the detection logic for your -new platform. You'll need to set either LOGOG_FLAVOR_POSIX or LOGOG_FLAVOR_WINDOWS -before loading platform.hpp. - -The files containing platform dependent code are as follows. - -- platform.hpp. In addition to detecting the build flavor, platform.hpp -also sets some macros for STL usage. All STL calls are routed through -the macros in platform.hpp. As of this writing, the STL templates are -available in tr1; you may need to tweak this if you're depending on a C++x11 -compiler. - -\snippet platform.hpp STLTypes - -- mutex.hpp. You'll need to write macros for your own LOGOG_MUTEX_* -calls: - -\snippet mutex.hpp Mutex - -- thread.hpp. Write macros for LOGOG_THREAD, LOGOG_THREAD_CREATE and -LOGOG_THREAD_JOIN. Since logog does not actually initiate multiple threads, -this step can technically be skipped; however, unless threads are implemented -for a target platform, the unit tests will fail. - -\snippet thread.hpp Thread - -- timer.hpp. Add code for the Timer initializer and the Get() function. - -\snippet timer.cpp TimerGet - -Lastly, verify that unittest.cpp compiles and executes with a zero -return code. - -\page requirements Requirements - -logog assumes the existence of a C99 compliant C++ compiler. It uses -variadic macros in the C99 style, so any compiler that does not understand -__VA_ARGS__ style message passing will not work. The vast majority of -semi-modern compilers do. - -logog also has limited dependencies on STL. These dependencies are represented -by \#defines in the file platform.hpp. If your STL lacks support for any -of these containers, or if you're using another STL-like container system, -you may replace these \#defines and they will be used as logog's standard -containers. - -\snippet platform.hpp STLTypes - -\page supportedplatforms Supported platforms - -logog has been demonstrated to work with the following platforms: - -- Microsoft Visual Studio 2008 -- Microsoft Visual Studio 2010 (x64 and x86) -- Ubuntu 10.04 LTS -- MacOS 10.7 -- Xbox 360 -- Sony PlayStation 3 - -It is expected that logog should work on any reasonably -POSIX-compliant or Windows-compliant operating system with minimal changes. -Please see \ref porting for more information on support for alternative platforms. - -Since the console implementations are proprietary to the -platform holders, implementation details for these platforms have not been -publicly provided. However they may be provided to authorized and licensed -platform developers if the platform holder permits; contact us if you're a -licensed developer. - -\page license License agreement - -logog is Copyright (c) 2011, Gigantic Software. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -\page community Community and support - -Two mailing lists exist for general support and development discussion related to -logog. The first is for general logog questions and answers. This mailing list is -visible at -<a href="http://groups.google.com/group/logog">http://groups.google.com/group/logog</a>. -All users of logog are invited to join this mailing list for general discussion and help. - -\htmlonly -<table border=0 style="background-color: #fff; padding: 5px;" cellspacing=0> - <tr><td> - <img src="http://groups.google.com/intl/en/images/logos/groups_logo_sm.gif" - height=30 width=140 alt="Google Groups"> - </td></tr> - <tr><td style="padding-left: 5px"> - <b>Subscribe to Logog</b> - </td></tr> - <form action="http://groups.google.com/group/logog/boxsubscribe"> - <input type=hidden name="hl" value="en"> - <tr><td style="padding-left: 5px;"> - Email: <input type=text name=email> - <input type=submit name="sub" value="Subscribe"> - </td></tr> -</form> -<tr><td align=right> - <a href="http://groups.google.com/group/logog?hl=en">Visit this group</a> -</td></tr> -</table> -\endhtmlonly - -The second mailing list is for those who wish to actively participate in the -development of logog. The mailing list is visible at -<a href="http://groups.google.com/group/logog-devel">http://groups.google.com/group/logog-devel</a>. - -\htmlonly -<table border=0 style="background-color: #fff; padding: 5px;" cellspacing=0> - <tr><td> - <img src="http://groups.google.com/intl/en/images/logos/groups_logo_sm.gif" - height=30 width=140 alt="Google Groups"> - </td></tr> - <tr><td style="padding-left: 5px"> - <b>Subscribe to Logog Development</b> - </td></tr> - <form action="http://groups.google.com/group/logog-devel/boxsubscribe"> - <tr><td style="padding-left: 5px;"> - Email: <input type=text name=email> - <input type=submit name="sub" value="Subscribe"> - </td></tr> -</form> -<tr><td align=right> - <a href="http://groups.google.com/group/logog-devel">Visit this group</a> -</td></tr> -</table> -\endhtmlonly - -The best way to get help with a specific problem is to submit an issue -on Github. You can review a list of current issues, or submit your own, -<a href="https://github.com/johnwbyrd/logog/issues">here</a>. - -I'd REALLY like to get other developers involved in maintaining and further -developing the code. All sane developers encouraged to fork the <a href="https://github.com/johnwbyrd/logog">git repository</a> and -do bug fixing or new feature implementation. Contact me at jbyrd at giganticsoftware dot com if you need administrative privileges on the master logog branch; I'm -actively looking to incorporate positive changes. - -\page othersystems Other logging frameworks and systems - -Here are other logging and testing frameworks that have served as -inspiration (negative and/or positive) for logog. - -\section pantheios Panetheios - -http://www.pantheios.org - -Pantheios claims to compile to nothing in the final release case. -However, the Pantheios library depends on STLSoft, xTests, b64, and -shwild. - -\section marginean Petru Margenian's library in Dr. Dobb's Journal - -http://drdobbs.com/cpp/201804215 - -Another interesting effort at a portable logging implementation. -This library depends on an atomic_ops library from HP, and -it won't mention this fact until you try to compile it. Logging can be -enabled or disabled based on a single dimension ("level") and all -logging output ends up at stderr (there is no support for alternative -outputs). - -\section glog glog, the Google logging library - -http://code.google.com/p/google-glog/ - -Provides logging to stderr, a file or syslog. Their ostream-style -logging methodology creates two sets of macros: one for macros that -compile away in release mode, one for macros that don't. Interesting (if -non portable) support for stack walking. - -\section rlog rlog - -http://code.google.com/p/rlog/ - -Uses a publisher-subscriber model for all objects, and demonstrated that -this basic architecture was highly appropriate for logging. Does not -play nicely with custom allocators. - -\section loki Loki - -http://loki-lib.sourceforge.net/ - -The loki library demonstrates how to abstract platform-specific features -like mutexes and threads in remarkably few lines of code. - -*/ - -} - -/** \def LOGOG_UNICODE - ** Define this macro to enable Unicode support in logog. The logog library works either in Unicode mode or not -- - ** attempting to mix the two log types will have unexpected results. - **/ -#define LOGOG_UNICODE 1 - -/** \def LOGOG_INTERNAL_DEBUGGING - ** Define this macro to debug logog itself. This setting enables sanity checks on many logog functions. This setting - ** is not very useful for end users of logog. */ -#define LOGOG_INTERNAL_DEBUGGING 1 - -/** \def LOGOG_LEAK_DETECTION - ** Define this macro to check all memory allocations and frees. This setting will check against double allocations - ** and double deletes as well. Do not enable this on production code -- it'll slow down the performance considerably. - **/ - #define LOGOG_LEAK_DETECTION 1 - -/** \def LOGOG_REPORT_ALLOCATIONS - ** Define this macro to report on ALL allocations and frees that happen through logog. - ** Enable this if you get paid by lines of program output. */ -#define LOGOG_REPORT_ALLOCATIONS 1 - -/** \def LOGOG_COUT - ** This is equivalent to std::wcout if LOGOG_UNICODE is defined, and std::cout otherwise. - **/ - -/** \def LOGOG_CERR - ** This is equivalent to std::wcerr if LOGOG_UNICODE is defined, and std::cerr otherwise. - **/ diff --git a/ThirdParty/logog/doxyfile b/ThirdParty/logog/doxyfile deleted file mode 100644 index 371353e1c5609e7839cd0878d80c93607666f216..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/doxyfile +++ /dev/null @@ -1,1716 +0,0 @@ -# Doxyfile 1.7.4 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" "). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = logog - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer -# a quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "logger optimized for games" - -# With the PROJECT_LOGO tag one can specify an logo or icon that is -# included in the documentation. The maximum height of the logo should not -# exceed 55 pixels and the maximum width should not exceed 200 pixels. -# Doxygen will copy the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = doc - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful if your file system -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this -# tag. The format is ext=language, where ext is a file extension, and language -# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, -# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions -# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also makes the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = YES - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and -# unions are shown inside the group in which they are included (e.g. using -# @ingroup) instead of on a separate page (for HTML and Man pages) or -# section (for LaTeX and RTF). - -INLINE_GROUPED_CLASSES = NO - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = NO - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penalty. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will roughly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespaces are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = YES - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to -# do proper type resolution of all parameters of a function it will reject a -# match between the prototype and the implementation of a member function even -# if there is only one candidate or it is obvious which candidate to choose -# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen -# will still accept a match between prototype and implementation in such cases. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or macro consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and macros in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES =YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command <command> <input-file>, where <command> is the value of -# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. The create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. - -LAYOUT_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# The WARN_NO_PARAMDOC option can be enabled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file($line) : $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = include doc test - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh -# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py -# *.f90 *.f *.for *.vhd *.vhdl - -FILE_PATTERNS = *.dox *.c *.cpp *.hpp *.h - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = test/ include/ src/ - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command <filter> <input-file>, where <filter> -# is the value of the INPUT_FILTER tag, and <input-file> is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty or if -# non of the patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) -# and it is also possible to disable source filtering for a specific pattern -# using *.ext= (so without naming a filter). This option only has effect when -# FILTER_SOURCE_FILES is enabled. - -FILTER_SOURCE_PATTERNS = - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. - -REFERENCES_LINK_SOURCE = NO - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. Note that when using a custom header you are responsible -# for the proper inclusion of any scripts and style sheets that doxygen -# needs, which is dependent on the configuration options used. -# It is adviced to generate a default header using "doxygen -w html -# header.html footer.html stylesheet.css YourConfigFile" and then modify -# that header. Note that the header is subject to change so you typically -# have to redo this when upgrading to a newer version of doxygen or when changing the value of configuration settings such as GENERATE_TREEVIEW! - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that -# the files will be copied as-is; there are no commands or markers available. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. -# Doxygen will adjust the colors in the stylesheet and background images -# according to this color. Hue is specified as an angle on a colorwheel, -# see http://en.wikipedia.org/wiki/Hue for more information. -# For instance the value 0 represents red, 60 is yellow, 120 is green, -# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. -# The allowed range is 0 to 359. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. - -HTML_TIMESTAMP = YES - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = YES - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. - -GENERATE_DOCSET = NO - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = com.giganticsoftware.logog - -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. - -DOCSET_PUBLISHER_NAME = Gigantic Software - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - -QHP_NAMESPACE = com.giganticsoftware.logog - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - -QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> -# Qt Help Project / Custom Filters</a>. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> -# Qt Help Project / Filter Attributes</a>. - -QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. - -ECLIPSE_DOC_ID = com.giganticsoftware.logog - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values -# (range [0,1..20]) that doxygen will group on one line in the generated HTML -# documentation. Note that a value of 0 will completely suppress the enum -# values from appearing in the overview section. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax -# (see http://www.mathjax.org) which uses client side Javascript for the -# rendering instead of using prerendered bitmaps. Use this if you do not -# have LaTeX installed or if you want to formulas look prettier in the HTML -# output. When enabled you also need to install MathJax separately and -# configure the path to it using the MATHJAX_RELPATH option. - -USE_MATHJAX = NO - -# When MathJax is enabled you need to specify the location relative to the -# HTML output directory using the MATHJAX_RELPATH option. The destination -# directory should contain the MathJax.js script. For instance, if the mathjax -# directory is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the -# mathjax.org site, so you can quickly see the result without installing -# MathJax, but it is strongly recommended to install a local copy of MathJax -# before deployment. - -MATHJAX_RELPATH = http://www.mathjax.org/mathjax - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. - -SEARCHENGINE = YES - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a PHP enabled web server instead of at the web client -# using Javascript. Doxygen will generate the search PHP script and index -# file to put on the web server. The advantage of the server -# based approach is that it scales better to large projects and allows -# full text search. The disadvantages are that it is more difficult to setup -# and does not have live searching capabilities. - -SERVER_BASED_SEARCH = NO - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. -# Note that when enabling USE_PDFLATEX this option is only used for -# generating bitmaps for formulas in the HTML output, but not in the -# Makefile that is written to the output directory. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4 - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for -# the generated latex document. The footer should contain everything after -# the last chapter. If it is left blank doxygen will generate a -# standard footer. Notice: only use this tag if you know what you are doing! - -LATEX_FOOTER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include -# source code with syntax highlighting in the LaTeX output. -# Note that which sources are shown also depends on other settings -# such as SOURCE_BROWSER. - -LATEX_SOURCE_CODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = YES - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. -# This is useful -# if you want to understand what is going on. -# On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# pointed to by INCLUDE_PATH will be searched when a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = DOXYGEN LOGOG_UNICODE=1 LOGOG_INTERNAL_DEBUGGING=1 LOGOG_LEAK_DETECTION=1 LOGOG_REPORT_ALLOCATIONS=1 - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition that -# overrules the definition found in the source code. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all references to function-like macros -# that are alone on a line, have an all uppercase name, and do not end with a -# semicolon, because these will confuse the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option also works with HAVE_DOT disabled, but it is recommended to -# install and use dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is -# allowed to run in parallel. When set to 0 (the default) doxygen will -# base this on the number of processors available in the system. You can set it -# explicitly to a value larger than 0 to get control over the balance -# between CPU load and processing speed. - -DOT_NUM_THREADS = 0 - -# By default doxygen will write a font called Helvetica to the output -# directory and reference it in all dot files that doxygen generates. -# When you want a differently looking font you can specify the font name -# using DOT_FONTNAME. You need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = Helvetica - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will generate a graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are svg, png, jpg, or gif. -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the -# \mscfile command). - -MSCFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES diff --git a/ThirdParty/logog/include/api.hpp b/ThirdParty/logog/include/api.hpp deleted file mode 100644 index 6d98f4b343c987752c339b9fe4aad3022d93cc9d..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/api.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/** - * \file api.hpp Initialization and shutdown functions for logog. - */ - -#ifndef __LOGOG_API_HPP__ -#define __LOGOG_API_HPP__ - -namespace logog -{ -//! [INIT_PARAMS] -/** - * To initialize the memory manager with non-default values, allocate a temporary INIT_PARAMS structure, fill it with - * zeros, and then change the individual entries in the INIT_PARAMS struct before passing as a parameter to Initialize(). - * \sa Initialize - */ -struct INIT_PARAMS -{ - /** A pointer to a function that allocates memory. By default logog allocates using malloc(). Change this pointer - ** before passing to Initialize() to use your own custom memory allocator. - * \sa logog::Initialize() - */ - void *( *m_pfMalloc )( size_t ); - - /** A pointer to a function that frees memory. By default logog frees using free(). Change this pointer - * before passing to Initialize() to use your own custom memory allocator. - * \sa logog::Initialize() - */ - void ( *m_pfFree )( void * ); -}; -//! [INIT_PARAMS] - -/** Initializes the logog system. No logog calls or allocations may be made before calling this function; expect - * crashes if you haven't called this at the top of your program. - * \param params The address of an INIT_PARAMS structure you have already allocated on the heap, or NULL to - * use default values. - * \sa INIT_PARAMS - */ -extern int Initialize( INIT_PARAMS *params = NULL ); - -/** Shuts down the logog system and frees all memory allocated by logog. Memory still allocated by the logog system after Shutdown() indicates - ** a bug. - **/ -extern int Shutdown( ); - -} - -#endif // __LOGOG_API_HPP diff --git a/ThirdParty/logog/include/checkpoint.hpp b/ThirdParty/logog/include/checkpoint.hpp deleted file mode 100644 index 05c8ba1f7a43a06ad242bf0edd8fb93970bb3310..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/checkpoint.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/** - * \file checkpoint.hpp Representations of a program counter reaching a specific point in code. - */ - -#ifndef __LOGOG_CHECKPOINT_HPP__ -#define __LOGOG_CHECKPOINT_HPP__ - -namespace logog -{ -/** A checkpoint is a topic that fires when a specific section of code is executed. The first time a bit of - ** code is executed, a Checkpoint is instanced, and when the code is executed again, the Checkpoint is - ** reused. - **/ -class Checkpoint : public TopicSource -{ -public: - Checkpoint( const LOGOG_LEVEL_TYPE level = LOGOG_LEVEL_ALL, - const LOGOG_CHAR *sFileName = NULL, - const int nLineNumber = 0, - const LOGOG_CHAR *sGroup = NULL, - const LOGOG_CHAR *sCategory = NULL, - const LOGOG_CHAR *sMessage = NULL, - const double dTimestamp = 0.0f ); - - /** Sends the node in question. Optionally updates the timestamp in this checkpoint before sending the node. */ - virtual int Send( const Topic &node ); - -}; -} - -#endif // __LOGOG_CHECKPOINT_HPP_ diff --git a/ThirdParty/logog/include/const.hpp b/ThirdParty/logog/include/const.hpp deleted file mode 100644 index 2608447595d3e8034e054a0513522a28492acc4b..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/const.hpp +++ /dev/null @@ -1,90 +0,0 @@ -/** - * \file const.hpp Constants. - */ - -#ifndef __LOGOG_CONST_HPP__ -#define __LOGOG_CONST_HPP__ - -#ifndef LOGOG_FORMATTER_MAX_LENGTH -/** The maximum length of a single line that a formatter may output, in LOGOG_CHAR units. */ -#define LOGOG_FORMATTER_MAX_LENGTH ( 1024 * 16 ) -#endif - -#ifndef LOGOG_DEFAULT_LOG_BUFFER_SIZE -/** The default size of a RingBuffer object for buffering outputs. */ -#define LOGOG_DEFAULT_LOG_BUFFER_SIZE ( 4 * 1024 * 1024 ) -#endif - - -/** \addtogroup levelsettings Level Settings - ** These are level settings for logog. These settings are valid for the LOGOG_LEVEL compilation flag. To enable - ** all logog messages, use the compilation flag -DLOGOG_LEVEL=LOGOG_LEVEL_ALL. To disable all logog messages - ** (and effectively remove logog code from your executable) use the compilation flag -DLOGOG_LEVEL=LOGOG_LEVEL_NONE. - ** \sa LOGOG_LEVEL - ** @{ - **/ -//! [Level Constants] -#define LOGOG_LEVEL_NONE 0 -#define LOGOG_LEVEL_EMERGENCY 8 -#define LOGOG_LEVEL_ALERT 16 -#define LOGOG_LEVEL_CRITICAL 24 -#define LOGOG_LEVEL_ERROR 32 -#define LOGOG_LEVEL_WARN 40 -#define LOGOG_LEVEL_WARN1 48 -#define LOGOG_LEVEL_WARN2 56 -#define LOGOG_LEVEL_WARN3 64 -#define LOGOG_LEVEL_INFO 72 -#define LOGOG_LEVEL_DEBUG 80 -#define LOGOG_LEVEL_ALL 88 -//! [Level Constants] - -#define LOGOG_LEVEL_TYPE int - -#ifndef LOGOG_LEVEL -#define LOGOG_LEVEL LOGOG_LEVEL_DEBUG -#endif - -/** @} */ - -/** \addtogroup topicbitstype Topic Bits Type - * Bit flags representing whether a topic cares about a specific field or not. 1 = care, 0 = don't care. - * @{ - */ -//! [Topic Bits] -typedef enum -{ - TOPIC_LEVEL_FLAG = 0x01, - TOPIC_LINE_NUMBER_FLAG = 0x02, - TOPIC_FILE_NAME_FLAG = 0x04, - TOPIC_GROUP_FLAG = 0x08, - TOPIC_CATEGORY_FLAG = 0x10, - TOPIC_MESSAGE_FLAG = 0x20, - TOPIC_TIMESTAMP_FLAG = 0x40, - /** Bits 0 through TOPIC_COUNT turned on */ - TOPIC_ALL = 0x7f -} TopicBitsType; -//! [Topic Bits] - -/** @} */ - -typedef int TOPIC_FLAGS; - -//! [Topic Offsets] -/** Offsets within the m_vIntProps and m_vStringProps arrays for this topic. */ -typedef enum -{ - TOPIC_LEVEL = 0, - TOPIC_LINE_NUMBER = 1, - /** This must be the number of integer fields. */ - TOPIC_INT_COUNT = 2, - - TOPIC_FILE_NAME = 0, - TOPIC_GROUP = 1, - TOPIC_CATEGORY = 2, - TOPIC_MESSAGE = 3, - /** This must be the number of string fields for this topic. */ - TOPIC_STRING_COUNT = 4 -} TopicOffsetType; -//! [Topic Offsets] - -#endif // __LOGOG_CONST_HPP__ diff --git a/ThirdParty/logog/include/formatter.hpp b/ThirdParty/logog/include/formatter.hpp deleted file mode 100644 index b3b8378290a854c2720d57ad2e712b1cc118cebc..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/formatter.hpp +++ /dev/null @@ -1,89 +0,0 @@ -/** - * \file formatter.hpp Formats a topic into human-readable, compiler lookalike format. - */ - -#ifndef __LOGOG_FORMATTER_HPP__ -#define __LOGOG_FORMATTER_HPP__ - -namespace logog -{ - -#define LOGOG_TIME_STRING_MAX 80 - -/** A helper object for generating a current timestamp as a string. */ -class TimeStamp : public Object -{ -public: - /** Returns a pointer to a string representing the current time. Note! This pointer is only - ** valid while this object is valid -- if you destroy this object, this pointer is no longer - ** valid. - */ - const char *Get(); - -protected: - char cTimeString[ LOGOG_TIME_STRING_MAX ]; -}; - -/** Converts a topic into a human-readable string for printing or otherwise rendering to a target. */ -class Formatter : public Object -{ -public: - Formatter(); - - /** Causes this formatter to format a topic into its own m_sMessageBuffer field, and thence to - ** return a reference to that string. This function must be written to be efficient; it will be called - ** for every logging operation. It is strongly recommended not to allocate or free memory in this function. - **/ - virtual LOGOG_STRING &Format( const Topic &topic, const Target &target ) = 0; - - /** Causes the time of day to be rendered, if it needs to be rendered. This function is only supported on - ** ANSI builds, not Unicode, as the underlying functions are ANSI only. - */ - virtual void RenderTimeOfDay(); - - /** In the base case, this function calls GetTopicFlags() on the provided - ** topic in order to figure out which fields this formatter should render. - ** However, subclasses of the Formatter class can override this function in order - ** to change the default fields that the topic wants to be rendered. For example, - ** you can turn off the TOPIC_LINE_NUMBER_FLAG and the TOPIC_FILE_NAME_FLAG - ** in order to disable these fields from being rendered in your own Formatter - ** subclass. - ** \param topic The topic whose flags are to be determined - ** \return The set of flags representing the topics that really need to be rendered. - **/ - virtual TOPIC_FLAGS GetTopicFlags( const Topic &topic ); - - /** Should this formatter render the current time of day? */ - bool GetShowTimeOfDay() const; - - /** Sets whether this formatter renders the current time of day. */ - void SetShowTimeOfDay(bool val); - -protected: - const LOGOG_CHAR *ErrorDescription( const LOGOG_LEVEL_TYPE level ); - - LOGOG_STRING m_sMessageBuffer; - LOGOG_STRING m_sIntBuffer; - - bool m_bShowTimeOfDay; -}; - -class FormatterGCC : public Formatter -{ -public: - virtual LOGOG_STRING &Format( const Topic &topic, const Target &target ); - -}; - -class FormatterMSVC : public Formatter -{ -public: - virtual LOGOG_STRING &Format( const Topic &topic, const Target &target ); -}; - -extern Formatter &GetDefaultFormatter(); -extern void DestroyDefaultFormatter(); - -} - -#endif // __LOGOG_FORMATTER_HPP_ diff --git a/ThirdParty/logog/include/logog.hpp b/ThirdParty/logog/include/logog.hpp deleted file mode 100644 index e4c343c811f66843e7ab5b72e1a7e8712c204ee3..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/logog.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/** - * \file logog.hpp Main include file for logog logging functionality. Include this file to enable logging for your application. - */ - -#ifndef __LOGOG_HPP__ -#define __LOGOG_HPP__ - -/** \def LOGOG_UNICODE - ** Define this macro to enable Unicode support in logog. The logog library works either in Unicode mode or not -- - ** attempting to mix the two log types will have unexpected results. - **/ -// #define LOGOG_UNICODE 1 - -#include "const.hpp" -#include "platform.hpp" -#include "statics.hpp" -#include "object.hpp" -#include "timer.hpp" -#include "mutex.hpp" -#include "string.hpp" -#include "node.hpp" -#include "topic.hpp" -#include "formatter.hpp" -#include "target.hpp" -// #include "socket.hpp" -#include "checkpoint.hpp" -#include "api.hpp" -#include "message.hpp" -#include "macro.hpp" - -#ifdef LOGOG_UNIT_TESTING -#include "thread.hpp" -#include "unittest.hpp" -#endif - -#endif // __LOGOG_HPP_ diff --git a/ThirdParty/logog/include/macro.hpp b/ThirdParty/logog/include/macro.hpp deleted file mode 100644 index 97b661f8a3879f7fd1792f6cf0c8174b6efca5b8..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/macro.hpp +++ /dev/null @@ -1,240 +0,0 @@ -/** - * \file macro.hpp Macros for instantiation of a message. - */ - -#ifndef __LOGOG_MACRO_HPP__ -#define __LOGOG_MACRO_HPP__ - -namespace logog -{ -#ifdef LOGOG_USE_PREFIX -#define LOGOG_PREFIX LOGOG_ -#endif // LOGOG_USE_PREFIX - -#ifndef LOGOG_GROUP -/** This is the current group for created messages. Set this to NULL if you - * want messages to not be part of any specific group. - */ -#define LOGOG_GROUP NULL -#endif - -#ifndef LOGOG_CATEGORY -/** This is the current category for created messages. Set this to NULL if you - * want messages to not be part of any specific group. - */ -#define LOGOG_CATEGORY NULL -#endif - -/** When you have a macro replacement, the preprocessor will only expand the macros recursively - * if neither the stringizing operator # nor the token-pasting operator ## are applied to it. - * So, you have to use some extra layers of indirection, you can use the token-pasting operator - * with a recursively expanded argument. - */ -#define TOKENPASTE2(x, y) x ## y -/** \sa TOKENPASTE2(x, y) */ -#define TOKENPASTE(x, y) TOKENPASTE2(x, y) - -/** This macro is used when a message is instantiated without any varargs - * provided by the user. It locks a global mutex, creates the message, - * locks it, transmits it, and releases all locks. - */ -#define LOGOG_LEVEL_GROUP_CATEGORY_MESSAGE_NO_VA( level, group, cat, msg ) \ -{ \ - Mutex *___pMCM = &GetMessageCreationMutex(); \ - ___pMCM->MutexLock(); \ - static logog::Message *TOKENPASTE(_logog_,__LINE__) = new logog::Message( level, \ - LOGOG_CONST_STRING( __FILE__ ), \ - __LINE__ , \ - LOGOG_CONST_STRING( group ), \ - LOGOG_CONST_STRING( cat ), \ - msg; \ - ___pMCM->MutexUnlock(); \ - TOKENPASTE(_logog_,__LINE__)->m_Transmitting.MutexLock(); \ - TOKENPASTE(_logog_,__LINE__)->Transmit(); \ - TOKENPASTE(_logog_,__LINE__)->m_Transmitting.MutexUnlock(); \ -} - -/** This macro is used when a message is instantiated with varargs provided - * by the user. It locks a global mutex, creates the message, locks it, - * formats the message string inside the message, transmits it, - * and releases all locks. - * When logog is shut down, it may be started back up again later. Therefore, - * logog needs a way to flag all static Message pointers that they need - * to be recreated. We manually simulate a static Message pointer by - * implementing it via a static bool. The bool is turned on the first time - * this code is run. - * NOTE! A subtle race condition exists in the following code, that will ONLY occur - * if logog is shut down at the same moment that a log message is processed from - * another thread than the one calling the shutdown. The Message object could - * theoretically be destroyed from another thread just before it's locked - * in a thread that calls the Format() and Transmit() calls on it. I'm not - * sure if this is really a bug -- technically, this race condition will - * occur only if you are calling log messages right on top of the SHUTDOWN - * call from the main thread. - */ -#define LOGOG_LEVEL_GROUP_CATEGORY_MESSAGE( level, group, cat, formatstring, ... ) \ -{ \ - ::logog::Mutex *___pMCM = &::logog::GetMessageCreationMutex(); \ - ___pMCM->MutexLock(); \ - static bool TOKENPASTE(_logog_static_bool_,__LINE__) = false; \ - static logog::Message * TOKENPASTE(_logog_,__LINE__); \ - if ( TOKENPASTE(_logog_static_bool_,__LINE__) == false ) \ - { \ - TOKENPASTE(_logog_,__LINE__) = \ - new logog::Message( level, \ - LOGOG_CONST_STRING( __FILE__ ), \ - __LINE__ , \ - LOGOG_CONST_STRING( group ), \ - LOGOG_CONST_STRING( cat ), \ - LOGOG_CONST_STRING( "" ), \ - 0.0f, \ - & (TOKENPASTE(_logog_static_bool_,__LINE__)) ); \ - } \ - ___pMCM->MutexUnlock(); \ - /* A race condition could theoretically occur here if you are shutting down at the same instant as sending log messages. */ \ - TOKENPASTE(_logog_,__LINE__)->m_Transmitting.MutexLock(); \ - TOKENPASTE(_logog_,__LINE__)->Format( formatstring, ##__VA_ARGS__ ); \ - TOKENPASTE(_logog_,__LINE__)->Transmit(); \ - TOKENPASTE(_logog_,__LINE__)->m_Transmitting.MutexUnlock(); \ -} - -/** Calls LOGOG_LEVEL_GROUP_CATEGORY_MESSAGE with the current LOGOG_GROUP and - * LOGOG_CATEGORY setting. - */ -#define LOGOG_LEVEL_MESSAGE( level, formatstring, ... ) \ - LOGOG_LEVEL_GROUP_CATEGORY_MESSAGE( level, LOGOG_GROUP, LOGOG_CATEGORY, formatstring, ##__VA_ARGS__ ) - -/** Calls LOGOG_LEVEL_MESSAGE with the current LOGOG_LEVEL setting. */ -#define LOGOG_MESSAGE( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL, formatstring, ##__VA_ARGS__ ) - - -#if LOGOG_LEVEL >= LOGOG_LEVEL_DEBUG -/** Logs a message at the DEBUG reporting level. */ -#define LOGOG_DEBUG( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL_DEBUG, formatstring, ##__VA_ARGS__ ) -#else -#define LOGOG_DEBUG( formatstring, ... ) {}; -#endif - -#if LOGOG_LEVEL >= LOGOG_LEVEL_INFO -/** Logs a message at the INFO reporting level. */ -#define LOGOG_INFO( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL_INFO, formatstring, ##__VA_ARGS__ ) -#else -#define LOGOG_INFO( formatstring, ... ) {}; -#endif - -#if LOGOG_LEVEL >= LOGOG_LEVEL_WARN3 -/** Logs a message at the WARN3 reporting level. */ -#define LOGOG_WARN3( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL_WARN3, formatstring, ##__VA_ARGS__ ) -#else -#define LOGOG_WARN3( formatstring, ... ) {}; -#endif - -#if LOGOG_LEVEL >= LOGOG_LEVEL_WARN2 -/** Logs a message at the WARN2 reporting level. */ -#define LOGOG_WARN2( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL_WARN2, formatstring, ##__VA_ARGS__ ) -#else -#define LOGOG_WARN2( formatstring, ... ) {}; -#endif - -#if LOGOG_LEVEL >= LOGOG_LEVEL_WARN1 -/** Logs a message at the WARN1 reporting level. */ -#define LOGOG_WARN1( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL_WARN1, formatstring, ##__VA_ARGS__ ) -#else -#define LOGOG_WARN1( formatstring, ... ) {}; -#endif - -#if LOGOG_LEVEL >= LOGOG_LEVEL_WARN -/** Logs a message at the WARN reporting level. */ -#define LOGOG_WARN( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL_WARN, formatstring, ##__VA_ARGS__ ) -#else -#define LOGOG_WARN( formatstring, ... ) {}; -#endif - -#if LOGOG_LEVEL >= LOGOG_LEVEL_ERROR -/** Logs a message at the ERROR reporting level. */ -#define LOGOG_ERROR( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL_ERROR, formatstring, ##__VA_ARGS__ ) -#else -#define LOGOG_ERROR( formatstring, ... ) {}; -#endif - -#if LOGOG_LEVEL >= LOGOG_LEVEL_CRITICAL -/** Logs a message at the CRITICAL reporting level. */ -#define LOGOG_CRITICAL( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL_CRITICAL, formatstring, ##__VA_ARGS__ ) -#else -#define LOGOG_CRITICAL( formatstring, ... ) {}; -#endif - -#if LOGOG_LEVEL >= LOGOG_LEVEL_ALERT -/** Logs a message at the ALERT reporting level. */ -#define LOGOG_ALERT( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL_ALERT, formatstring, ##__VA_ARGS__ ) -#else -#define LOGOG_ALERT( formatstring, ... ) {}; -#endif - -#if LOGOG_LEVEL >= LOGOG_LEVEL_EMERGENCY -/** Logs a message at the EMERGENCY reporting level. */ -#define LOGOG_EMERGENCY( formatstring, ... ) \ - LOGOG_LEVEL_MESSAGE( LOGOG_LEVEL_EMERGENCY, formatstring, ##__VA_ARGS__ ) -#else -#define LOGOG_EMERGENCY( formatstring, ... ) {}; -#endif - -#define LOGOG_SET_LEVEL( level ) \ - ::logog::SetDefaultLevel( level ); - -/** Define this compilation flag if your compilation environment conflicts with - * any of the shorthand logging macros in macro.hpp. - */ -#ifndef LOGOG_USE_PREFIX -/* If you get compilation errors in this section, then define the flag LOGOG_USE_PREFIX during compilation, and these - * shorthand logging macros won't exist -- you'll need to use the LOGOG_* equivalents above. - */ -/* We can't use DEBUG in Win32 unfortunately, so we use DBUG for shorthand here. */ -//! [Shorthand] -/** \sa LOGOG_DEBUG */ -#define DBUG(...) LOGOG_DEBUG( __VA_ARGS__ ) -/** \sa LOGOG_INFO */ -#define INFO(...) LOGOG_INFO( __VA_ARGS__ ) -/** \sa LOGOG_WARN3 */ -#define WARN3(...) LOGOG_WARN3( __VA_ARGS__ ) -/** \sa LOGOG_WARN2 */ -#define WARN2(...) LOGOG_WARN2( __VA_ARGS__ ) -/** \sa LOGOG_WARN1 */ -#define WARN1(...) LOGOG_WARN1( __VA_ARGS__ ) -/** \sa LOGOG_WARN */ -#define WARN(...) LOGOG_WARN( __VA_ARGS__ ) -/** \sa LOGOG_ERROR */ -#define ERR(...) LOGOG_ERROR( __VA_ARGS__ ) -/** \sa LOGOG_ALERT */ -#define ALERT(...) LOGOG_ALERT( __VA_ARGS__ ) -/** \sa LOGOG_CRITICAL */ -#define CRITICAL(...) LOGOG_CRITICAL( __VA_ARGS__ ) -/** \sa LOGOG_EMERGENCY */ -#define EMERGENCY(...) LOGOG_EMERGENCY( __VA_ARGS__ ) -//! [Shorthand] -#endif - -/** Call this function to initialize logog and prepare for logging. - * \sa logog::Initialize() - */ -#define LOGOG_INITIALIZE(...) logog::Initialize( __VA_ARGS__ ); - -/** Call this function to shut down logog and release all memory allocated. - * \sa logog::Shutdown() - */ - -#define LOGOG_SHUTDOWN() logog::Shutdown(); - -} // namespace logog - -#endif // __LOGOG_MACRO_HPP_ diff --git a/ThirdParty/logog/include/message.hpp b/ThirdParty/logog/include/message.hpp deleted file mode 100644 index c7d7dc659c9f2ca706a99c34180712f727a01911..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/message.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/** - * \file message.hpp Messages; items transmitted to a log. - */ - -#ifndef __LOGOG_MESSAGE_HPP__ -#define __LOGOG_MESSAGE_HPP__ - -namespace logog -{ - -/** A message is a piece of text that's actually transmitted to outputs. Messages can be asked to - ** Transmit() themselves once they are created. - **/ -class Message : public Checkpoint -{ -public: - Message( const LOGOG_LEVEL_TYPE level = LOGOG_LEVEL_ALL, - const LOGOG_CHAR *sFileName = NULL, - const int nLineNumber = 0, - const LOGOG_CHAR *sGroup = NULL, - const LOGOG_CHAR *sCategory = NULL, - const LOGOG_CHAR *sMessage = NULL, - const double dTimestamp = 0.0f, - bool *bIsCreated = NULL ); - - virtual ~Message(); - - /** Causes this checkpoint to republish itself to all existing filters after - * unpublishing itself. This can be necessary if the message within this - * message has changed in such a way that the downstream Filter objects - * might react differently to it. - */ - virtual bool Republish(); - - Mutex m_Transmitting; - bool *m_pbIsCreated; -}; - -extern Mutex &GetMessageCreationMutex(); -extern void DestroyMessageCreationMutex(); - -} - - -#endif // __LOGOG_MESSAGE_HPP_ diff --git a/ThirdParty/logog/include/mutex.hpp b/ThirdParty/logog/include/mutex.hpp deleted file mode 100644 index c9916f0eaa568e0c486d84036526289c34b64782..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/mutex.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/** - * \file mutex.hpp Defines a mutual exclusion object for the current platform. - */ - -#ifndef __LOGOG_MUTEX_HPP__ -#define __LOGOG_MUTEX_HPP__ - -#ifdef LOGOG_FLAVOR_POSIX -#include <pthread.h> -#endif - -namespace logog -{ - -//! [Mutex] -#ifndef LOGOG_MUTEX - -#ifdef LOGOG_FLAVOR_WINDOWS -#define LOGOG_MUTEX(x) CRITICAL_SECTION (x); -#define LOGOG_MUTEX_INIT(x) InitializeCriticalSection (x) -#define LOGOG_MUTEX_DELETE(x) DeleteCriticalSection (x) -#define LOGOG_MUTEX_LOCK(x) EnterCriticalSection (x) -#define LOGOG_MUTEX_UNLOCK(x) LeaveCriticalSection (x) -#define LOGOG_MUTEX_CTOR(x) -#endif // LOGOG_FLAVOR_WINDOWS - -#ifdef LOGOG_FLAVOR_POSIX -#define LOGOG_MUTEX(x) pthread_mutex_t (x); -#define LOGOG_MUTEX_INIT(x) pthread_mutex_init(x, 0) -#define LOGOG_MUTEX_DELETE(x) pthread_mutex_destroy (x) -#define LOGOG_MUTEX_LOCK(x) pthread_mutex_lock (x) -#define LOGOG_MUTEX_UNLOCK(x) pthread_mutex_unlock (x) -#define LOGOG_MUTEX_CTOR(x) -#endif // LOGOG_FLAVOR_POSIX -#endif // LOGOG_MUTEX - -#ifndef LOGOG_MUTEX -#error You need to define mutex macros for your platform; please see mutex.hpp -#endif - -//! [Mutex] - -/** An object that can only be locked by one thread at a time. Implement the LOGOG_MUTEX_* functions for your platform - * to support the Mutex object. - * A mutex is intended to be used with the ScopedLock object to implement critical sections within logog. - * \sa ScopedLock - */ -class Mutex : public Object -{ -public: - Mutex(); - ~Mutex(); - /** Acquires a lock on the mutex. Only one thread is permitted to lock the mutex at one time. */ - void MutexLock(); - /** Releases the lock on the mutex. */ - void MutexUnlock(); - -protected: - Mutex(const Mutex &); - Mutex & operator = (const Mutex &); - - LOGOG_MUTEX( m_Mutex ) -}; - -/** Asserts a lock while this object exists and is in scope. A ScopedLock should be - * declared in "auto" format, typically on the stack. - */ -class ScopedLock : public Object -{ -public : - /** Instances and locks a ScopedLock. - * \param mutex The mutex to attempt to lock. Program execution halts at this point until the lock can be obtained. - */ - ScopedLock( Mutex &mutex ); - ~ScopedLock(); -protected: - /** A pointer to the lockable mutex. */ - Mutex *m_pMutex; - -private: - /* no default constructor */ - ScopedLock(); - /* no copy constructor */ - ScopedLock( const ScopedLock &other ); -}; - -#ifdef LOGOG_LEAK_DETECTION -extern Mutex s_AllocationsMutex; -extern void LockAllocationsMutex(); -extern void UnlockAllocationsMutex(); -#endif // LOGOG_LEAK_DETECTION - -extern Mutex &GetStringSearchMutex(); -extern void DestroyStringSearchMutex(); - -} - -#endif // __LOGOG_MUTEX_HPP_ diff --git a/ThirdParty/logog/include/node.hpp b/ThirdParty/logog/include/node.hpp deleted file mode 100644 index 8174635b4821c521d681d8b77c73a0bcc655bf06..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/node.hpp +++ /dev/null @@ -1,142 +0,0 @@ -/** - * \file node.hpp Base class for higher-level logog objects. - */ - -#ifndef __LOGOG_NODE_HPP__ -#define __LOGOG_NODE_HPP__ - -namespace logog -{ -/** The base class for most high-level logog objects. Represents the publisher-subscriber - ** model within logog. */ -class Node; - -/** An aggregation of nodes. Internally, we choose a set representation because we want to be able to traverse - ** the aggregation quickly while still looking up entries quickly. - **/ -typedef LOGOG_SET< Node *, std::less< Node * >, Allocator< Node * > > NodesType; - -/** A type that double inherits from NodesType and Mutex. A lockable NodesType. Handles the copy - ** case correctly. - **/ -class LockableNodesType : public NodesType, public Mutex -{ -public: - /** A LockableNodesType shouldn't copy the internal Mutex when it is copied, but it - ** should copy all the internal nodes. - **/ - LockableNodesType & operator = (const LockableNodesType &other); -}; - -extern LockableNodesType &GetStaticNodes( void ** pvLocation ); - -/** Returns a reference to the global nodes group. Allocates a new global node group if one does not already - ** exist. - */ -extern LockableNodesType &AllNodes(); - -/** Returns a reference to the group of nodes that are capable of subscribing. Allocates a new global subscriber - ** node group if one does not already exist. - */ -extern LockableNodesType &AllSubscriberNodes(); - -/** Returns a reference to the group of nodes that are capable of both subscribing as well as publishing. Allocates a new global subscriber - ** node group if one does not already exist. - */ -extern LockableNodesType &AllFilters(); - -/** Returns a reference to the group of nodes that represent terminals in the graph, i.e. nodes that can't publish. */ -extern LockableNodesType &AllTargets(); - -class Node : public Object -{ -public: - - /** All nodes self-register as part of the all-nodes database. */ - Node(); - - ~Node(); - - /** Call this function immediately after creating a node (or any of the children of the node class.) This function currently - ** registers the node as part of the list of subscriber nodes, if this node may in fact subscribe. - ** If this node is capable of subscribing at all, then this function registers this node as a possible subscriber. - ** Doing this helps to keep down the number of nodes we search, when we are determining which nodes a new node - ** might subscribe to. We have to do this registration as a second step, after the node is completely - ** initialized, as subscriberness is determined late in initialization. - **/ - virtual void Initialize(); - - /** Can a node send notifications? By default they can; later subclasses may not be able to. */ - virtual bool CanPublish() const; - /** Can a node receive notifications? By default they can; later subclasses may not be able to. */ - virtual bool CanSubscribe() const; - /** Is this node interested in receiving notifications from another topic? */ - virtual bool CanSubscribeTo( const Node & ); - - /** In order to avoid bringing in a bunch of RTTI stuff, we permit nodes to be asked whether they're topics or not */ - virtual bool IsTopic() const; - - /** Causes this node to begin publishing events to the given subscriber. - ** \param subscriber The node to receive published events - ** \return true if the request was successful, false if the subscriber was already subscribed - **/ - virtual bool PublishTo( Node &subscriber ); - - /** Causes this node to attempt to publish to some other nodes. */ - virtual bool PublishToMultiple( LockableNodesType &nodes ); - - /** Causes this node to stop publishing events to this subscriber. - ** \param subscriber The node to stop receiving events - ** \return true if successful, false if the subscriber was not being published to in the first place - **/ - virtual bool UnpublishTo( Node &subscriber ); - - /** Causes this node to attempt to unpublish to some other nodes. */ - virtual bool UnpublishToMultiple( LockableNodesType &nodes ); - - /** Causes this node to start receiving events from the given publisher. - ** \param publisher The node to start receiving events from - ** \return true if successful, false if the publisher was already subscribed - **/ - virtual bool SubscribeTo( Node &publisher ); - - /** Causes this node to attempt to subscribe to some other nodes. */ - virtual bool SubscribeToMultiple( LockableNodesType &nodes ); - - - /** Causes this node to unsubscribe from the given publisher's events. - ** \param publisher The publisher to unsubscribe from - ** \return true if successful, false if the node was already unsubscribed - **/ - virtual bool UnsubscribeTo( Node &publisher ); - - /** Causes this node to attempt to unsubscribe to some other nodes. */ - virtual bool UnsubscribeToMultiple( LockableNodesType &nodes ); - - void Clear(); - - - /** A pointer to any custom data you need to store for a node. */ - void *m_pUserData1; - - /** A pointer to any custom data you need to store for a node. */ - void *m_pUserData2; - -protected: - /** A bunch of nodes that are interested in what this node has to report. */ - LockableNodesType m_Subscribers; - - /** A bunch of nodes that this node interested in hearing from. */ - LockableNodesType m_Publishers; -}; - -extern void DestroyNodesList( void **pvList ); - -/** Destroys all nodes currently recorded. This happens at shutdown time. NOTE! If you have allocated - ** your own logog items and free them yourself AFTER this call, exciting crashes will occur. - **/ -extern void DestroyAllNodes(); - -} - -#endif // __LOGOG_NODE_HPP_ diff --git a/ThirdParty/logog/include/object.hpp b/ThirdParty/logog/include/object.hpp deleted file mode 100644 index 2ecbf5806dae9e7c96f6406c677a426caeedb0c0..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/object.hpp +++ /dev/null @@ -1,221 +0,0 @@ -/** - * \file object.hpp Base class for all allocated logog objects. - */ - -#ifndef __LOGOG_OBJECT_HPP__ -#define __LOGOG_OBJECT_HPP__ - -namespace logog -{ - -#ifdef LOGOG_LEAK_DETECTION -/** Iteration over an unordered map is slow, but we only do it at shutdown time. Access to a lookup or insert - ** is very fast. Additionally, we do not allocate leak detection records from our own heap; it saves us from - ** doing a recursive allocation. - **/ -typedef void *PointerType; - -/** A type describing the currently outstanding memory allocations. Note that this type does not inherit from - ** Object, because to do so would create an infinite recursion when memory is allocated. - **/ -typedef LOGOG_UNORDERED_MAP< PointerType, size_t > AllocationsType; - -/** All currently outstanding memory allocations, including their size. */ -extern AllocationsType s_Allocations; - -/** A global function to lock the global allocations mutex. We must do this as a static - ** void because Mutexes depend on Objects. This should probably belong in a class, but then - ** we get recursive class definitions. - ** */ -extern void LockAllocationsMutex(); - -/** A global function to unlock the global allocations mutex. We must do this as a static - ** void because Mutexes depend on Objects. */ -extern void UnlockAllocationsMutex(); -#endif // LOGOG_LEAK_DETECTION - -#ifdef new -#define LOGOG_PREVIOUS_DEFINITION_OF_NEW new -#undef new -#endif -#ifdef delete -#define LOGOG_PREVIOUS_DEFINITION_OF_DELETE delete -#undef delete -#endif //delete - -/** Base class for all objects allocated with logog. */ -class Object -{ -public: - Object(); - /* Some builds complain about ~Object() being virtual... sorry lint :( */ - virtual ~Object(); - /** Initializes an object of size new. */ - void *operator new( size_t nSize ); - /** Initializes an array of size new. */ - void *operator new[](size_t nSize); - - /* There's a wonderful behavior in Windows MFC in debug builds that causes it - * to attempt to redefine NEW with a macro if we're compiling in debug mode - * and we're using Gdiplus as well. In that case, Windows attempts to redefine - * new with a macro for everything that has a new. This wonderful behavior - * is worked around here. See http://support.microsoft.com/kb/317799/EN-US/ - * and http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/0df13145-670e-4070-b0a1-61794b20dff7 - * for more exciting information. - */ -#ifdef _DEBUG -#ifdef LOGOG_FLAVOR_WINDOWS - void* operator new(size_t nSize, LPCSTR lpszFileName, int nLine); - void* operator new[](size_t nSize, LPCSTR lpszFileName, int nLine); - void operator delete(void* ptr, LPCSTR lpszFileName, int nLine); - void operator delete[](void* ptr, LPCSTR lpszFileName, int nLine); -#endif // LOGOG_FLAVOR_WINDOWS -#endif // _DEBUG - - /** Deletes an object pointed to by ptr. */ - void operator delete( void *ptr ); - /** Deletes an object array pointed to by ptr. */ - void operator delete[]( void *ptr ); - - /** Allocates nSize bytes of memory. You must call logog::Initialize() before calling this function. - * \sa Initialize() - */ - static void *Allocate( size_t nSize ); - - /** Deallocate a pointer previously acquired by Allocate(). */ - static void Deallocate( void *ptr ); - }; - -#ifdef LOGOG_PREVIOUS_DEFINITION_OF_NEW -#define new LOGOG_PREVIOUS_DEFINITION_OF_NEW -#endif - -#ifdef LOGOG_PREVIOUS_DEFINITION_OF_DELETE -#define delete GA_PREVIOUS_DEFINITION_OF_DELETE -#endif - -/** An STL-compatible allocator which redirects all memory requests to the logog allocator. Used for all STL-like classes within logog. */ -template <class T> -class Allocator -{ -public: - /** Memory allocation size type. */ - typedef size_t size_type; - /** Memory allocation comparison type. */ - typedef ptrdiff_t difference_type; - /** A pointer to T type. */ - typedef T *pointer; - /** A const pointer to T type. */ - typedef const T *const_pointer; - /** A reference to T type. */ - typedef T &reference; - /** A const reference to T type. */ - typedef const T &const_reference; - /** A value type (T itself). */ - typedef T value_type; - - Allocator() {} - /** Not implemented here -- required by the STL standard though. */ - Allocator( const Allocator & ) {} - - /** Allocate and return n value_types of memory through this allocator. Requires that logog::Initialize() has been called. */ - pointer allocate( size_type n, const void * = 0 ) - { - T *t = ( T * ) Object::Allocate( n * sizeof( value_type ) ); - return t; - } - - /** Frees memory previously allocated by allocate(). */ - void deallocate( void *p, size_type ) - { - if ( p ) - { - Object::Deallocate( p ); - } - } - - /** Returns the address of a reference to T. */ - pointer address( reference x ) const - { - return &x; - } - /** Returns the address of a const reference to T. */ - const_pointer address( const_reference x ) const - { - return &x; - } - /** STL required override for = operator. */ - Allocator<T>& operator=( const Allocator & ) - { - return *this; - } - /** Constructs a new T at location p with value val. */ - void construct( pointer p, const T &val ) - { - new(( T * ) p ) T( val ); - } - /** Destroys a T at location p. */ - void destroy( pointer p ) - { -#ifdef LOGOG_FLAVOR_WINDOWS - // MSVC tends to complain unless we reference this pointer here. - p; -#endif // LOGOG_FLAVOR_WINDOWS - p->~T(); - } - - /** The largest size of an object that can be allocated with this allocator. */ - size_type max_size() const - { - return size_t( -1 ); - } - - /** Rebinding to permit allocations of unknown types. Part of std::allocator definition. - * \param other The other "unknown" type to be permitted access to this allocator */ - template <class U> - struct rebind - { - /** The "other" class that will use this allocator for its allocation. */ - typedef Allocator<U> other; - }; - - /** Required by STL -- unused here. */ - template <class U> - Allocator( const Allocator<U>& ) {} - - /** Permit this allocator to be used for assignment in other classes */ - template <class U> - Allocator &operator=( const Allocator<U>& ) - { - return *this; - } -}; - -/* All specializations of this allocator are interchangeable. */ -template <class T1, class T2> -bool operator== ( const Allocator<T1>&, - const Allocator<T2>& ) -{ - return true; -} -template <class T1, class T2> -bool operator!= ( const Allocator <T1>&, - const Allocator<T2>& ) -{ - return false; -} - -// - -/** Returns the current number of outstanding memory allocations in logog. Returns -1 iff LOGOG_LEAK_DETECTION - ** has not been defined at compile time. - **/ -extern int MemoryAllocations(); - -/** Sends a report to cout describing the current memory allocations that exist. Returns the outstanding number of - ** memory allocations, or -1 iff LOGOG_LEAK_DETECTION is defined. - **/ -extern int ReportMemoryAllocations(); - -} -#endif // __LOGOG_OBJECT_HPP diff --git a/ThirdParty/logog/include/platform.hpp b/ThirdParty/logog/include/platform.hpp deleted file mode 100644 index 67415bd85bde413709a17bbb5d005ade139c1efc..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/platform.hpp +++ /dev/null @@ -1,195 +0,0 @@ -/** - * \file platform.hpp Platform specific detection and defines, including STL overrides - */ - -#ifndef __LOGOG_PLATFORM_HPP__ -#define __LOGOG_PLATFORM_HPP__ - -#ifdef DOXYGEN -/** Set this compilation flag to 1 to indicate that this is a Windows-like platform, e.g. Win32, Win64, Xbox 360, etc. */ -#define LOGOG_FLAVOR_WINDOWS 1 -/** Set this compilation flag to 1 to indicate that this is a Posix-like platform, e.g. Linux, PS3, etc. */ -#define LOGOG_FLAVOR_POSIX 1 -#endif - -#ifndef LOGOG_FLAVOR_WINDOWS -#ifndef LOGOG_FLAVOR_POSIX - -/* The user hasn't told us which flavor we're running on, so we must make a guess as to which platform is valid. */ - -/* If this is MSVC, then it's Windows like */ -#ifdef _MSC_VER -#define LOGOG_FLAVOR_WINDOWS 1 -#endif // _MSC_VER - -/* gcc probably means Posix */ -#ifdef __GNUC__ -#define LOGOG_FLAVOR_POSIX 1 -#endif - -#ifdef __CYGWIN__ -#ifdef LOGOG_UNICODE -#error LOGOG_UNICODE not supported on Cygwin platform because Cygwin does not support vsnwprintf -#endif -/* Cygwin lacks vsnprintf support in headers but it's in the libraries. First we - * need to define the constants size_t and va_list, then define vsnprintf */ -#include <cstdio> -#include <cstdlib> -#include <cstdarg> -extern int vsnprintf(char *str, size_t size, const char *format, va_list ap); -#define LOGOG_USE_TR1 1 -#endif // __CYGWIN__ - -#ifdef __linux__ -#define LOGOG_USE_TR1 1 -#endif - -#ifdef __APPLE__ -#ifndef __clang__ -#define LOGOG_USE_TR1 1 -#else -#if !(__has_include(<unordered_map>)) -#define LOGOG_USE_TR1 1 -#endif // !(__has_include(<unordered_map>)) -#endif // __clang -#endif // __APPLE__ - -/* Detect IBM's XL C++ */ -#ifdef __IBMCPP__ -// Enable use of TR1 unorderd_map etc. -#define __IBMCPP_TR1__ 1 -#ifdef __PPC__ -#define LOGOG_FLAVOR_POSIX 1 -#endif // __PPC__ -#endif // __IBMCPP__ - -/* If we've recognized it already, it's a relatively modern compiler */ -#if defined( LOGOG_FLAVOR_WINDOWS ) || defined( LOGOG_FLAVOR_POSIX ) -#define LOGOG_HAS_UNORDERED_MAP 1 -#endif // defined(...) - -/* PS3 */ -#ifdef SN_TARGET_PS3 -#include "proprietary/ps3.hpp" -#endif - -#endif // LOGOG_FLAVOR_POSIX -#endif // LOGOG_FLAVOR_WINDOWS - -#ifdef LOGOG_FLAVOR_WINDOWS -/* Detect Xbox 360 */ -#if _XBOX_VER >= 200 -#include "proprietary/xbox360.hpp" -#else -/* Windows has been detected. */ - -/** Microsoft's CRT library has its own leak detection mechanism. If you don't trust logog's - ** LOGOG_LEAK_DETECTION, you can enable LOGOG_LEAK_DETECTION_WINDOWS to enable - ** Microsoft's version. This really doesn't belong in platform.hpp -- feel - ** free to refactor this into a Windows-specific header. - **/ -#ifdef LOGOG_LEAK_DETECTION_WINDOWS -#define _CRTDBG_MAP_ALLOC -#include <stdlib.h> -#include <crtdbg.h> - -#ifdef _DEBUG -#ifndef DBG_NEW -#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ ) -#define new DBG_NEW -#endif -#endif // _DEBUG -#endif // LOGOG_LEAK_DETECTION_WINDOWS - -#include "windows.h" -#endif // _XBOX_VER -#endif // LOGOG_FLAVOR_WINDOWS - -#ifndef LOGOG_FLAVOR_WINDOWS -#ifndef LOGOG_FLAVOR_POSIX -#error Platform flavor not detected. Please see platform.hpp to configure this platform. -#endif -#endif - -// For the FILE type. -#include <cstdio> -// For POSIX file access. -#include <cstdlib> -// For Ubuntu 11 and ptrdiff_t -#include <cstddef> - -#include <ctime> - -#if defined(LOGOG_LEAK_DETECTION) || defined(LOGOG_INTERNAL_DEBUGGING) -#include <cstdio> -#include <iostream> -#endif // LOGOG_LEAK_DETECTION || LOGOG_INTERNAL_DEBUGGING - -#ifdef LOGOG_FLAVOR_POSIX -#include <sys/time.h> -// for uint64_t -#include <inttypes.h> -#include <wchar.h> -// for strstr support -#include <cstring> -#endif - -// For Unicode support -#include <typeinfo> - -/* ----------------------------------------------------------- */ -/* Here's the stuff your compiler may have a problem with... */ - -//! [STLTypes] - -/** The definition for a hash type in logog. You can replace it here with your own set compatible class if needed. */ -#define LOGOG_HASH std::tr1::hash -/** The definition for an unordered map type in logog. You can replace it here with your own unordered_map compatible class if needed. */ - -#ifdef LOGOG_HAS_UNORDERED_MAP -#ifdef LOGOG_USE_TR1 -#include <tr1/unordered_map> -#else -#include <unordered_map> -#endif // LOGOG_USE_TR1 -#ifdef _GLIBCXX_UNORDERED_MAP -#define LOGOG_UNORDERED_MAP std::unordered_map -#else // _GLIBCXX_UNORDERED_MAP -#define LOGOG_UNORDERED_MAP std::tr1::unordered_map -#endif // _GLIBCXX_UNORDERED_MAP -#else // LOGOG_HAS_UNORDERED_MAP -#include <hash_map> -#define LOGOG_UNORDERED_MAP std::hash_map -#endif // LOGOG_HAS_UNORDERED_MAP - -/** An internal consistency error has been detected in logog. */ -#define LOGOG_INTERNAL_FAILURE abort(); - -/* ----------------------------------------------- */ -/* Here's the stuff that's pretty standard in STL by now. */ - -/** The definition for a pair type in logog. You can replace it here with your own pair compatible class if needed. */ -#define LOGOG_PAIR std::pair -#include <list> -/** The definition for a list type in logog. You can replace it here with your own list compatible class if needed. */ -#define LOGOG_LIST std::list -#include <vector> -/** The definition for a vector type in logog. You can replace it here with your own vector compatible class if needed. */ -#define LOGOG_VECTOR std::vector -#include <set> -/** The definition for a set type in logog. You can replace it here with your own set compatible class if needed. */ -#define LOGOG_SET std::set -/** The definition for STL "equal to" in logog. You can replace it here with your own set compatible class if needed. */ -#define LOGOG_EQUAL_TO std::equal_to - -//! [STLTypes] - -/** The default port number that logog uses to communicate via TCP/UDP */ -#define LOGOG_DEFAULT_PORT 9987 - -/** We use va_list for formatting messages. */ -#include <cstdarg> - - - -#endif // __LOGOG_PLATFORM_HPP diff --git a/ThirdParty/logog/include/socket.hpp b/ThirdParty/logog/include/socket.hpp deleted file mode 100644 index 8417eeb89f9d12328012e28419bc6eb405a9be0e..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/socket.hpp +++ /dev/null @@ -1,150 +0,0 @@ -/** - * \file socket.hpp Cross-platform socket abstractions - */ - -/** - * \todo Socket support is unfinished and is not working yet. Please review socket.hpp if you'd like to implement - * a cross-platform socket abstraction. - */ -#ifndef __LOGOG_SOCKET_HPP_ -#define __LOGOG_SOCKET_HPP_ - -#ifdef LOGOG_FLAVOR_WINDOWS -#pragma comment(lib, "wsock32.lib") -#endif - -#include <memory.h> - -namespace logog -{ -/** A sending or receiving socket to be used as a target. */ -class Socket : public Target -{ -public: - static int Initialize() - { - static bool bInitialized = false; - - if ( !bInitialized ) - { -#ifdef LOGOG_FLAVOR_WINDOWS - WORD wVersionRequested; - WSADATA wsaData; - int err; - wVersionRequested = MAKEWORD( 2, 2 ); - - err = WSAStartup( wVersionRequested, &wsaData ); - - if ( err != 0 ) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - LOGOG_COUT << _LG("WSAStartup failed with error: ") << err << endl; -#endif - return 1; - } - -#endif - } - - bInitialized = true; - - return 0; - } - - static void Shutdown() - { -#ifdef LOGOG_FLAVOR_WINDOWS - WSACleanup(); -#endif - } - - static const int MAXHOSTNAME = 255; - - Socket( - int type = SOCK_STREAM, - int port = LOGOG_DEFAULT_PORT - ) - { - m_Socket = -1; - m_nType = type; - m_nPort = port; - } - - virtual void Close() - { -#ifdef LOGOG_FLAVOR_WINDOWS - closesocket( m_Socket ); -#endif -#ifdef LOGOG_FLAVOR_POSIX - close( m_Socket ); -#endif - } - -#ifdef NYI - virtual int Create( int type, - int port ) - { - char myname[MAXHOSTNAME+1]; - int err; - struct sockaddr_in sa; - struct hostent *hp; - - memset( &sa, 0, sizeof( struct sockaddr_in ) ); /* clear our address */ - gethostname( myname, MAXHOSTNAME ); /* who are we? */ - hp= gethostbyname( myname ); /* get our address info */ - - if ( hp == NULL ) /* we don't exist !? */ - return -1; - - sa.sin_family= hp->h_addrtype; /* this is our host address */ - sa.sin_port= (u_short)htons( (u_short)port ); /* this is our port number */ - - if (( m_Socket = socket( AF_INET, type, 0 ) ) < 0 ) /* create socket */ - return -1; - - if ( bind( m_Socket, (struct sockaddr*) &sa, sizeof( struct sockaddr_in ) ) < 0 ) - { - Close(); - return -1; - } - - if (( err = SetNonBlocking() ) != 0 ) - return err; - } - -#endif // NYI - - virtual int SetNonBlocking() - { - int err; - -#ifdef LOGOG_FLAVOR_POSIX - int flags; - flags = socket_fcntl( m_Socket, F_GETFL, 0 ); - flags |= O_NONBLOCK; - err = socket_fcntl( m_Socket, F_SETFL, flags ); -#endif - -#ifdef LOGOG_FLAVOR_WINDOWS - unsigned long parg; - parg = 1; - err = ioctlsocket( m_Socket, FIONBIO, &parg ); -#endif - return err; - } - - virtual int Output( const LOGOG_STRING &output ) = 0; - -protected: - int m_Socket; - int m_nType; - int m_nPort; -}; - -class SocketServer : Socket -{ - -}; -} - -#endif // __LOGOG_CHECKPOINT_HPP_ diff --git a/ThirdParty/logog/include/statics.hpp b/ThirdParty/logog/include/statics.hpp deleted file mode 100644 index 938bd3d23a6f96921275a5aafe3501ad4b0780a6..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/statics.hpp +++ /dev/null @@ -1,74 +0,0 @@ -/*! - * \file statics.hpp Static variables simultaneously assigned for all instances of logog. - */ - -#ifndef __LOGOG_STATICS_HPP__ -#define __LOGOG_STATICS_HPP__ - - -namespace logog -{ - -class Timer; -class Formatter; -class Target; -class Mutex; - -extern void DestroyAllNodes(); -extern void DestroyGlobalTimer(); -extern void DestroyDefaultFormatter(); -extern void DestroyStringSearchMutex(); -extern void DestroyMessageCreationMutex(); - -/* Technically this information should be in node.hpp but statics is responsible for - * this global list. - */ -class Statics -{ -public: - /** A pointer to the malloc() compatible function used by logog. See logog::Initialize() - ** for more details. */ - void *(*s_pfMalloc)( size_t ); - /** A pointer to the free() compatible function used by logog. See logog::Initialize() - ** for more details. */ - void (*s_pfFree)( void * ); - /** Pointers to all the currently existing nodes in the network. */ - void *s_pAllNodes; - /** Pointers to only those nodes that are capable of subscribing. */ - void *s_pAllSubscriberNodes; - /** Pointers to only those nodes that are capable of subscribing and publishing. */ - void *s_pAllFilterNodes; - /** Pointers to the group of all valid targets. */ - void *s_pAllTargets; - /** Pointer to the default filter, if any. */ - void *s_pDefaultFilter; - /** The default global shared timer. All events are generally in reference to this timer, though yoy may create your own timers. */ - Timer *s_pTimer; - /** A lock on the KMP search for all strings. Prevents mutex explosions. */ - void *s_pStringSearchMutex; - /** A lock for creating messages. Prevents dual message creation from multiple threads. */ - Mutex *s_pMessageCreationMutex; - /** The default Formatter for all targets. Targets may use their individual formatters as well if preferred. */ - Formatter *s_pDefaultFormatter; - /** The number of sockets created. */ - int s_nSockets; - /** A pointer to this object; used for final destruction. */ - Statics *s_pSelf; - - Statics(); - ~Statics(); - - /** Resets all statics to startup values. Releases memory allocated by statics. */ - void Reset(); - -}; - -extern Statics &Static(); - -/** Destroys the Static() structure. Calls to Static() after calling DestroyStatic() will probably crash your - ** program. - */ -extern void DestroyStatic(); - -} -#endif // __LOGOG_STATICS_HPP diff --git a/ThirdParty/logog/include/string.hpp b/ThirdParty/logog/include/string.hpp deleted file mode 100644 index e069b3a26fc939f1163416b57e45710dea797a9e..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/string.hpp +++ /dev/null @@ -1,115 +0,0 @@ -/** - * \file string.hpp Defines the logog string class. - */ -#ifndef __LOGOG_STRING_HPP__ -#define __LOGOG_STRING_HPP__ - -/** \def LOGOG_UNICODE - ** Define this typedef in order to support wide characters in all logog strings. - ** \sa _LG - ** */ - -#ifdef LOGOG_UNICODE -/** logog has detected Unicode; therefore a LOGOG_CHAR is a wide character. */ -typedef wchar_t LOGOG_CHAR; -/** This is a naughty little hack. If we're using Unicode, then we append an - * L to your const string. However, we have several situations in which that string will actually be a NULL or 0 - * value in code, and the string will be rendered as L0 or LNULL. In that case, we catch it with yet another - * macro. Hacky, but seems to do the trick. Beware of conflicts with existing code though...! - */ -#define L0 (const LOGOG_CHAR *)'\0' -#define LNULL (const LOGOG_CHAR *)'\0' -#define L__null (const LOGOG_CHAR *)'\0' - -/* Two indirect references are necessary in order to expand a string and append the L to it. */ -#define LOGOG_CONST_STRING_INDIRECT(x) L ## x -/* This macro will cause a const string to be stored as a Unicode string on a Unicode build. */ -#define LOGOG_CONST_STRING(x) LOGOG_CONST_STRING_INDIRECT(x) -#define LOGOG_COUT std::wcout -#define LOGOG_CERR std::wcerr - -#else // LOGOG_UNICODE - -/** logog has not detected Unicode; therefore a LOGOG_CHAR is simply a char. */ -typedef char LOGOG_CHAR; -/** This macro will cause a const string to be stored as an ANSI string on an ANSI build, and as a Unicode string - * on a Unicode build. - */ -#define LOGOG_CONST_STRING(x) (x) -#define LOGOG_COUT std::cout -#define LOGOG_CERR std::cerr -#endif // LOGOG_UNICODE - -/** If this constant is defined, then you can use the shorthand macro _LG in your code to represent a constant - * string. - */ -#ifndef LOGOG_USE_PREFIX -/** The _LG() macro is defined only if LOGOG_USE_PREFIX is not defined. _LG() can be used to describe - ** a const string that is compiled to either as Unicode - * or ANSI, based on the setting of the LOGOG_UNICODE flag. - * _LG() is not needed if you don't need Unicode support. If you want your messages to work with both Unicode - * as well as ANSI builds of logog, preface them like this: _LG("This const string works on Unicode as well as ANSI.") - */ -#define _LG( x ) LOGOG_CONST_STRING( x ) -#endif - -namespace logog -{ - class String : public Object - { - public: - - static const size_t npos = (size_t) -1; - - String(); - virtual ~String(); - virtual void Free(); - static size_t Length( const LOGOG_CHAR *chars ); - - String( const String &other ); - String( const LOGOG_CHAR *pstr ); - String & operator =( const String & other); - String & operator =( const LOGOG_CHAR *pstr ); - size_t size() const; - virtual void clear(); - virtual size_t reserve( size_t nSize ); - virtual size_t reserve_for_int(); - virtual operator const LOGOG_CHAR *() const; - virtual size_t assign( const String &other ); - virtual size_t append( const String &other ); - virtual size_t append( const LOGOG_CHAR *other ); - virtual void reverse( LOGOG_CHAR* pStart, LOGOG_CHAR* pEnd); - virtual size_t assign( const int value ); - virtual size_t append( const LOGOG_CHAR c ); - virtual bool is_valid() const; - virtual size_t assign( const LOGOG_CHAR *other, const LOGOG_CHAR *pEnd = NULL ); - - virtual size_t find( String &other ) const; - virtual void format( const LOGOG_CHAR *cFormatString, ... ); - virtual void format_va( const LOGOG_CHAR *cFormatString, va_list args ); - - virtual const LOGOG_CHAR* c_str() const; - - protected: - virtual void Initialize(); - - /* Code modified from http://www-igm.univ-mlv.fr/~lecroq/string/node8.html#SECTION0080 */ - void preKmp(size_t m); - - size_t KMP( const LOGOG_CHAR *y, size_t n ); - -#define LOGOG_MAX( a, b ) ( ( a > b ) ? a : b ) - - size_t BM(LOGOG_CHAR *y, size_t n); - - LOGOG_CHAR *m_pBuffer; - LOGOG_CHAR *m_pOffset; - LOGOG_CHAR *m_pEndOfBuffer; - size_t *m_pKMP; - bool m_bIsConst; - }; -} - -#define LOGOG_STRING ::logog::String - -#endif // __LOGOG_STRING_HPP_ diff --git a/ThirdParty/logog/include/target.hpp b/ThirdParty/logog/include/target.hpp deleted file mode 100644 index a5844135013a3962aa20577df5e766ef400cdcfd..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/target.hpp +++ /dev/null @@ -1,176 +0,0 @@ -/** - * \file target.hpp Abstractions representing logging outputs. - */ - -#ifndef __LOGOG_TARGET_HPP_ -#define __LOGOG_TARGET_HPP_ - -namespace logog -{ -/** A target is abstraction representing an output stream from logog. cerr, cout, and syslog, and other logging formats are supported. - ** Targets do not validate their received data. Their only job is to render it on a call to Receive() to their supported target - ** type. Targets should generally make sure to handle calls on multiple threads -- they should make sure to avoid overlapping - ** outputs from multiple threads correctly. This base class handles this serialization in the Receive() function. - ** Children of this class are expected to implement the Output() function to do the actual output. - **/ -class Target : public TopicSink -{ - friend class LogBuffer; -public : - Target(); - virtual ~Target(); - - /** Sets the current formatter for this target. */ - void SetFormatter( Formatter &formatter ); - - /** Returns a reference to the current formatter for this target. */ - Formatter &GetFormatter() const; - - /** All targets must implement the Output function. This function outputs the provided string to the - * output that the target represents. - * \return Zero if no error has occurred; an error code (generally propagated - * from the operating system) if an error has occurred. - */ - virtual int Output( const LOGOG_STRING &data ) = 0; - - /** Receives a topic on behalf of this target. A mutex prevents race conditions from occurring when - ** multiple threads attempt to write to this target at the same time. - ** \return Zero if no error has occurred; an error code (generally propagated from the operating - ** system) if an error has occurred. - */ - virtual int Receive( const Topic &topic ); - - /** Does this target want its formatter to null terminate its strings? */ - bool GetNullTerminatesStrings() const { return m_bNullTerminatesStrings; } - - /** Tells this target whether to request its formatter to null terminate its strings. */ - void SetNullTerminatesStrings(bool val) { m_bNullTerminatesStrings = val; } - - -protected: - /** A pointer to the formatter used for this output. */ - Formatter *m_pFormatter; - /** A mutex on the Receive() function. */ - Mutex m_MutexReceive; - /** Does this target cause its formatter to null-terminate its output strings? File and buffer outputs - ** don't require null terminated strings, but line outputs do. - **/ - bool m_bNullTerminatesStrings; -}; - -/** A target representing the cerr stream. */ -class Cerr : public Target -{ - virtual int Output( const LOGOG_STRING &data ); -}; - -/** A target representing the cout stream. */ -class Cout : public Target -{ - virtual int Output( const LOGOG_STRING &data ); -}; - -/** A target representing the debugger stream on Win32 targets. This only logs information - * on Windows like platforms. - */ -class OutputDebug : public Target -{ - virtual int Output( const LOGOG_STRING &data ); -}; - -/** A LogFile renders received messages to a file. Provide the name of the file to be rendered to as - * a parameter to the construction of the LogFile() object. Destroying a LogFile object will cause the - * output file to be closed. LogFile objects always append to the output file; they do not delete the previous - * log file. - */ -class LogFile : public Target -{ -public: - /** Creates a LogFile object. - * \param sFileName The name of the file to be created. - * Since file names do not support Unicode on most systems, there is no option to create - * a filename with a LOGOG_CHAR. - */ - LogFile(const char *sFileName); - - /** Closes the log file. */ - virtual ~LogFile(); - - /** Opens the log file on first write. */ - virtual int Open(); - - /** This function makes a guess as to the correct BOM for this file, and attempts - ** to write it into the file. It does this by considering the size of LOGOG_CHAR - ** as well as considering the current endianness of this system. This guess - ** may be incorrect. - **/ - virtual void WriteUnicodeBOM(); - - /** Writes the message to the log file. */ - virtual int Output( const LOGOG_STRING &data ); - - /** Should a Unicode BOM be written to the beginning of this log file, if the log file - * was previously empty? By default a BOM is written to a log file if LOGOG_UNICODE - * is enabled. */ - bool m_bWriteUnicodeBOM; - -protected: - char *m_pFileName; - bool m_bFirstTime; - bool m_bOpenFailed; - FILE *m_pFile; - - /** Does the actual fwrite to the file. Call Output() instead to handle error conditions better. */ - virtual int InternalOutput( size_t nSize, const LOGOG_CHAR *pData ); - -private: - LogFile(); -}; - -/** A buffering target. Stores up to a fixed buffer size of output and then renders that output to another - * target. Can be used for buffering log output in memory and then storing it to a log file upon program completion. - * To use, create another target (such as a LogFile) and then create a LogBuffer, providing the other target - * as a parameter to the creation function. - */ -class LogBuffer : public Target -{ -public: - LogBuffer( Target *pTarget = NULL, - size_t s = LOGOG_DEFAULT_LOG_BUFFER_SIZE ); - virtual ~LogBuffer(); - - /** Changes the current rendering target. NOTE: This function does no locking on either the target or - * this object. Program accordingly. - */ - virtual void SetTarget( Target &t ); - - /** Inserts a range of LOGOG_CHAR objects into this buffer. The characters should consist of a null-terminated - * string of length size. Providing anything else as input creates undefined behavior. - */ - virtual int Insert( const LOGOG_CHAR *pChars, size_t size ); - - /** Dumps the current contents of the buffer to the output target. */ - virtual int Dump(); - - virtual int Output( const LOGOG_STRING &data ); - -protected: - virtual void Allocate( size_t size ); - - virtual void Deallocate(); - - /** The non-changing pointer to the basic buffer. */ - LOGOG_CHAR *m_pStart; - /** The current write offset into the buffer. */ - LOGOG_CHAR *m_pCurrent; - /** The position in the buffer after which no data may be written. */ - LOGOG_CHAR *m_pEnd; - /** The size of the buffer in LOGOG_CHAR primitives. */ - size_t m_nSize; - /** A pointer to the target to which the buffer will be rendered upon calling Dump(). */ - Target *m_pOutputTarget; -}; - -} - -#endif // __LOGOG_TARGET_HPP_ diff --git a/ThirdParty/logog/include/thread.hpp b/ThirdParty/logog/include/thread.hpp deleted file mode 100644 index c37e3045d464534c4d1ab17f83597ee1ad43ccc8..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/thread.hpp +++ /dev/null @@ -1,121 +0,0 @@ -/** - * \file thread.hpp Defines a thread object for the current platform. - */ - -#ifndef __LOGOG_THREAD_HPP__ -#define __LOGOG_THREAD_HPP__ - -//! [Thread] -#ifndef LOGOG_THREAD -#if defined(LOGOG_FLAVOR_WINDOWS) - -#include <process.h> - -typedef unsigned int (WINAPI * __logog_pThreadFn )(void *); - -#define LOGOG_THREAD HANDLE - -#define LOGOG_THREAD_CREATE(handle, attr, pStartFn, arg) \ - (int)((*handle=(HANDLE) _beginthreadex (NULL, /* security */ \ - 0, /* stack size */ \ - (__logog_pThreadFn)pStartFn, /* start address */ \ - arg, /* pv argument */ \ - 0, /* init flag */ \ - NULL /*thread addr */ ))==NULL) - -#define LOGOG_THREAD_JOIN( thread ) \ - ( (WaitForSingleObject(( thread ),INFINITE)!=WAIT_OBJECT_0) \ - || !CloseHandle(thread) \ - ) -#define LOGOG_THREAD_SELF (LOGOG_THREAD)GetCurrentThreadId() - -#endif // defined(LOGOG_FLAVOR_WINDOWS) - -#if defined(LOGOG_FLAVOR_POSIX) - -#define LOGOG_THREAD \ - pthread_t - -#define LOGOG_THREAD_CREATE(handle, attr, pStartFn, arg) \ - pthread_create(handle, attr, pStartFn, arg) - -#define LOGOG_THREAD_JOIN(thread) \ - pthread_join(thread, NULL) - -#define LOGOG_THREAD_SELF \ - pthread_self() - -#endif - -#endif // LOGOG_THREAD - -#ifndef LOGOG_THREAD -#error You need to define mutex macros for your platform; please see mutex.hpp -#endif - -//! [Thread] - -namespace logog -{ - -/** A thread abstraction. Requires definition of macros to describe how to create, start, and wait for threads to terminate. */ -class Thread -{ -public: - - /** A type describing the entry point of a function. */ - typedef void* (*ThreadStartLocationType)(void *); - - /** Creating a new thread requires the starting location as well as a single void pointer to the argument to a function. */ - Thread(ThreadStartLocationType fnThreadStart, void* pvParams) - { - m_pFnThreadStart = fnThreadStart; - m_pvThreadParams = pvParams; - } - - /** Cause the created thread to commence execution asynchronously. */ - int Start() - { - return LOGOG_THREAD_CREATE(&m_Thread, NULL, m_pFnThreadStart, m_pvThreadParams); - } - - /** Causes the current thread to wait for completion of the provided thread. - ** \param thread The thread object to wait for - */ - static int WaitFor(const Thread& thread) - { - return LOGOG_THREAD_JOIN(thread.m_Thread); - } - -#ifdef LOGOG_THREAD_JOIN_SUPPORT - static void Join(const std::vector<Thread*>& threads) - { - for(size_t i=0; i<threads.size(); i++) - WaitFor(*threads.at(i)); - } - - static void Delete(std::vector<Thread*>& threads) - { - for(size_t i=0; i<threads.size(); i++) - delete threads.at(i); - threads.clear(); - } -#endif // LOGOG_THREAD_JOIN_SUPPORT - - /** Returns a LOGOG_THREAD representing the calling process. */ - static LOGOG_THREAD GetCurrent() - { - return (LOGOG_THREAD) LOGOG_THREAD_SELF ; - } - -private: - /** A platform-specific identifier for the calling process. */ - LOGOG_THREAD m_Thread; - /** The entry point for this thread. */ - ThreadStartLocationType m_pFnThreadStart; - /** An arbitrary argument to the thread entry point. */ - void* m_pvThreadParams; -}; -} - -#endif // __LOGOG_THREAD_HPP_ \ No newline at end of file diff --git a/ThirdParty/logog/include/timer.hpp b/ThirdParty/logog/include/timer.hpp deleted file mode 100644 index 579103b2bb78f19eb0b794bb5ff16b9d20cd1643..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/timer.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/** - * \file timer.hpp Time management. - */ - -#ifndef __LOGOG_TIMER_HPP__ -#define __LOGOG_TIMER_HPP__ - -namespace logog -{ -/** A value for a high resolution timer on this platform. Time representations are in seconds. */ -typedef double LOGOG_TIME; - -/** A high-resolution timer. Reports in seconds. */ -class Timer : public Object -{ -public: - Timer(); - - /** Returns the offset from the time since the creation of the timer, or the time set by the most - ** recent Set() call. Time is assumed to be a value in LOGOG_TIME seconds. - ** \sa LOGOG_TIME - **/ - LOGOG_TIME Get(); - - /** Sets the current time for this timer. */ - void Set( LOGOG_TIME time ); - -protected: -#ifdef LOGOG_FLAVOR_WINDOWS - /** Windows only. Stores the number of high resolution timer ticks per second. */ - double m_fTicksPerMicrosecond; -#endif - /** Zero, if no calls to Set() have been made; else the value of the previous call to Set(). */ - LOGOG_TIME m_fStartTime; -}; - -extern Timer &GetGlobalTimer(); -extern void DestroyGlobalTimer(); - -} - -#endif // __LOGOG_TIMER_HPP_ diff --git a/ThirdParty/logog/include/topic.hpp b/ThirdParty/logog/include/topic.hpp deleted file mode 100644 index ae3d6f3e5af801692354e7c8ebcd8c18a6e5916b..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/topic.hpp +++ /dev/null @@ -1,203 +0,0 @@ -/** - * \file topic.hpp Topics -- subjects of interests for publishers and - * subscribers to communicate about - */ - -#ifndef __LOGOG_TOPIC_HPP__ -#define __LOGOG_TOPIC_HPP__ - -namespace logog -{ - -/** A subject that nodes can choose to discuss with one another. - ** Subscribers generally have very general topics, while publishers generally have very specific topics. - **/ -class Topic : public Node -{ - friend class TopicLevel; - friend class TopicGroup; - -public: - /** Creates a topic. Note the defaults for creating a topic -- these defaults are equivalent to "no setting" - ** for those fields. - **/ - Topic( const LOGOG_LEVEL_TYPE level = LOGOG_LEVEL_ALL, - const LOGOG_CHAR *sFileName = NULL, - const int nLineNumber = 0, - const LOGOG_CHAR *sGroup = NULL, - const LOGOG_CHAR *sCategory = NULL, - const LOGOG_CHAR *sMessage = NULL, - const double dTimestamp = 0.0f ); - - /** Topics are always topics. We use this to avoid any RTTI dependence. */ - virtual bool IsTopic() const; - - /** Causes this topic to publish another topic to all its subscribers. - ** \return 0 if successful, non-zero if this topic failed to send the publication to all subscribers */ - virtual int Send( const Topic &node ); - - /** Causes this topic to publish itself to all its subscribers. */ - virtual int Transmit(); - - /** Permits this node to receive a publication from another node, and act upon it. - ** \param node The node constituting the publication - ** \return 0 if successful, non-zero if this node failed to process the publication - **/ - virtual int Receive( const Topic &node ); - - /** Is this topic interested in receiving notifications from another topic? This function implements - ** a generic (slow) test that should work for all topic types. This function only checks fields - ** that have previously been set on this topic -- fields that have not been set will not limit this - ** topic's ability to subscribe. If any of the previously set fields does not "match" the other topic, - ** this function will return false. The matching function behaves slightly differently from field to - ** field. - ** - In the topic level case, this function rejects a publisher with a lower topic level than our - ** own. - ** - In the group, category, file name and message case, this function rejects a publisher if our - ** own group/category/file name or message cannot be found as a substring in the possible publisher. - ** This functionality permits very simple pattern matching functionality (i.e. show me all the message - ** lines that have the word "upload" in them, regardless of their log level.) - ** - In the line number case, this function rejects a publisher unless the line number matches exactly. - ** - In the timestamp case, this function rejects a publisher if their timestamp is before our own. - ** \param otherNode The topic which we are considering subscribing to - **/ - virtual bool CanSubscribeTo( const Node &otherNode ); - - virtual bool CanSubscribeCheckTopic( const Topic &other ); - - /** Causes this topic to begin publishing events to the given subscriber. - ** \param subscriber The node to receive published events - ** \return true if the request was successful, false if the subscriber was already subscribed - **/ - virtual bool PublishTo( Node &subscriber ); - - - - /** Formats the message in this topic given a sprintf-style set of arguments. - ** This function can be used to set the current message in this topic to a string with a variable number of parameters. - **/ - virtual void Format( const LOGOG_CHAR *cFormatMessage, ... ); - - const LOGOG_STRING &FileName() const; - void FileName( const LOGOG_STRING &s ); - - const LOGOG_STRING &Message() const; - void Message( const LOGOG_STRING &s ); - - const LOGOG_STRING &Category() const; - void Category( const LOGOG_STRING &s ); - - const LOGOG_STRING &Group() const; - void Group( const LOGOG_STRING &s ); - - int LineNumber() const; - void LineNumber( const int num ); - - LOGOG_LEVEL_TYPE Level() const; - void Level( LOGOG_LEVEL_TYPE level ); - - LOGOG_TIME Timestamp() const; - void Timestamp( const LOGOG_TIME t ); - - TOPIC_FLAGS GetTopicFlags() const; - -protected: - /** An array (not an STL vector) of string properties for this topic. */ - LOGOG_STRING m_vStringProps[ TOPIC_STRING_COUNT ]; - /** An array (not an STL vector) of integer properties for this topic. */ - int m_vIntProps[ TOPIC_INT_COUNT ]; - /** The time associated with this topic. Usually this field is updated when a topic is triggered. Times need not be associated - ** with a particular topic, in which case this value is zero. - ** */ - LOGOG_TIME m_tTime; - /** A bitfield representing the "important" fields in this topic. Not all fields are considered to contain important information - ** all the time. A logical OR of the TOPIC_*_FLAG fields. - ** \sa TopicBitsType - **/ - TOPIC_FLAGS m_TopicFlags; -}; - -/** A topic that permits both publishing as well as subscribing. This class is functionally same as a Topic; we've added it - ** as a class for clarity when referring to different topic types. Filters should be instantiated only after outputs are - ** instantiated, as they automatically search for and publish to targets. If you instantiate a filter before you - ** instantiate a target, you will need to call PublishTo( theTarget ) yourself before using the target. - **/ -class Filter : public Topic -{ -public: - Filter( const LOGOG_LEVEL_TYPE level = LOGOG_LEVEL_ALL, - const LOGOG_CHAR *sFileName = NULL, - const int nLineNumber = 0, - const LOGOG_CHAR *sGroup = NULL, - const LOGOG_CHAR *sCategory = NULL, - const LOGOG_CHAR *sMessage = NULL, - const double dTimestamp = 0.0f ); -}; - -/** Returns a reference to the unique default filter instantiated with logog. */ -extern Filter &GetDefaultFilter(); - -/** Sets the current reporting level for the default filter. All messages - * connected to the filter after this point should obey this default - * level setting. - */ -void SetDefaultLevel( LOGOG_LEVEL_TYPE level ); - -/** A topic with the group name being the only field of significance. */ -class TopicGroup : public Topic -{ -public: - TopicGroup( const LOGOG_CHAR *sGroup = NULL ); - - virtual bool CanSubscribeCheckTopic( const Topic &other ); -}; - -/** A topic with the level being the only field of significance. */ -class TopicLevel : public Topic -{ -public: - TopicLevel( const LOGOG_LEVEL_TYPE level ); - virtual bool CanSubscribeCheckTopic( const Topic &other ); -}; - -/** A topic that is also a source. */ -class TopicSource : public Topic -{ -public: - TopicSource( const LOGOG_LEVEL_TYPE level = LOGOG_LEVEL_ALL, - const LOGOG_CHAR *sFileName = NULL, - const int nLineNumber = 0, - const LOGOG_CHAR *sGroup = NULL, - const LOGOG_CHAR *sCategory = NULL, - const LOGOG_CHAR *sMessage = NULL, - const double dTimestamp = 0.0f ); - - /** Returns false. Sources do not subscribe. */ - virtual bool SubscribeTo( Node & ); - - /** Returns false. Sources do not unsubscribe. */ - virtual bool UnsubscribeTo( Node & ); - virtual bool CanSubscribe() const; -}; - -/** A topic that is also a sink. */ -class TopicSink : public Topic -{ -public: - virtual bool IsTopic() const; - - /** Sinks do not add themselves to the list of interested subscribers. That's up to intermediate topics to decide. */ - virtual void Initialize(); - - /** Returns false. Sinks do not publish. */ - virtual bool PublishTo( Node & ); - - /** Returns false. Sinks do not unpublish. */ - virtual bool UnpublishTo( Node & ); - - /** Returns false. Sinks do not publish. */ - virtual bool CanPublish() const; -}; -} - -#endif // __LOGOG_TOPIC_HPP_ diff --git a/ThirdParty/logog/include/unittest.hpp b/ThirdParty/logog/include/unittest.hpp deleted file mode 100644 index 3441636bd56d41db50bcf2184402fe1639129496..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/include/unittest.hpp +++ /dev/null @@ -1,151 +0,0 @@ -/** - * \file unittest.hpp Unit testing interface; may be used for other programs as well. - */ -#ifndef __LOGOG_UNITTEST_HPP -#define __LOGOG_UNITTEST_HPP - -#include <iostream> -#include <string> - -namespace logog -{ - -/** - * \page unittesting Unit test framework - * - * A unit test framework is included with logog. This framework was intended specifically to exercise logog functionality, but it may also - * be used as a general purpose test framework. - * - * A typical test program will look like this: - * \code - * int main( int argc, char *argv[] ) - * { - * int nResult; - * nResult = RunAllTests(); - * ShutdownTests(); - * return nResult; - * } - * \endcode - * - * To define a unit test, create a function of the following form: - * - * \code - * UNITTEST( AdditionTest ) - * { - * logog::Initialize(); - * - * int nResult = 0; - * - * if ( 2 + 2 == 4 ) - * { - * LOGOG_COUT << _LG("Sane.") << endl; - * } - * else - * { - * LOGOG_COUT << _LG("Insane!") << endl; - * nResult = 1; - * } - * - * logog::Shutdown(); - * - * return nResult; - * - * }; - * \endcode - * - * The UNITTEST() macro defines a unique UnitTest object that encompasses your function. - * Your function should take no parameters and return an integer value. It should return - * zero if the test was successful, and non-zero if the test was unsuccesful. If any - * of your tests fail, the stub main() program will propagate that error to the operating - * system, which in turn can be used to halt an automated build system. - * - * The unit testing framework is known to leak memory. However, the underlying logog macros are not known to leak memory (let us know - * if you find any leaks). - */ - -/** A standard string type, used for labelling a test. We don't use LOGOG_STRING here because that class is mutable - ** and it allocates memory. - **/ -typedef const char * TestNameType; -class UnitTest; - -/** A registry for all tests. All tests are instanced using the UNITTEST() macro and stored in the LogogTestRegistry. - ** \ref UNITTEST - **/ -typedef LOGOG_LIST< UnitTest * > TestRegistryType; - -/** All unit tests are registered in here at program initialization time. */ -extern TestRegistryType &LogogTestRegistry(); - -/** A TestSignup is responsible for recording each instanced UnitTest in the test registry. */ -class TestSignup -{ -public: - /** Creates a new TestSignup. Only called from constructor for UnitTest. */ - TestSignup( UnitTest *pTest ); - -protected: - /** A pointer back to the UnitTest that created this TestSignup */ - UnitTest *m_pTest; -private: - TestSignup(); -}; - -/** The base class for unit testing. Children of UnitTest are instanced by the UNITTEST() macro. */ -class UnitTest -{ -public: - /** Instances a test. An instanced test is automatically executed when the RunAllTests() function is called. - * \param sTestName A string representing the name of this test. - */ - UnitTest( const TestNameType &sTestName ); - - virtual ~UnitTest(); - /** Returns the name of this UnitTest provided at construction time. */ - virtual TestNameType &GetName(); - /** Child classes of UnitTest() must provide a RunTest() function. A RunTest() function must initialize logog, conduct its - ** tests, and return 0 if the test was successful, a non-0 value otherwise. If any RunTest() function returns any value other than - ** zero, then the main RunAllTests() function will return non zero as well. - */ - virtual int RunTest() = 0; - - /** This function is called during ShutdownTests(). Its purpose is to free - ** the internal structures allocated by the UnitTest without freeing - ** the UnitTest itself. Microsoft's leak detector will flag the internals - ** of a UnitTest as a leak unless these internals are explicitly destroyed - ** prior to exit(). - **/ - virtual void FreeInternals(); - -protected: - /** The name of this particular test. */ - TestNameType m_sTestName; - /** A pointer to the TestSignup constructed by this UnitTest. */ - TestSignup *m_pTestSignup; -private: - UnitTest(); -}; - -/** Executes all currently registered tests and prints a report of success or failure. */ -extern int RunAllTests(); - -/** Should remove all memory allocated during unit testing. */ -extern void ShutdownTests(); - -/** This should be the function prefix for a unit test. It defines a new class for the test inherited from UnitTest. It instances - ** a member of the class at run-time (before main() starts). Lastly it provides the function definition for the actual test class. - */ -#define UNITTEST( x ) class x : public UnitTest { \ -public: \ - x( TestNameType name ) : \ - UnitTest( name ) \ - {} \ - virtual ~x() {}; \ - virtual int RunTest(); \ - }; \ - x __LogogTestInstance_ ## x ( #x ); \ - int x::RunTest() - -} - -#endif // __LOGOG_UNITTEST_HPP diff --git a/ThirdParty/logog/readme.txt b/ThirdParty/logog/readme.txt deleted file mode 100644 index 1c0339e148845dc6afeccff2a6870fcd5ff8560d..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/readme.txt +++ /dev/null @@ -1,11 +0,0 @@ -See http://www.logog.org or http://johnwbyrd.github.com/logog/ for more information and complete documentation. - -logog is a portable C++ library to facilitate logging of real-time events in performance-oriented applications, such as games. It is especially appropriate for projects that have constrained memory and constrained CPU requirements. - -General support and discussion is available at http://groups.google.com/group/logog . Development support and discussion is available at http://groups.google.com/group/logog-devel . - -This project can be built using CMake, available from http://www.cmake.org . - -Local documentation can be generated with doxygen, available from http://www.doxygen.org . - -The license agreement for logog is viewable at http://johnwbyrd.github.com/logog/license.html . diff --git a/ThirdParty/logog/src/api.cpp b/ThirdParty/logog/src/api.cpp deleted file mode 100644 index 2b67c14051b29e29e3661aa5753b8bd1b51a3523..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/api.cpp +++ /dev/null @@ -1,74 +0,0 @@ - /* - * \file api.cpp - */ - -#include "logog.hpp" - -#include <cstdlib> - -namespace logog { - -static Mutex s_mInitialization; -static int s_nInitializations = 0; - -int Initialize( INIT_PARAMS *params ) -{ - s_mInitialization.MutexLock(); - - if ( s_nInitializations++ == 0 ) - { - if ( params == NULL ) - { - Static().s_pfMalloc = malloc; - Static().s_pfFree = free; - } - else - { - if ( params->m_pfMalloc != NULL ) - { - Static().s_pfMalloc = params->m_pfMalloc; - Static().s_pfFree = params->m_pfFree; - } - else - { - Static().s_pfMalloc = malloc; - Static().s_pfFree = free; - } - } - - // Let's allocate a default filter here. - GetDefaultFilter(); - - // Socket::Initialize(); - } - - s_mInitialization.MutexUnlock(); - - return 0; -} - -int Shutdown( ) -{ - s_mInitialization.MutexLock(); - - if ( --s_nInitializations == 0 ) - { - // Socket::Shutdown(); - -#ifdef LOGOG_DESTROY_STATIC_AREA - delete &( Static() ); -#else - Static().Reset(); -#endif - -#ifdef LOGOG_LEAK_DETECTION - ReportMemoryAllocations(); -#endif - } - - s_mInitialization.MutexUnlock(); - - return 0; -} -} - diff --git a/ThirdParty/logog/src/checkpoint.cpp b/ThirdParty/logog/src/checkpoint.cpp deleted file mode 100644 index 45ecf39f5b0299ecc70a2c9e682ae2f1ca8dff15..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/checkpoint.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -/* - * \file checkpoint.cpp - */ - -#include "logog.hpp" - -namespace logog { - - Checkpoint::Checkpoint( const LOGOG_LEVEL_TYPE level, - const LOGOG_CHAR *sFileName , - const int nLineNumber, - const LOGOG_CHAR *sGroup, - const LOGOG_CHAR *sCategory, - const LOGOG_CHAR *sMessage, - const double dTimestamp ) : - TopicSource( level, sFileName, nLineNumber, sGroup, sCategory, sMessage, dTimestamp ) - { - } - - int Checkpoint::Send( const Topic &node ) - { - /* Optionally update our own timestamp before we send on our information */ - if (( m_TopicFlags & TOPIC_TIMESTAMP_FLAG ) != 0 ) - m_tTime = GetGlobalTimer().Get(); - - return TopicSource::Send( node ); - } -} - diff --git a/ThirdParty/logog/src/formatter.cpp b/ThirdParty/logog/src/formatter.cpp deleted file mode 100644 index 22515f3c5a6cb9362b176aabeae462dc93202fa0..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/formatter.cpp +++ /dev/null @@ -1,238 +0,0 @@ - -/* - * \file formatter.cpp - */ - -#include "logog.hpp" - -namespace logog { - - Formatter::Formatter() : - m_bShowTimeOfDay( false ) - { - m_sMessageBuffer.reserve( LOGOG_FORMATTER_MAX_LENGTH ); - m_sIntBuffer.reserve_for_int(); - } - - void Formatter::RenderTimeOfDay() - { - if ( m_bShowTimeOfDay ) - { -#ifndef LOGOG_UNICODE - TimeStamp stamp; - m_sMessageBuffer.append( stamp.Get() ); - m_sMessageBuffer.append(": "); -#endif - } - } - - const LOGOG_CHAR * Formatter::ErrorDescription( const LOGOG_LEVEL_TYPE level ) - { - if ( level <= LOGOG_LEVEL_NONE ) - return LOGOG_CONST_STRING("none"); - - if ( level <= LOGOG_LEVEL_EMERGENCY ) - return LOGOG_CONST_STRING("emergency"); - - if ( level <= LOGOG_LEVEL_ALERT ) - return LOGOG_CONST_STRING("alert"); - - if ( level <= LOGOG_LEVEL_CRITICAL ) - return LOGOG_CONST_STRING("critical"); - - if ( level <= LOGOG_LEVEL_ERROR ) - return LOGOG_CONST_STRING("error"); - - if ( level <= LOGOG_LEVEL_WARN ) - return LOGOG_CONST_STRING("warning"); - - if ( level <= LOGOG_LEVEL_INFO ) - return LOGOG_CONST_STRING("info"); - - if ( level <= LOGOG_LEVEL_DEBUG ) - return LOGOG_CONST_STRING("debug"); - - return LOGOG_CONST_STRING("unknown"); - } - - bool Formatter::GetShowTimeOfDay() const - { - return m_bShowTimeOfDay; - } - - void Formatter::SetShowTimeOfDay( bool val ) - { - m_bShowTimeOfDay = val; - } - - TOPIC_FLAGS Formatter::GetTopicFlags( const Topic &topic ) - { - return topic.GetTopicFlags(); - } - - LOGOG_STRING &FormatterGCC::Format( const Topic &topic, const Target &target ) - { - TOPIC_FLAGS flags; - flags = GetTopicFlags( topic ); - - m_sMessageBuffer.clear(); - - if ( flags & TOPIC_FILE_NAME_FLAG ) - { - m_sMessageBuffer.append( topic.FileName() ); - m_sMessageBuffer.append( ':' ); - } - - if ( flags & TOPIC_LINE_NUMBER_FLAG ) - { - m_sIntBuffer.assign( topic.LineNumber() ); - m_sMessageBuffer.append( m_sIntBuffer ); - - m_sMessageBuffer.append( LOGOG_CONST_STRING(": ")); - } - - RenderTimeOfDay(); - - if ( flags & TOPIC_LEVEL_FLAG ) - { - m_sMessageBuffer.append( ErrorDescription( topic.Level())); - m_sMessageBuffer.append( LOGOG_CONST_STRING(": ")); - } - - if ( flags & TOPIC_GROUP_FLAG ) - { - m_sMessageBuffer.append( LOGOG_CONST_STRING("{") ); - m_sMessageBuffer.append( topic.Group() ); - m_sMessageBuffer.append( LOGOG_CONST_STRING("} ") ); - } - - if ( flags & TOPIC_CATEGORY_FLAG ) - { - m_sMessageBuffer.append( LOGOG_CONST_STRING("[")); - m_sMessageBuffer.append( topic.Category() ); - m_sMessageBuffer.append( LOGOG_CONST_STRING("] ")); - } - - if ( flags & TOPIC_MESSAGE_FLAG ) - { - m_sMessageBuffer.append( topic.Message() ); - m_sMessageBuffer.append( (LOGOG_CHAR)'\n' ); - } - - if ( target.GetNullTerminatesStrings() ) - m_sMessageBuffer.append( (LOGOG_CHAR)NULL ); - - return m_sMessageBuffer; - } - - - LOGOG_STRING &FormatterMSVC::Format( const Topic &topic, const Target &target ) - { - m_sMessageBuffer.clear(); - - TOPIC_FLAGS flags; - flags = GetTopicFlags( topic ); - - if ( flags & TOPIC_FILE_NAME_FLAG ) - { - m_sMessageBuffer.append( topic.FileName() ); - m_sMessageBuffer.append( '(' ); - } - - if ( flags & TOPIC_LINE_NUMBER_FLAG ) - { - m_sIntBuffer.assign( topic.LineNumber() ); - m_sMessageBuffer.append( m_sIntBuffer ); - - m_sMessageBuffer.append( LOGOG_CONST_STRING(") : ") ); - } - - RenderTimeOfDay(); - - if ( flags & TOPIC_LEVEL_FLAG ) - { - m_sMessageBuffer.append( ErrorDescription( topic.Level() ) ); - m_sMessageBuffer.append( LOGOG_CONST_STRING(": ")); - } - - if ( flags & TOPIC_GROUP_FLAG ) - { - m_sMessageBuffer.append( LOGOG_CONST_STRING("{")); - m_sMessageBuffer.append( topic.Group() ); - m_sMessageBuffer.append( LOGOG_CONST_STRING("} ")); - } - - if ( flags & TOPIC_CATEGORY_FLAG ) - { - m_sMessageBuffer.append( LOGOG_CONST_STRING("[")); - m_sMessageBuffer.append( topic.Category() ); - m_sMessageBuffer.append( LOGOG_CONST_STRING("] ")); - } - - if ( flags & TOPIC_MESSAGE_FLAG ) - { - m_sMessageBuffer.append( topic.Message() ); -#ifdef LOGOG_FLAVOR_WINDOWS - m_sMessageBuffer.append( LOGOG_CONST_STRING("\r\n") ); -#else // LOGOG_FLAVOR_WINDOWS - m_sMessageBuffer.append( LOGOG_CONST_STRING("\n") ); -#endif // LOGOG_FLAVOR_WINDOWS - } - - if ( target.GetNullTerminatesStrings() ) - m_sMessageBuffer.append( LOGOG_CHAR( NULL ) ); - - return m_sMessageBuffer; - } - - Formatter &GetDefaultFormatter() - { - Statics *pStatic = &Static(); - - if ( pStatic->s_pDefaultFormatter == NULL ) - { -#ifdef LOGOG_FLAVOR_WINDOWS - pStatic->s_pDefaultFormatter = new FormatterMSVC(); -#else - pStatic->s_pDefaultFormatter = new FormatterGCC(); -#endif - } - - return *( pStatic->s_pDefaultFormatter ); - } - - void DestroyDefaultFormatter() - { - Statics *pStatic = &Static(); - Formatter *pDefaultFormatter = pStatic->s_pDefaultFormatter; - - if ( pDefaultFormatter != NULL ) - delete pDefaultFormatter; - - pStatic->s_pDefaultFormatter = NULL; -} - -const char * TimeStamp::Get() -{ - time_t tRawTime; - struct tm * tmInfo; - - time ( &tRawTime ); - -#ifdef LOGOG_FLAVOR_WINDOWS -#pragma warning( push ) -#pragma warning( disable : 4996 ) -#endif // LOGOG_FLAVOR_WINDOWS - /* Microsoft is afraid of this function; I'm not sure this warning is sensible */ - tmInfo = localtime ( &tRawTime ); -#ifdef LOGOG_FLAVOR_WINDOWS -#pragma warning( pop ) -#endif // LOGOG_FLAVOR_WINDOWS - - strftime (cTimeString, LOGOG_TIME_STRING_MAX, "%c", tmInfo); - - return cTimeString; -} - -} - diff --git a/ThirdParty/logog/src/lobject.cpp b/ThirdParty/logog/src/lobject.cpp deleted file mode 100644 index 8fbce7755567d1b4b1e29df5f2ee6d7bf2cb6ab4..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/lobject.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/* - * \file object.cpp - */ - -#include "logog.hpp" -#ifdef LOGOG_LEAK_DETECTION -#include <iostream> -#endif // LOGOG_LEAK_DETECTION - -namespace logog { - -#ifdef LOGOG_LEAK_DETECTION -AllocationsType s_Allocations; -#endif - - Object::Object() {} - - Object::~Object() - { - - } - - void *Object::operator new( size_t nSize ) - { - return Allocate( nSize ); - } - - void *Object::operator new[]( size_t nSize ) - { - return Allocate( nSize ); - } - -#ifdef _DEBUG -#ifdef LOGOG_FLAVOR_WINDOWS - - void *Object::operator new(size_t nSize, LPCSTR lpszFileName, int nLine) - { - /* avoid unref'd parameter warnings */ - lpszFileName; - nLine; - return Allocate( nSize ); - } - - void *Object::operator new[](size_t nSize, LPCSTR lpszFileName, int nLine) - { - /* avoid unref'd parameter warnings */ - lpszFileName; - nLine; - return Allocate( nSize ); - } - - void Object::operator delete(void *ptr, LPCSTR lpszFileName, int nLine) - { - lpszFileName; - nLine; - Deallocate( ptr ); - } - - void Object::operator delete[](void *ptr, LPCSTR lpszFileName, int nLine) - { - lpszFileName; - nLine; - Deallocate( ptr ); - } - -#endif // LOGOG_FLAVOR_WINDOWS -#endif // _DEBUG - - /** Deletes an object pointed to by ptr. */ - void Object::operator delete( void *ptr ) - { - Deallocate( ptr ); - } - /** Deletes an object array pointed to by ptr. */ - void Object::operator delete[]( void *ptr ) - { - Deallocate( ptr ); - } - - /** Allocates nSize bytes of memory. You must call logog::Initialize() before calling this function. - * \sa Initialize() - */ - void *Object::Allocate( size_t nSize ) - { - void *ptr = Static().s_pfMalloc( nSize ); -#ifdef LOGOG_REPORT_ALLOCATIONS - LOGOG_COUT << _LG("Allocated ") << nSize << _LG(" bytes of memory at ") << ptr << endl; -#endif // LOGOG_REPORT_ALLOCATIONS -#ifdef LOGOG_LEAK_DETECTION - AllocationsType::iterator it; - - LockAllocationsMutex(); - it = s_Allocations.find( ptr ); - - if ( it != s_Allocations.end() ) - { - LOGOG_COUT << _LG("Reallocation detected in memory manager! We seem to have allocated the same address twice ") - << _LG("without freeing it! Address = ") << ptr << std::endl; - UnlockAllocationsMutex(); - LOGOG_INTERNAL_FAILURE; - } - - s_Allocations.insert( LOGOG_PAIR< const PointerType, size_t >( ptr, nSize ) ); - UnlockAllocationsMutex(); -#endif // LOGOG_LEAK_DETECTION - return ptr; - } - - /** Deallocate a pointer previously acquired by Allocate(). */ - void Object::Deallocate( void *ptr ) - { -#ifdef LOGOG_LEAK_DETECTION - LockAllocationsMutex(); - AllocationsType::iterator it; - - it = s_Allocations.find( ptr ); - - if ( it == s_Allocations.end() ) - { - LOGOG_COUT << _LG("Freeing memory not previously allocated! Address = ") << ptr << std::endl; - UnlockAllocationsMutex(); - LOGOG_INTERNAL_FAILURE; - } - -#ifdef LOGOG_REPORT_ALLOCATIONS - LOGOG_COUT << _LG("Freeing ") << it->second << _LG(" bytes of memory at ") << it->first << endl; -#endif // LOGOG_REPORT_ALLOCATIONS - s_Allocations.erase( ptr ); - UnlockAllocationsMutex(); -#endif // LOGOG_LEAK_DETECTION - Static().s_pfFree( ptr ); - } - - int MemoryAllocations() - { -#ifdef LOGOG_LEAK_DETECTION - LockAllocationsMutex(); - size_t nSize = s_Allocations.size(); - - if ( nSize != 0 ) - LOGOG_COUT << _LG("Total active allocations: ") << nSize << std::endl; - - UnlockAllocationsMutex(); - return (int)nSize; -#else // LOGOG_LEAK_DETECTION - return -1; -#endif // LOGOG_LEAK_DETECTION - } - - int ReportMemoryAllocations() - { -#ifdef LOGOG_LEAK_DETECTION - LockAllocationsMutex(); - - if ( s_Allocations.size() == 0 ) - { - LOGOG_COUT << _LG("No memory allocations outstanding.") << std::endl; - } - else - { - for ( AllocationsType::iterator it = s_Allocations.begin(); - it != s_Allocations.end(); - it++ ) - { - LOGOG_COUT << _LG("Memory allocated at ") << it->first << - _LG(" with size ") << it->second << - _LG(" bytes ") << std::endl; - } - } - - UnlockAllocationsMutex(); -#endif - return MemoryAllocations(); - } - -} - diff --git a/ThirdParty/logog/src/logog.vcproj b/ThirdParty/logog/src/logog.vcproj deleted file mode 100644 index f80a5d75e08d9b275f30cc07e76f1944aa2fbcba..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/logog.vcproj +++ /dev/null @@ -1,323 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9.00" - Name="logog" - ProjectGUID="{85857E80-2122-4DD8-9BA9-B90CC10D65B0}" - RootNamespace="logog" - SccProjectName="Perforce Project" - SccLocalPath=".." - SccProvider="MSSCCI:Perforce SCM" - Keyword="Win32Proj" - TargetFrameworkVersion="196613" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../include" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - UsePrecompiledHeader="0" - WarningLevel="4" - WarnAsError="true" - DebugInformationFormat="4" - ShowIncludes="false" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - EnableIntrinsicFunctions="true" - AdditionalIncludeDirectories="../include" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB" - RuntimeLibrary="2" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - WarningLevel="4" - WarnAsError="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath=".\api.cpp" - > - </File> - <File - RelativePath=".\checkpoint.cpp" - > - </File> - <File - RelativePath=".\formatter.cpp" - > - </File> - <File - RelativePath=".\lobject.cpp" - > - </File> - <File - RelativePath=".\lstring.cpp" - > - </File> - <File - RelativePath=".\message.cpp" - > - </File> - <File - RelativePath=".\mutex.cpp" - > - </File> - <File - RelativePath=".\node.cpp" - > - </File> - <File - RelativePath=".\platform.cpp" - > - </File> - <File - RelativePath=".\socket.cpp" - > - </File> - <File - RelativePath=".\statics.cpp" - > - </File> - <File - RelativePath=".\target.cpp" - > - </File> - <File - RelativePath=".\timer.cpp" - > - </File> - <File - RelativePath=".\topic.cpp" - > - </File> - <File - RelativePath=".\unittest.cpp" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc;xsd" - UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" - > - <File - RelativePath="..\include\api.hpp" - > - </File> - <File - RelativePath="..\include\checkpoint.hpp" - > - </File> - <File - RelativePath="..\include\const.hpp" - > - </File> - <File - RelativePath="..\include\formatter.hpp" - > - </File> - <File - RelativePath="..\include\logog.hpp" - > - </File> - <File - RelativePath="..\include\macro.hpp" - > - </File> - <File - RelativePath="..\include\message.hpp" - > - </File> - <File - RelativePath="..\include\mutex.hpp" - > - </File> - <File - RelativePath="..\include\node.hpp" - > - </File> - <File - RelativePath="..\include\object.hpp" - > - </File> - <File - RelativePath="..\include\platform.hpp" - > - </File> - <File - RelativePath="..\include\socket.hpp" - > - </File> - <File - RelativePath="..\include\statics.hpp" - > - </File> - <File - RelativePath="..\include\string.hpp" - > - </File> - <File - RelativePath="..\include\target.hpp" - > - </File> - <File - RelativePath="..\include\thread.hpp" - > - </File> - <File - RelativePath="..\include\timer.hpp" - > - </File> - <File - RelativePath="..\include\topic.hpp" - > - </File> - <File - RelativePath="..\include\unittest.hpp" - > - </File> - <Filter - Name="Proprietary" - > - <File - RelativePath="..\include\proprietary\ps3.hpp" - > - </File> - <File - RelativePath="..\include\proprietary\xbox360.hpp" - > - </File> - </Filter> - </Filter> - <Filter - Name="Resource Files" - Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" - UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" - > - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/ThirdParty/logog/src/lstring.cpp b/ThirdParty/logog/src/lstring.cpp deleted file mode 100644 index 5ab7c03112a9cdc8925f7d0fdd10ac8e24761a98..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/lstring.cpp +++ /dev/null @@ -1,497 +0,0 @@ - /* - * \file lstring.cpp - */ - -#include "logog.hpp" - -namespace logog { - - String::String() - { - Initialize(); - } - - String::~String() - { - Free(); - } - - void String::Free() - { - if ( m_pBuffer && ( m_bIsConst == false )) - { - Deallocate( (void *)m_pBuffer ); - m_pBuffer = m_pEndOfBuffer = m_pOffset = NULL; - } - - if ( m_pKMP ) - { - Deallocate( (void *)m_pKMP ); - m_pKMP = NULL; - } - } - - size_t String::Length( const LOGOG_CHAR *chars ) - { - unsigned int len = 0; - - while ( *chars++ ) - len++; - - return len; - } - - String & String::operator=( const String & other ) - { - Free(); - Initialize(); - assign( other ); - return *this; - } - - String & String::operator=( const LOGOG_CHAR *pstr ) - { - Free(); - Initialize(); - assign( pstr ); - return *this; - } - - String::String( const String &other ) - { - Initialize(); - assign( other ); - } - - String::String( const LOGOG_CHAR *pstr ) - { - Initialize(); - assign( pstr ); - } - - size_t String::size() const - { - return ( m_pOffset - m_pBuffer ); - } - - void String::clear() - { - m_pOffset = m_pBuffer; - } - - size_t String::reserve( size_t nSize ) - { - if ( nSize == (unsigned int)( m_pOffset - m_pBuffer )) - return nSize; - - if ( nSize == 0 ) - { - if ( m_pBuffer && ( *m_pBuffer != (LOGOG_CHAR)NULL )) - Deallocate( (void *)m_pBuffer ); - - Initialize(); - return 0; - } - - LOGOG_CHAR *pNewBuffer = (LOGOG_CHAR *)Allocate( sizeof( LOGOG_CHAR ) * nSize ); - LOGOG_CHAR *pNewOffset = pNewBuffer; - LOGOG_CHAR *pNewEnd = pNewBuffer + nSize; - - LOGOG_CHAR *pOldOffset = m_pOffset; - - if ( pOldOffset != NULL ) - { - while (( pNewOffset < pNewEnd ) && ( *pOldOffset != (LOGOG_CHAR)NULL )) - *pNewOffset++ = *pOldOffset++; - } - - if (( m_pBuffer != NULL ) && ( m_bIsConst == false )) - Deallocate( m_pBuffer ); - - m_pBuffer = pNewBuffer; - m_pOffset = pNewBuffer; - m_pEndOfBuffer = pNewEnd; - - return ( m_pOffset - m_pBuffer ); - } - - size_t String::reserve_for_int() - { - reserve( 32 ); - return 32; - } - - String::operator const LOGOG_CHAR *() const - { - return m_pBuffer; - } - - const LOGOG_CHAR* String::c_str() const - { - return m_pBuffer; - } - - size_t String::assign( const String &other ) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( m_bIsConst ) - cout << "Can't reassign const string!" << endl; -#endif - LOGOG_CHAR *pOther = other.m_pBuffer; - - if ( pOther == NULL ) - return 0; - - size_t othersize = other.size(); - - reserve( othersize + 1 ); - m_pOffset = m_pBuffer; - - for ( unsigned int t = 0; t <= othersize ; t++ ) - *m_pOffset++ = *pOther++; - - return this->size(); - } - - size_t String::assign( const int value ) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( m_bIsConst ) - cout << "Can't reassign const string!" << endl; -#endif - - int number = value; - m_pOffset = m_pBuffer; - - int bSign = value; - - if (( bSign = number) < 0) - number = -number; - - do - { - *m_pOffset++ = _LG("0123456789")[ number % 10 ]; - } - while( number /= 10 ); - - if (bSign < 0) - *m_pOffset++ = '-'; - - *m_pOffset = (LOGOG_CHAR)'\0'; - - reverse( m_pBuffer, m_pOffset - 1 ); - - return ( m_pOffset - m_pBuffer ); - } - - size_t String::assign( const LOGOG_CHAR *other, const LOGOG_CHAR *pEnd /*= NULL */ ) - { - size_t len; - - if ( pEnd == NULL ) - len = Length( other ); - else - len = ( pEnd - other ); - /** This constant decides whether assigning a LOGOG_CHAR * to a String will cause the String to use the previous buffer - * in place, or create a new buffer and copy the results. - */ -#ifdef LOGOG_COPY_CONST_CHAR_ARRAY_ON_ASSIGNMENT - reserve( len + 1 ); - - for (unsigned int t = 0; t <= len; t++ ) - *m_pOffset++ = *other++; -#else // LOGOG_COPY_CONST_CHAR_ARRAY_ON_ASSIGNMENT - -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( m_bIsConst ) - cout << "Can't reassign const string!" << endl; -#endif - /* In this case we don't copy the buffer, just reuse it */ - m_pBuffer = const_cast< LOGOG_CHAR *>( other ); - m_pOffset = m_pBuffer + len + 1; - m_pEndOfBuffer = m_pOffset; - m_bIsConst = true; - -#endif // LOGOG_COPY_CONST_CHAR_ARRAY_ON_ASSIGNMENT - - return (int) len; - } - size_t String::append( const String &other ) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( m_bIsConst ) - cout << "Can't reassign const string!" << endl; -#endif - - return append( other.m_pBuffer ); - } - - size_t String::append( const LOGOG_CHAR *other ) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( m_bIsConst ) - cout << "Can't reassign const string!" << endl; -#endif - if ( other == NULL ) - return 0; - - while (( m_pOffset < m_pEndOfBuffer ) && ( *other != (LOGOG_CHAR)NULL )) - *m_pOffset++ = *other++; - - return ( m_pOffset - m_pBuffer ); - } - - size_t String::append( const LOGOG_CHAR c ) - { - if ( m_pOffset < m_pEndOfBuffer ) - *m_pOffset++ = c; - - return ( m_pOffset - m_pBuffer ); - } - void String::reverse( LOGOG_CHAR* pStart, LOGOG_CHAR* pEnd ) - { - LOGOG_CHAR temp; - - while( pEnd > pStart) - { - temp=*pEnd, *pEnd-- =*pStart, *pStart++=temp; - } - } - - bool String::is_valid() const - { - return ( m_pBuffer != NULL ); - } - - size_t String::find( String &other ) const - { - if ( is_valid() && other.is_valid()) - { - // KMP solution - // String *pThis = const_cast< String *>(this); - // return pThis->KMP( other.m_pBuffer, other.size()); - LOGOG_CHAR *pFound; - -#ifdef LOGOG_UNICODE - pFound = wcsstr( m_pBuffer, other.m_pBuffer ); -#else // LOGOG_UNICODE - pFound = strstr( m_pBuffer, other.m_pBuffer ); -#endif - - if ( pFound != NULL ) - { - return ( pFound - m_pBuffer ); - } - - return npos; - } - - return npos; - } - - void String::format( const LOGOG_CHAR *cFormatString, ... ) - { - va_list args; - - va_start(args, cFormatString); - format_va( cFormatString, args ); - va_end( args ); - } - - void String::format_va( const LOGOG_CHAR *cFormatString, va_list args ) - { - int nActualSize = -1, nAttemptedSize; - LOGOG_CHAR *pszFormatted = NULL; - - Free(); - - /* Estimate length of output; don't pull in strlen() if we can help it */ - int nEstLength = 0; - const LOGOG_CHAR *pCurChar = cFormatString; - while ( *pCurChar++ ) - nEstLength++; - - if ( nEstLength == 0 ) - { - clear(); - return; - } - - /** nAttemptedSize is now a guess at an appropriate size, which is about - ** two times the number of LOGOG_CHARs in the incoming format string. - **/ - nAttemptedSize = nEstLength * 2 * sizeof( LOGOG_CHAR ); - - /* Some *printf implementations, such as msvc's, return -1 on failure. - * Others, such as gcc, return the number - * of characters actually formatted on failure. Deal with either case here. - */ - for ( ; ; ) - { - /** We'll allocate that number of bytes. NOTE that this has less of a chance - ** of working on a Unicode build. - **/ - pszFormatted = (LOGOG_CHAR *)Allocate( nAttemptedSize ); - if ( !pszFormatted ) - { - LOGOG_INTERNAL_FAILURE; - } - - *pszFormatted = (LOGOG_CHAR)'\0'; - - va_list argsCopy; - - /** The va_list structure is not standardized across all platforms; in particular - ** Microsoft seems to have problem with the concept. - **/ -#if defined( va_copy ) - va_copy( argsCopy, args ); -#elif defined( __va_copy ) - __va_copy( argsCopy, args ); -#else - memcpy( &argsCopy, &args, sizeof(va_list) ); -#endif - -#ifdef LOGOG_UNICODE - /** At this point, nSizeInWords will contain the number of words permitted in the - ** output buffer. It takes into account space for appending a null character in the output - ** buffer as well. - **/ - int nSizeInWords = (nAttemptedSize / sizeof( LOGOG_CHAR )); -#endif - /** The nActualSize value receives different things on different platforms. - ** On some platforms it receives -1 on failure; on other platforms - ** it receives the number of LOGOG_CHARs actually formatted (excluding - ** the trailing NULL). - **/ - -#ifdef LOGOG_FLAVOR_WINDOWS -#ifdef LOGOG_UNICODE - nActualSize = _vsnwprintf_s( pszFormatted, nSizeInWords, _TRUNCATE, cFormatString, argsCopy ); -#else // LOGOG_UNICODE - nActualSize = vsnprintf_s( pszFormatted, nAttemptedSize, _TRUNCATE, cFormatString, argsCopy ); -#endif // LOGOG_UNICODE -#else // LOGOG_FLAVOR_WINDOWS -#ifdef LOGOG_UNICODE - nActualSize = vswprintf( pszFormatted, nSizeInWords, cFormatString, argsCopy ); -#else // LOGOG_UNICODE - nActualSize = vsnprintf( pszFormatted, nAttemptedSize, cFormatString, argsCopy ); -#endif // LOGOG_UNICODE -#endif // LOGOG_FLAVOR_WINDOWS - - va_end( argsCopy ); - - /** Convert the number of LOGOG_CHARs actually formatted into bytes. This - ** does NOT include the trailing NULL. - **/ - if ( nActualSize != -1 ) - nActualSize *= sizeof( LOGOG_CHAR ); - - /** When we're doing the compare, we have to keep in mind that the nActualSize - ** does not include a null. We need to verify that the nAttemptedSize can hold all - ** of nActualSize PLUS the size of one null on this platform. A LOGOG_CHAR could - ** be 1, 2, or 4 bytes long. So nAttemptedSize must be greater or equal to nActualSize - ** less the size of one (null) LOGOG_CHAR in bytes. Also, the last - ** allocation may have failed altogether. - ** - **/ - if (( nAttemptedSize >= (nActualSize - (int)sizeof(LOGOG_CHAR))) && ( nActualSize != -1)) - break; - - /** That attempted allocation failed */ - Deallocate( pszFormatted ); - - /** If nActualSize has a positive value, it includes the number of bytes needed to hold - ** the formatted string; we'll add a LOGOG_CHAR size to the end for the next - ** allocation. If nActualSize has no meaningful value, we'll double the previous - ** size and try again. - **/ - if (nActualSize > 0) - { - nAttemptedSize = nActualSize + sizeof( LOGOG_CHAR ); - } - else - { - nAttemptedSize *= 2; - } - - } - - m_bIsConst = false; - assign( pszFormatted ); - /* We just allocated this string, which means it needs to be deallocated - * at shutdown time. The previous function may have changed the const - * setting for this string, which means we may need to change it back here... - * */ - m_bIsConst = false; - } - - void String::Initialize() - { - m_pBuffer = NULL; - m_pOffset = NULL; - m_pEndOfBuffer = NULL; - m_pKMP = NULL; - m_bIsConst = false; - } - - void String::preKmp( size_t m ) - { - ScopedLock sl( GetStringSearchMutex() ); - - size_t i, j; - - if ( m_pBuffer == NULL ) - return; - - if ( m_pKMP == NULL ) - { - m_pKMP = (size_t *)Allocate( sizeof( size_t ) * ( m + 1) ); - } - - i = 0; - j = *m_pKMP = (size_t)-1; - - while (i < m) - { - while (j > (size_t)-1 && m_pBuffer[i] != m_pBuffer[j]) - j = m_pKMP[j]; - i++; - j++; - if (m_pBuffer[i] == m_pBuffer[j]) - m_pKMP[i] = m_pKMP[j]; - else - m_pKMP[i] = j; - } - } - - size_t String::KMP( const LOGOG_CHAR *y, size_t n ) - { - size_t i, j; - - size_t m = size() - 1; // ignore NULL char - - /* Preprocessing */ - if ( m_pKMP == NULL ) - preKmp( m ); - - /* Searching */ - i = j = 0; - while (j < n) - { - while (i > (size_t)-1 && m_pBuffer[i] != y[j]) - i = m_pKMP[i]; - i++; - j++; - if (i >= m) - { - return (j - i); - // We would do this if we cared about multiple substrings - // i = m_pKMP[i]; - } - } - - return npos; - } -} - diff --git a/ThirdParty/logog/src/message.cpp b/ThirdParty/logog/src/message.cpp deleted file mode 100644 index ffc38891a973323ca6e67ffa36564288a317b095..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/message.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * \file message.cpp - */ - -#include "logog.hpp" - -namespace logog -{ - Message::Message( const LOGOG_LEVEL_TYPE level, - const LOGOG_CHAR *sFileName , - const int nLineNumber, - const LOGOG_CHAR *sGroup, - const LOGOG_CHAR *sCategory, - const LOGOG_CHAR *sMessage, - const double dTimestamp, - bool *pbIsCreated ) : - Checkpoint( level, sFileName, nLineNumber, sGroup, sCategory, sMessage, dTimestamp ) - { - m_pbIsCreated = pbIsCreated; - - if ( pbIsCreated != NULL ) - *pbIsCreated = true; - - /* Messages are always sources, so there's no need to call Initialize() here */ - // Initialize(); - - /* NOTE! The message is typically assigned to a checkpoint AFTER it's been published. - * Ergo a message needs to be unpublished from, and published to, all filters - * iff one of those filters is searching for a substring of that message. - */ - PublishToMultiple( AllFilters() ); - } - - Message::~Message() - { - if ( m_pbIsCreated != NULL ) - *m_pbIsCreated = false; - } - - - bool Message::Republish() - { - UnpublishToMultiple( AllFilters() ); - return PublishToMultiple( AllFilters() ); - } - - Mutex &GetMessageCreationMutex() - { - Statics *pStatic = &Static(); - - if ( pStatic->s_pMessageCreationMutex == NULL ) - pStatic->s_pMessageCreationMutex = new Mutex(); - - return *( pStatic->s_pMessageCreationMutex ); - } - - void DestroyMessageCreationMutex() - { - Statics *pStatic = &Static(); - - if ( pStatic->s_pMessageCreationMutex != NULL ) - { - delete pStatic->s_pMessageCreationMutex; - pStatic->s_pMessageCreationMutex = NULL; - } - } -} - - diff --git a/ThirdParty/logog/src/mutex.cpp b/ThirdParty/logog/src/mutex.cpp deleted file mode 100644 index 730a5c42d88e29ca2567db73ab9be70a036e2f40..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/mutex.cpp +++ /dev/null @@ -1,92 +0,0 @@ - -/* - * \file mutex.cpp - */ - -#include "logog.hpp" - -namespace logog { - - Mutex::Mutex() LOGOG_MUTEX_CTOR( m_Mutex ) - { - LOGOG_MUTEX_INIT(&m_Mutex); - } - - Mutex::Mutex( const Mutex & ) - { - LOGOG_MUTEX_INIT(&m_Mutex); - } - - Mutex & Mutex::operator = (const Mutex &) - { - LOGOG_MUTEX_INIT(&m_Mutex); - return *this; - } - - Mutex::~Mutex() - { - LOGOG_MUTEX_DELETE(&m_Mutex); - } - - void Mutex::MutexLock() - { - LOGOG_MUTEX_LOCK(&m_Mutex); - } - - void Mutex::MutexUnlock() - { - LOGOG_MUTEX_UNLOCK(&m_Mutex); - } - - ScopedLock::ScopedLock( Mutex &mutex ) - { - m_pMutex = &mutex; - m_pMutex->MutexLock(); - } - - ScopedLock::~ScopedLock() - { - m_pMutex->MutexUnlock(); - } - -#ifdef LOGOG_LEAK_DETECTION - Mutex s_AllocationsMutex; - void LockAllocationsMutex() - { - s_AllocationsMutex.MutexLock(); - } - void UnlockAllocationsMutex() - { - s_AllocationsMutex.MutexUnlock(); - } -#endif // LOGOG_LEAK_DETECTION - - Mutex &GetStringSearchMutex() - { - Statics *pStatic = &Static(); - Mutex **ppStringSearchMutex = (Mutex **)&( pStatic->s_pStringSearchMutex ); - -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( pStatic == NULL ) - LOGOG_INTERNAL_FAILURE; -#endif - if ( *ppStringSearchMutex == NULL ) - *ppStringSearchMutex = new Mutex(); - - return *(( Mutex *)( *ppStringSearchMutex )); - } - - void DestroyStringSearchMutex() - { - Statics *pStatic = &Static(); - Mutex **ppStringSearchMutex = (Mutex **)&( pStatic->s_pStringSearchMutex ); - - if ( *ppStringSearchMutex != NULL ) - { - delete *ppStringSearchMutex; - *ppStringSearchMutex = NULL; - } - } - -} - diff --git a/ThirdParty/logog/src/node.cpp b/ThirdParty/logog/src/node.cpp deleted file mode 100644 index 2c161609be1bb54884a1f89bf9ca16272ec80d2c..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/node.cpp +++ /dev/null @@ -1,351 +0,0 @@ - -/* - * \file node.cpp - */ - -#include "logog.hpp" - -namespace logog { - - LockableNodesType & LockableNodesType::operator = (const LockableNodesType &other) - { - /* This function is only used at shutdown. */ - LockableNodesType::const_iterator it; - - it = other.begin(); - while ( it != other.end()) - { - this->insert( *it ); - ++it; - } - - return *this; - } - - LockableNodesType &GetStaticNodes( void ** pvLocation ) - { - if ( *pvLocation == NULL ) - *pvLocation = new LockableNodesType(); - - return *(( LockableNodesType *)( *pvLocation )); - - } - - LockableNodesType &AllNodes() - { - return GetStaticNodes( &(Static().s_pAllNodes) ); - } - - LockableNodesType &AllSubscriberNodes() - { - return GetStaticNodes( &(Static().s_pAllSubscriberNodes ) ); - } - - LockableNodesType &AllFilters() - { - return GetStaticNodes( &(Static().s_pAllFilterNodes ) ); - } - - LockableNodesType &AllTargets() - { - return GetStaticNodes( &(Static().s_pAllTargets ) ); - } - - Node::Node() - { - AllNodes().insert( this ); - } - - Node::~Node() - { - Clear(); - AllNodes().erase( this ); - } - - void Node::Initialize() - { - if ( CanSubscribe() ) - { - LockableNodesType *pSubscriberNodes = &AllSubscriberNodes(); - - { - ScopedLock sl( *pSubscriberNodes ); - pSubscriberNodes->insert( this ); - } - - /* This branch is taken iff this node can both subscribe and publish */ - if ( CanPublish() ) - { - LockableNodesType *pFilterNodes = &AllFilters(); - { - ScopedLock sl( *pFilterNodes ); - pFilterNodes->insert( this ); - } - } - } - } - - bool Node::CanPublish() const - { - return true; - } - - bool Node::CanSubscribe() const - { - return true; - } - - bool Node::CanSubscribeTo( const Node & ) - { - return CanSubscribe(); - } - - bool Node::IsTopic() const - { - return false; - } - - bool Node::PublishTo( Node &subscriber ) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( &subscriber == this ) - LOGOG_INTERNAL_FAILURE; -#endif - bool bWasInserted; - - { - ScopedLock sl( m_Subscribers ); - bWasInserted = ( m_Subscribers.insert( &subscriber ) ).second; - } - - if ( bWasInserted ) - subscriber.SubscribeTo( *this ); - - return bWasInserted; - } - - bool Node::PublishToMultiple( LockableNodesType &nodes ) - { - LockableNodesType::iterator it; - - bool bWasPublished = false; - - nodes.MutexLock(); - it = nodes.begin(); - - while ( it != nodes.end() ) - { - if ( PublishTo( **it ) == true ) - bWasPublished = true; - - it++; - } - - nodes.MutexUnlock(); - - return bWasPublished; - } - - bool Node::UnpublishTo( Node &subscriber ) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( &subscriber == this ) - LOGOG_INTERNAL_FAILURE; -#endif - bool bWasRemoved = false; - - { - ScopedLock sl( m_Subscribers ); - NodesType::iterator it; - - if ( ( it = m_Subscribers.find( &subscriber) ) != m_Subscribers.end() ) - { - bWasRemoved = true; - m_Subscribers.erase( it ); - } - } - - if ( bWasRemoved ) - subscriber.UnsubscribeTo( *this ); - - return bWasRemoved; - } - - bool Node::UnpublishToMultiple( LockableNodesType &nodes ) - { - LockableNodesType::iterator it; - - bool bWasUnpublished = false; - - nodes.MutexLock(); - it = nodes.begin(); - - while ( it != nodes.end() ) - { - if ( UnpublishTo( **it ) == true ) - bWasUnpublished = true; - - it++; - } - - nodes.MutexUnlock(); - - return bWasUnpublished; - } - - bool Node::SubscribeTo( Node &publisher ) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( &publisher == this ) - LOGOG_INTERNAL_FAILURE; -#endif - bool bWasInserted; - - { - ScopedLock sl( m_Publishers ); - bWasInserted = ( m_Publishers.insert( &publisher ) ).second; - } - - if ( bWasInserted ) - publisher.PublishTo( *this ); - - return bWasInserted; - } - - bool Node::SubscribeToMultiple( LockableNodesType &nodes ) - { - LockableNodesType::iterator it; - - bool bWasSubscribed = false; - - nodes.MutexLock(); - it = nodes.begin(); - - while ( it != nodes.end() ) - { - if ( SubscribeTo( **it ) == true ) - bWasSubscribed = true; - - it++; - } - - nodes.MutexUnlock(); - - return bWasSubscribed; - } - - bool Node::UnsubscribeTo( Node &publisher ) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( &publisher == this ) - LOGOG_INTERNAL_FAILURE; -#endif - bool bWasRemoved = false; - - { - ScopedLock sl( m_Publishers ); - NodesType::iterator it; - - if ( ( it = m_Publishers.find( &publisher ) ) != m_Publishers.end() ) - { - bWasRemoved = true; - m_Publishers.erase( it ); - } - } - - if ( bWasRemoved ) - publisher.UnpublishTo( *this ); - - return bWasRemoved; - } - - bool Node::UnsubscribeToMultiple( LockableNodesType &nodes ) - { - LockableNodesType::iterator it; - - bool bWasUnsubscribed = false; - - nodes.MutexLock(); - it = nodes.begin(); - - while ( it != nodes.end() ) - { - if ( UnsubscribeTo( **it ) == true ) - bWasUnsubscribed = true; - - it++; - } - - nodes.MutexUnlock(); - - return bWasUnsubscribed; - } - - void Node::Clear() - { - { - ScopedLock sl( m_Publishers ); - m_Publishers.clear(); - } - { - ScopedLock sl( m_Subscribers ); - m_Publishers.clear(); - } - } - - - void DestroyNodesList( void **pvList ) - { - LockableNodesType **ppNodesList = (LockableNodesType **)pvList; - - if ( *ppNodesList == NULL ) - return; - - (*ppNodesList)->clear(); - delete *ppNodesList; - *ppNodesList = NULL; - } - - void DestroyAllNodes() - { - Statics *pStatics = &Static(); - - LockableNodesType *pAllNodes = ( LockableNodesType *)pStatics->s_pAllNodes; - - if ( pAllNodes == NULL ) - return; - - /** Destroy all the node groups, but don't destroy their contents -- we'll do that as the next step. */ - DestroyNodesList( &(pStatics->s_pAllSubscriberNodes )); - DestroyNodesList( &(pStatics->s_pAllFilterNodes )); - DestroyNodesList( &(pStatics->s_pAllTargets )); - - /* We have to copy the AllNodes because destroying each node will remove it from AllNodes. Fortunately - * this only happens at shutdown, so we don't have to worry about efficiency. - */ - LockableNodesType nodes = *pAllNodes; - - LockableNodesType::iterator it; - - it = nodes.begin(); - - while ( it != nodes.end() ) - { - delete *it; - it++; - } - - nodes.clear(); - - #ifdef LOGOG_INTERNAL_DEBUGGING - if ( pAllNodes->size() != 0 ) - cout << "Not all nodes were deleted at shutdown -- memory leak may have occurred" << endl; - #endif - - pAllNodes->clear(); // just in case - delete pAllNodes; - pStatics->s_pAllNodes = NULL; - } - -} - diff --git a/ThirdParty/logog/src/platform.cpp b/ThirdParty/logog/src/platform.cpp deleted file mode 100644 index d191d10560bce86a951af98f73a881d67a57447f..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/platform.cpp +++ /dev/null @@ -1,11 +0,0 @@ - /* - * \file platform.cpp - */ - -#include "logog.hpp" - -namespace logog { - - bool sb_AvoidLinkError4221_platform_cpp = false; -} - diff --git a/ThirdParty/logog/src/socket.cpp b/ThirdParty/logog/src/socket.cpp deleted file mode 100644 index 533de0b7d8ddf86be880705cd30af791db5d0817..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/socket.cpp +++ /dev/null @@ -1,10 +0,0 @@ -/* - * \file socket.cpp - */ - -#include "logog.hpp" - -namespace logog { - bool sb_AvoidLinkError4221_socket_cpp = false; -} - diff --git a/ThirdParty/logog/src/statics.cpp b/ThirdParty/logog/src/statics.cpp deleted file mode 100644 index 05ec6bdcfdd88a922f7e2791f28e60d7852af7ca..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/statics.cpp +++ /dev/null @@ -1,57 +0,0 @@ - /* - * \file statics.cpp - */ - -#include "logog.hpp" - -namespace logog { - - Statics::Statics() - { - s_pAllNodes = NULL; - s_pAllSubscriberNodes = NULL; - s_pAllFilterNodes = NULL; - s_pAllTargets = NULL; - s_pTimer = NULL; - s_pDefaultFormatter = NULL; - s_pDefaultFilter = NULL; - s_pStringSearchMutex = NULL; - s_pMessageCreationMutex = NULL; - s_pfMalloc = NULL; - s_pfFree = NULL; - s_pSelf = this; - s_nSockets = 0; - } - - void Statics::Reset() - { - DestroyGlobalTimer(); - DestroyDefaultFormatter(); - s_pDefaultFilter = NULL; // This will be destroyed on the next step - DestroyAllNodes(); - DestroyStringSearchMutex(); - DestroyMessageCreationMutex(); - s_pfMalloc = NULL; - s_pfFree = NULL; - s_nSockets = 0; - } - - Statics::~Statics() - { - Reset(); - } - - Statics s_Statics; - - Statics &Static() - { - return s_Statics; - } - - void DestroyStatic() - { - s_Statics.~Statics(); - } - -} - diff --git a/ThirdParty/logog/src/target.cpp b/ThirdParty/logog/src/target.cpp deleted file mode 100644 index da9883e1feb8c6b526bc7569d9a541b8212d0ce0..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/target.cpp +++ /dev/null @@ -1,345 +0,0 @@ - /* - * \file target.cpp - */ - -#include "logog.hpp" - -#include <iostream> - -namespace logog { - - Target::Target() : - m_bNullTerminatesStrings( true ) - { - SetFormatter( GetDefaultFormatter() ); - LockableNodesType *pAllTargets = &AllTargets(); - - { - ScopedLock sl( *pAllTargets ); - pAllTargets->insert( this ); - } - - SubscribeToMultiple( AllFilters() ); - } - - - Target::~Target() - { - LockableNodesType *pAllTargets = &AllTargets(); - - UnsubscribeToMultiple( AllFilters() ); - - { - ScopedLock sl( *pAllTargets ); - pAllTargets->erase( this ); - } - } - - void Target::SetFormatter( Formatter &formatter ) - { - m_pFormatter = &formatter; - } - - Formatter & Target::GetFormatter() const - { - return *m_pFormatter; - } - - int Target::Receive( const Topic &topic ) - { - ScopedLock sl( m_MutexReceive ); - return Output( m_pFormatter->Format( topic, *this ) ); - } - - int Cerr::Output( const LOGOG_STRING &data ) - { - LOGOG_CERR << (const LOGOG_CHAR *)data; - - return 0; - } -//! [Cout] - int Cout::Output( const LOGOG_STRING &data ) - { - LOGOG_COUT << (const LOGOG_CHAR *)data; - - return 0; - } -//! [Cout] - - int OutputDebug::Output( const LOGOG_STRING &data ) - { -#ifdef LOGOG_FLAVOR_WINDOWS -#ifdef LOGOG_UNICODE - OutputDebugStringW( (const LOGOG_CHAR *)data ); -#else - OutputDebugStringA( (const LOGOG_CHAR *)data ); -#endif // LOGOG_UNICODE -#else - (void)data; -#endif // LOGOG_FLAVOR_WINDOWS - return 0; - } - - LogFile::LogFile(const char *sFileName) : - m_bFirstTime( true ), - m_bOpenFailed( false ), - m_pFile( NULL ) - { - m_bNullTerminatesStrings = false; - -#ifdef LOGOG_UNICODE - m_bWriteUnicodeBOM = true; -#else // LOGOG_UNICODE - m_bWriteUnicodeBOM = false; -#endif // LOGOG_UNICODE - - int nNameLength = 0; - - const char *sNameCount = sFileName; - while ( *sNameCount++ != '\0' ) - nNameLength++; - - // add one for trailing null - nNameLength++; - - m_pFileName = (char *)Object::Allocate( nNameLength ); - - char *m_pOut = m_pFileName; - while ( ( *m_pOut++ = *sFileName++) != '\0' ) - ; - } - - LogFile::~LogFile() - { - if ( m_pFile ) - fclose( m_pFile ); - - Object::Deallocate( m_pFileName ); - } - - int LogFile::Open() - { - int nError = 1; // preset this in case LOGOG_FLAVOR_WINDOWS is not defined - - bool bFileAlreadyExists = false; - FILE *fpTest; - -#ifdef LOGOG_FLAVOR_WINDOWS - nError = fopen_s( &fpTest, m_pFileName, "r"); // ignore the error code -#else // LOGOG_FLAVOR_WINDOWS - (void)nError; // Unused - fpTest = fopen( m_pFileName, "r"); -#endif // LOGOG_FLAVOR_WINDOWS - - if ( fpTest != NULL ) - { - fclose( fpTest ); - bFileAlreadyExists = true; - } - - /** Windows tries to be clever and help us with converting line feeds - ** to carriage returns when writing a text file. This causes problems - ** when writing a Unicode file as Windows helpfully inserts a single-byte - ** 0x0D between the return and line feed on write. So we open and operate - ** the output in binary mode only. - **/ -#ifdef LOGOG_FLAVOR_WINDOWS -#ifdef LOGOG_UNICODE - nError = fopen_s( &m_pFile, m_pFileName, "ab, ccs=UNICODE" ); -#else // LOGOG_UNICODE - nError = fopen_s( &m_pFile, m_pFileName, "ab" ); -#endif // LOGOG_UNICODE - if ( nError != 0 ) - return nError; -#else // LOGOG_FLAVOR_WINDOWS - m_pFile = fopen( m_pFileName, "ab+" ); -#endif // LOGOG_FLAVOR_WINDOWS - - if ( m_pFile == NULL ) - m_bOpenFailed = true; // and no further outputs will work - else - { -#ifdef LOGOG_UNICODE - if ( !bFileAlreadyExists ) - { - WriteUnicodeBOM(); - } -#endif - } - - return ( m_pFile ? 0 : -1 ); - } - - int LogFile::Output( const LOGOG_STRING &data ) - { - if ( m_bOpenFailed ) - return -1; - - int result = 0; - if ( m_bFirstTime ) - { - result = Open(); - if ( result != 0 ) - return result; - - m_bFirstTime = false; - } - - return InternalOutput( data.size(), data.c_str()); - } - - int LogFile::InternalOutput( size_t nSize, const LOGOG_CHAR *pData ) - { - size_t result; - - result = fwrite( pData, sizeof( LOGOG_CHAR ), nSize, m_pFile ); - - if ( (size_t)result != nSize ) - return -1; - - return 0; - } - - void LogFile::WriteUnicodeBOM() - { - static union { - int i; - char c[4]; - } bDetectEndian = {0x01020304}; - - bool bIsLittleEndian = ( bDetectEndian.c[0] != 1 ); - - switch ( sizeof( LOGOG_CHAR )) - { - case 1: - // This could be a UTF-8 BOM but technically very few systems support - // sizeof( wchar_t ) == sizeof( char ). So for now we're not going - // to write a BOM in these cases. - break; - - case 2: - if ( bIsLittleEndian ) - InternalOutput( 1, (const LOGOG_CHAR *)"\xFF\xFE" ); // little endian UTF-16LE - else - InternalOutput( 1, (const LOGOG_CHAR *)"\xFE\xFF" ); // big endian UTF-16BE - - break; - - case 4: - if ( bIsLittleEndian ) - InternalOutput( 1, (const LOGOG_CHAR *)"\xFF\xFE\x00\x00" ); // little endian UTF-32LE - else - InternalOutput( 1, (const LOGOG_CHAR *)"\x00\x00\xFE\xFF" ); // big endian UTF-32BE - - break; - - default: - // No idea what that character size is; do nothing - break; - } - } - - LogBuffer::LogBuffer( Target *pTarget , - size_t s ) : - m_pStart( NULL ), - m_nSize( 0 ) - { - m_pOutputTarget = pTarget; - Allocate( s ); - } - - LogBuffer::~LogBuffer() - { - Dump(); - Deallocate(); - } - - void LogBuffer::SetTarget( Target &t ) - { - m_pOutputTarget = &t; - } - - int LogBuffer::Insert( const LOGOG_CHAR *pChars, size_t size ) - { - if (( m_pCurrent + size ) >= m_pEnd ) - Dump(); - - if ( size > (size_t)( m_pEnd - m_pStart )) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - cerr << "Cannot insert string into buffer; string is larger than buffer. Allocate a larger size for the LogBuffer." << endl; -#endif - return -1; // can't fit this into buffer; punt it - } - - // Store the size of this string in the buffer - size_t *pSize; - pSize = ( size_t *)m_pCurrent; - *pSize = size; - m_pCurrent = (LOGOG_CHAR *)++pSize; - - while ( size-- ) - *m_pCurrent++ = *pChars++; - - return 0; - } - - int LogBuffer::Dump() - { - LOGOG_CHAR *pCurrent = m_pStart; - size_t *pSize; - int nError; - - if ( m_pOutputTarget == NULL ) - return -1; - - // We have to lock the output target here, as we do an end run around its Receive() function */ - ScopedLock sl( m_pOutputTarget->m_MutexReceive ); - - while ( pCurrent < m_pCurrent ) - { - String sOut; - // Get the size of this entry - pSize = ( size_t * )pCurrent; - // Move past that entry into the data area - pCurrent = ( LOGOG_CHAR * )( pSize + 1 ); - - sOut.assign( pCurrent, pCurrent + *pSize - 1 ); - - if ( m_pOutputTarget ) - { - nError = m_pOutputTarget->Output( sOut ); - if ( nError != 0 ) - return nError; - } - - pCurrent += *pSize; - } - - // reset buffer - m_pCurrent = m_pStart; - - return 0; - } - - int LogBuffer::Output( const LOGOG_STRING &data ) - { - return Insert( &(*data), data.size() ); - } - - void LogBuffer::Allocate( size_t size ) - { - m_nSize = size; - m_pCurrent = m_pStart = (LOGOG_CHAR *)Object::Allocate( size * sizeof( LOGOG_CHAR )); - m_pEnd = m_pStart + size; - } - - void LogBuffer::Deallocate() - { - if ( m_pStart ) - Object::Deallocate( m_pStart ); - - m_nSize = 0; - } -} - diff --git a/ThirdParty/logog/src/timer.cpp b/ThirdParty/logog/src/timer.cpp deleted file mode 100644 index accaacac1d6b128e9cccf70948f423777fc1f2d8..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/timer.cpp +++ /dev/null @@ -1,80 +0,0 @@ - -/* - * \file timer.cpp - */ - -#include "logog.hpp" - -namespace logog { - - Timer::Timer() - { - m_fStartTime = 0.0f; - -#ifdef LOGOG_FLAVOR_WINDOWS - LARGE_INTEGER TicksPerSecond; - QueryPerformanceFrequency( &TicksPerSecond ); - m_fTicksPerMicrosecond = (DOUBLE)TicksPerSecond.QuadPart * 0.000001; -#endif - Set( 0.0f ); - } - -//! [TimerGet] - logog::LOGOG_TIME Timer::Get() - { -#ifdef LOGOG_FLAVOR_WINDOWS - LARGE_INTEGER liTime; - QueryPerformanceCounter( &liTime ); - - double dusec; - dusec =( liTime.QuadPart / m_fTicksPerMicrosecond ); - - return ( dusec / 1000000.0f ) - m_fStartTime; -#endif - -#ifdef LOGOG_FLAVOR_POSIX -#ifdef LOGOG_TARGET_PS3 - LOGOG_PS3_GET_TIME; -#else // LOGOG_TARGET_PS3 - // General Posix implementation - timeval tv; - gettimeofday( &tv, 0 ); - return ((double) (tv.tv_sec) + ((double)(tv.tv_usec ) / 1000000.0 ) - m_fStartTime); -#endif // LOGOG_TARGET_PS3 -#endif - } -//! [TimerGet] - - void Timer::Set( LOGOG_TIME time ) - { - m_fStartTime = time + Get(); - } - - Timer &GetGlobalTimer() - { - Statics *pStatic = &Static(); - -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( pStatic == NULL ) - LOGOG_INTERNAL_FAILURE; -#endif - - if ( pStatic->s_pTimer == NULL ) - pStatic->s_pTimer = new Timer(); - - return *(pStatic->s_pTimer ); - } - - void DestroyGlobalTimer() - { - Statics *pStatic = &Static(); - Timer *pGlobalTimer = pStatic->s_pTimer; - - if ( pGlobalTimer != NULL ) - delete pGlobalTimer; - - pStatic->s_pTimer = NULL; - } - -} - diff --git a/ThirdParty/logog/src/topic.cpp b/ThirdParty/logog/src/topic.cpp deleted file mode 100644 index 619aa305c745b1cbc4306e41491a65934c465283..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/topic.cpp +++ /dev/null @@ -1,454 +0,0 @@ - -/* - * \file topic.cpp - */ - -#include "logog.hpp" - -namespace logog { - - void SetDefaultLevel( LOGOG_LEVEL_TYPE level ) - { - Filter *pDefaultFilter = &GetDefaultFilter(); - - pDefaultFilter->Level( level ); - } - - Topic::Topic( const LOGOG_LEVEL_TYPE level , - const LOGOG_CHAR *sFileName , - const int nLineNumber , - const LOGOG_CHAR *sGroup , - const LOGOG_CHAR *sCategory , - const LOGOG_CHAR *sMessage , - const double dTimestamp ) - { - m_TopicFlags = 0; - - if ( sFileName != NULL ) - { - m_vStringProps[ TOPIC_FILE_NAME ] = sFileName; - m_TopicFlags |= TOPIC_FILE_NAME_FLAG; - } - - if ( sGroup != NULL ) - { - m_vStringProps[ TOPIC_GROUP ] = sGroup; - m_TopicFlags |= TOPIC_GROUP_FLAG; - } - - if ( sCategory != NULL ) - { - m_vStringProps[ TOPIC_CATEGORY ] = sCategory; - m_TopicFlags |= TOPIC_CATEGORY_FLAG; - } - - if ( sMessage != NULL ) - { - m_vStringProps[ TOPIC_MESSAGE ] = sMessage; - m_TopicFlags |= TOPIC_MESSAGE_FLAG; - } - - m_vIntProps[ TOPIC_LEVEL ] = level; - - if ( level != LOGOG_LEVEL_ALL ) - { - m_TopicFlags |= TOPIC_LEVEL_FLAG; - } - - m_vIntProps[ TOPIC_LINE_NUMBER ] = nLineNumber; - - if ( nLineNumber != 0 ) - { - m_TopicFlags |= TOPIC_LINE_NUMBER_FLAG; - } - - m_tTime = dTimestamp; - - if ( dTimestamp != 0.0f ) //-V550 - m_TopicFlags |= TOPIC_TIMESTAMP_FLAG; - } - - bool Topic::IsTopic() const - { - return true; - } - - int Topic::Send( const Topic &node ) - { - LockableNodesType::iterator it; - - { - ScopedLock sl( m_Subscribers ); - it = m_Subscribers.begin(); - } - - /* Iterate over the subscribers, but only addressing the subscribers group while locking it */ - Topic *pCurrentTopic; - Node *pCurrentNode; - m_Subscribers.MutexLock(); - int nError = 0; - - while ( it != m_Subscribers.end() ) - { - pCurrentNode = *it; - - if ( pCurrentNode->IsTopic() == false ) - continue; - - pCurrentTopic = ( Topic * )pCurrentNode; - - if ( pCurrentTopic ) - nError += pCurrentTopic->Receive( node ); - - it++; - } - - m_Subscribers.MutexUnlock(); - - return nError; - } - - int Topic::Transmit() - { - return Send( *this ); - } - - int Topic::Receive( const Topic &node ) - { - /* Default implementation -- send it on to all children */ - return Send( node ); - } - - bool Topic::CanSubscribeTo( const Node &otherNode ) - { - if ( CanSubscribe() == false ) - return false; - - if ( otherNode.IsTopic() == false ) - return false; - - Topic *pTopic = ( Topic * )&otherNode; - - /* This function will change from topic class to topic class. */ - return CanSubscribeCheckTopic( *pTopic ); - } - - bool Topic::CanSubscribeCheckTopic( const Topic &other ) - { - /* This is the generic comparison case. We'll want to optimize this function for other types - * of topics. - */ - - /* Check topics in likely order of disinterest */ - if ( m_TopicFlags & TOPIC_LEVEL_FLAG ) - { - /* Topic levels are less interesting the larger the numbers are. */ - if ( other.m_vIntProps[ TOPIC_LEVEL ] > m_vIntProps[ TOPIC_LEVEL ] ) - return false; - } - - if ( m_TopicFlags & TOPIC_GROUP_FLAG ) - { - /* If our topic is not a substring of the publisher's topic, ignore this */ - if (( other.m_vStringProps[ TOPIC_GROUP ] ).find( m_vStringProps[ TOPIC_GROUP ] ) == LOGOG_STRING::npos ) - return false; - } - - if ( m_TopicFlags & TOPIC_CATEGORY_FLAG ) - { - /* If our topic is not a substring of the publisher's topic, ignore this */ - if (( other.m_vStringProps[ TOPIC_CATEGORY ] ).find( m_vStringProps[ TOPIC_CATEGORY ] ) == LOGOG_STRING::npos ) - return false; - } - - if ( m_TopicFlags & TOPIC_FILE_NAME_FLAG ) - { - /* If our topic is not a substring of the publisher's file name, ignore this. */ - if (( other.m_vStringProps[ TOPIC_FILE_NAME ] ).find( m_vStringProps[ TOPIC_FILE_NAME ] ) == LOGOG_STRING::npos ) - return false; - } - - if ( m_TopicFlags & TOPIC_LINE_NUMBER_FLAG ) - { - /* If our line number doesn't equal theirs, ignore this */ - if ( other.m_vIntProps[ TOPIC_LINE_NUMBER ] != m_vIntProps[ TOPIC_LINE_NUMBER ] ) - return false; - } - - if ( m_TopicFlags & TOPIC_MESSAGE_FLAG ) - { - /* If our topic is not a substring of the publisher's file name, ignore this. */ - if (( other.m_vStringProps[ TOPIC_MESSAGE ] ).find( m_vStringProps[ TOPIC_MESSAGE ] ) == LOGOG_STRING::npos ) - return false; - } - - if ( m_TopicFlags & TOPIC_TIMESTAMP_FLAG ) - { - /* Timestamps are only interesting if they're greater than or equal to ours. */ - if ( other.m_tTime < m_tTime ) - return false; - } - - /* all tests passed */ - return true; - } - - bool Topic::PublishTo( Node &subscriber ) - { -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( &subscriber == this ) - LOGOG_INTERNAL_FAILURE; -#endif - bool bWasInserted; - - /** Additional checking may be required first -- can the subscriber handle this publishing? */ - if ( subscriber.IsTopic() ) - { - Topic *pSubscriber = (Topic *)&subscriber; - - if ( pSubscriber->CanSubscribeTo( *this ) == false ) - return false; - } - - { - ScopedLock sl( m_Subscribers ); - bWasInserted = ( m_Subscribers.insert( &subscriber ) ).second; - } - - if ( bWasInserted ) - subscriber.SubscribeTo( *this ); - - return bWasInserted; - } - - void Topic::Format( const LOGOG_CHAR *cFormatMessage, ... ) - { - va_list args; - - va_start( args, cFormatMessage ); - m_vStringProps[ TOPIC_MESSAGE ].format_va( cFormatMessage, args ); - va_end( args ); - - m_TopicFlags |= TOPIC_MESSAGE_FLAG; - } - - const LOGOG_STRING & Topic::FileName() const - { - return m_vStringProps[ TOPIC_FILE_NAME ]; - } - - void Topic::FileName( const LOGOG_STRING &s ) - { - m_vStringProps[ TOPIC_FILE_NAME ] = s; - m_TopicFlags |= TOPIC_FILE_NAME_FLAG; - } - - const LOGOG_STRING & Topic::Message() const - { - return m_vStringProps[ TOPIC_MESSAGE ]; - } - - void Topic::Message( const LOGOG_STRING &s ) - { - m_vStringProps[ TOPIC_MESSAGE ] = s; - m_TopicFlags |= TOPIC_MESSAGE_FLAG; - } - - const LOGOG_STRING & Topic::Category() const - { - return m_vStringProps[ TOPIC_CATEGORY ]; - } - - void Topic::Category( const LOGOG_STRING &s ) - { - m_vStringProps[ TOPIC_CATEGORY ] = s; - m_TopicFlags |= TOPIC_CATEGORY_FLAG; - } - - const LOGOG_STRING & Topic::Group() const - { - return m_vStringProps[ TOPIC_GROUP ]; - } - - void Topic::Group( const LOGOG_STRING &s ) - { - m_vStringProps[ TOPIC_GROUP ] = s; - m_TopicFlags |= TOPIC_GROUP_FLAG; - } - - int Topic::LineNumber() const - { - return m_vIntProps[ TOPIC_LINE_NUMBER ]; - } - - void Topic::LineNumber( const int num ) - { - m_vIntProps[ TOPIC_LINE_NUMBER ] = num; - m_TopicFlags |= TOPIC_LINE_NUMBER_FLAG; - } - - LOGOG_LEVEL_TYPE Topic::Level() const - { - return ( LOGOG_LEVEL_TYPE )m_vIntProps[ TOPIC_LEVEL ]; - } - - void Topic::Level( LOGOG_LEVEL_TYPE level ) - { - m_vIntProps[ TOPIC_LEVEL ] = level; - m_TopicFlags |= TOPIC_LEVEL_FLAG; - } - - logog::LOGOG_TIME Topic::Timestamp() const - { - return m_tTime; - } - - void Topic::Timestamp( const LOGOG_TIME t ) - { - m_tTime = t; - m_TopicFlags |= TOPIC_TIMESTAMP_FLAG; - } - - TOPIC_FLAGS Topic::GetTopicFlags() const - { - return m_TopicFlags; - } - - -/********************************************************/ - - Filter::Filter( const LOGOG_LEVEL_TYPE level , - const LOGOG_CHAR *sFileName , - const int nLineNumber , - const LOGOG_CHAR *sGroup , - const LOGOG_CHAR *sCategory , - const LOGOG_CHAR *sMessage , - const double dTimestamp ) : - Topic( level, sFileName, nLineNumber, sGroup, sCategory, sMessage, dTimestamp ) - { - Statics *pStatic = &Static(); - -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( pStatic == NULL ) - LOGOG_INTERNAL_FAILURE; -#endif - - if ( pStatic->s_pDefaultFilter == NULL ) - pStatic->s_pDefaultFilter = this; - - PublishToMultiple( AllTargets() ); - - LockableNodesType *pFilterNodes = &AllFilters(); - - { - ScopedLock sl( *pFilterNodes ); - pFilterNodes->insert( this ); - } - } - - Filter &GetDefaultFilter() - { - Statics *pStatic = &Static(); - -#ifdef LOGOG_INTERNAL_DEBUGGING - if ( pStatic == NULL ) - LOGOG_INTERNAL_FAILURE; -#endif - - if ( pStatic->s_pDefaultFilter == NULL ) - { - pStatic->s_pDefaultFilter = new Filter( LOGOG_LEVEL ); - } - - return *((Filter *)(pStatic->s_pDefaultFilter)); - } - - TopicGroup::TopicGroup( const LOGOG_CHAR *sGroup ) : - Topic( LOGOG_LEVEL_ALL, NULL, 0, sGroup ) - { - } - - bool TopicGroup::CanSubscribeCheckTopic( const Topic &other ) - { - if ( m_TopicFlags & TOPIC_LEVEL_FLAG ) - { - /* Topic levels are less interesting the larger the numbers are. */ - if ( other.m_vIntProps[ TOPIC_LEVEL ] > m_vIntProps[ TOPIC_LEVEL ] ) - return false; - } - - return true; - } - - TopicLevel::TopicLevel( const LOGOG_LEVEL_TYPE level ) : - Topic( level ) - { - } - - - bool TopicLevel::CanSubscribeCheckTopic( const Topic &other ) - { - /* Check topics in likely order of disinterest */ - if ( m_TopicFlags & TOPIC_LEVEL_FLAG ) - { - /* Topic levels are less interesting the larger the numbers are. */ - if ( other.m_vIntProps[ TOPIC_LEVEL ] > m_vIntProps[ TOPIC_LEVEL ] ) - return false; - } - - /* all tests passed */ - return true; - } - - TopicSource::TopicSource( const LOGOG_LEVEL_TYPE level , - const LOGOG_CHAR *sFileName, - const int nLineNumber, - const LOGOG_CHAR *sGroup, - const LOGOG_CHAR *sCategory, - const LOGOG_CHAR *sMessage, - const double dTimestamp ) : - Topic( level, sFileName, nLineNumber, sGroup, sCategory, sMessage, dTimestamp ) - { - } - - bool TopicSource::SubscribeTo( Node & ) - { - return false; - } - - bool TopicSource::UnsubscribeTo( Node & ) - { - return false; - } - - bool TopicSource::CanSubscribe() const - { - return false; - } - - bool TopicSink::IsTopic() const - { - return true; - } - - void TopicSink::Initialize() - { - - } - - bool TopicSink::PublishTo( Node & ) - { - return false; - } - - bool TopicSink::UnpublishTo( Node & ) - { - return false; - } - - bool TopicSink::CanPublish() const - { - return false; - } -} - diff --git a/ThirdParty/logog/src/unittest.cpp b/ThirdParty/logog/src/unittest.cpp deleted file mode 100644 index c5863cff60de2194eb7db8ca0b63bf343f1b7d4e..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/src/unittest.cpp +++ /dev/null @@ -1,128 +0,0 @@ - -/* - * \file unittest.cpp - */ - -#define LOGOG_UNIT_TESTING 1 - -#include "logog.hpp" - -namespace logog -{ - -TestRegistryType &LogogTestRegistry() -{ - static TestRegistryType *pRegistry = new TestRegistryType(); - return *pRegistry; -} - -TestSignup::TestSignup( UnitTest *pTest ) -{ - m_pTest = pTest; - LogogTestRegistry().push_back( pTest ); -} - -UnitTest::UnitTest( const TestNameType &sTestName ) -{ - m_sTestName = sTestName; - m_pTestSignup = new TestSignup( this ); -} - -UnitTest::~UnitTest() -{ - FreeInternals(); -} - -void UnitTest::FreeInternals() -{ - if ( m_pTestSignup ) - delete m_pTestSignup; - - m_pTestSignup = NULL; -} - -/** Returns the name of this UnitTest provided at construction time. */ -TestNameType &UnitTest::GetName() -{ - return m_sTestName; -} - -/** Executes all currently registered tests and prints a report of success or failure. */ -int RunAllTests() -{ - using namespace std; - - int nTests = 0, nTestsSucceeded = 0; - int nTestResult; - int nFailures = 0; - -#ifdef LOGOG_UNICODE - wostream *pOut; -#else // LOGOG_UNICODE - ostream *pOut; -#endif // LOGOG_UNICODE - - pOut = &(LOGOG_COUT); - - nTests = (int) LogogTestRegistry().size(); - - if ( nTests == 0 ) - { - *pOut << _LG("No tests currently defined.") << endl; - return 1; - } - - for ( TestRegistryType::iterator it = LogogTestRegistry().begin(); - it != LogogTestRegistry().end(); - ++it ) - { - (*pOut) << _LG("Test ") << (*it)->GetName() << _LG(" running... ") << endl; - nTestResult = (*it)->RunTest(); - - (*pOut) << _LG("Test ") << (*it)->GetName(); - - if ( nTestResult == 0 ) - { - *pOut << _LG(" successful.") << endl; - nTestsSucceeded++; - } - else - { - *pOut << _LG(" failed!") << endl; - nFailures++; - } - - /* Validate that no allocations are currently outstanding. Make sure to handle the case - * where leak detection is disabled */ - int nMemoryTestResult = ReportMemoryAllocations(); - - if ( nMemoryTestResult != -1 ) - { - (*pOut) << _LG("Test ") << (*it)->GetName() << _LG(" has ") << nMemoryTestResult << - _LG(" memory allocations outstanding at end of test.") << endl; - nFailures += nMemoryTestResult; - } - } - - *pOut << _LG("Testing complete, ") - << nTests << _LG(" total tests, ") - << nTestsSucceeded << _LG(" tests succeeded, ") - << ( nTests - nTestsSucceeded ) << _LG(" failed") - << endl; - - return nFailures; -} - -/** Should remove all memory allocated during unit testing. */ -void ShutdownTests() -{ - TestRegistryType::iterator it; - - for ( it = LogogTestRegistry().begin(); it != LogogTestRegistry().end(); it++ ) - (*it)->FreeInternals(); - - delete &LogogTestRegistry(); -} - -} - diff --git a/ThirdParty/logog/test/CMakeLists.txt b/ThirdParty/logog/test/CMakeLists.txt deleted file mode 100644 index f818a2e4fb04e7a99e7909fd43aa88df3890225f..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/test/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -add_executable( test test.cpp ) - diff --git a/ThirdParty/logog/test/test.cpp b/ThirdParty/logog/test/test.cpp deleted file mode 100644 index 3bb34ebeb2271ae16cc8ba365bc6078ac1cf33a8..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/test/test.cpp +++ /dev/null @@ -1,837 +0,0 @@ -/** Only define this macro in source files that create unit tests. This setting brings in the std namespace, so its - ** use is not recommended outside of unit tests. */ -#define LOGOG_UNIT_TESTING 1 - -/** Change this to higher constants to exponentially increase test difficulty. */ -const int TEST_STRESS_LEVEL = 1; - -#include "logog.hpp" - -#include <cstdio> - -#include <fcntl.h> - -#ifdef LOGOG_FLAVOR_WINDOWS -#include <io.h> -#endif - -using namespace logog; -using namespace std; - -UNITTEST( SimpleLocking ) -{ -//! [SimpleLocking] - LOGOG_INITIALIZE(); - - { - logog::Mutex m; - - { - logog::ScopedLock s1( m ); - LOGOG_COUT << _LG("Lock is on") << endl; - } - - logog::Mutex *pM = new logog::Mutex(); - - { - logog::ScopedLock s1( *pM ); - LOGOG_COUT << _LG("Lock is on") << endl; - } - - delete pM; - - LOGOG_COUT << _LG("Lock unlocked") << endl; - - logog::Message m1; - - } - - LOGOG_SHUTDOWN(); - - return 0; -//! [SimpleLocking] -} - -int _s_ThreadLockingTest = 0; - -void LockingThread( void *pvMutex ) -{ - const int NUM_TRIALS = 10 * TEST_STRESS_LEVEL; - Mutex *pMutex = (Mutex *)pvMutex; - - if ( pMutex == NULL ) - { - _s_ThreadLockingTest = 1; - LOGOG_COUT << _LG("LockingThread received a NULL argument!") << endl; - return; - } - - for ( int t = 0; t < NUM_TRIALS; t++ ) - { - { - ScopedLock sl( *pMutex ); - INFO( _LG("Thread acquired lock on trial %d"), t); - } - - INFO( _LG("Thread released lock %d"), t ); - } -} - - -UNITTEST( Subscription ) -{ - int nResult = 0; - -//! [Subscription] - LOGOG_INITIALIZE(); - - { - Topic n1, n2; - - // should succeed - if ( n1.SubscribeTo( n2 ) != true ) - nResult++; - - // should indicate no insertion took place - if ( n2.PublishTo( n1 ) != false ) - nResult++; - - n2.Transmit(); - - if ( n2.UnpublishTo( n1 ) != true ) - nResult++; - - if ( n1.UnsubscribeTo( n2 ) != false ) - nResult++; - } - - LOGOG_SHUTDOWN(); - -//! [Subscription] - - return nResult; -} - -UNITTEST( GlobalNodelist ) -{ - LOGOG_INITIALIZE(); - - const int MAX_NODES = 10 * TEST_STRESS_LEVEL; - - LOGOG_VECTOR< Topic *> vTopics; - - for (int t = 0; t < MAX_NODES; t++ ) - vTopics.push_back( new Topic ); - - for ( int i = 0; i < MAX_NODES; i++ ) - for ( int j = i + 1; j < MAX_NODES; j++ ) - vTopics.at( i )->SubscribeTo( *vTopics.at( j ) ); - - LockableNodesType *pNodes = ( LockableNodesType * )Static().s_pAllNodes; - - // For this test we assume that the default Filter has always been created. - if ( pNodes->size() != ( MAX_NODES + 1)) - { - LOGOG_COUT << _LG("Incorrect number of nodes!") << endl; - return 1; - } - - // Try having that master node send a message to all other nodes! - vTopics.at( MAX_NODES - 1)->Transmit(); - - // Let's try leaving all the nodes allocated and let logog clean them all up. - LOGOG_SHUTDOWN(); - - if ( Static().s_pAllNodes != NULL ) - { - LOGOG_COUT << _LG("Could not delete all nodes!") << endl; - return 1; - } - - return 0; -} - - -UNITTEST( TimerTest ) -{ - const int NUM_TRIALS = 10 * TEST_STRESS_LEVEL; - const int WAIT_TIME = 1000000 * TEST_STRESS_LEVEL; - - Timer time; - LOGOG_TIME fCurrent = time.Get(); - - for ( int t = 0; t < NUM_TRIALS; t++ ) - { - /* do busy work */ - int k = 0; - for ( int i = 0; i < WAIT_TIME; i++ ) - k = k + 1; // fixes a lint warning - - if ( time.Get() < fCurrent ) - { - LOGOG_COUT << _LG("Timer error! Non monotonic timer behavior") << endl; - return 1; - } - fCurrent = time.Get(); - LOGOG_COUT << _LG("Current reported time: ") << fCurrent << endl; - } - - return 0; -} - -UNITTEST( TopicTest1 ) -{ - LOGOG_INITIALIZE(); - - { - Topic t1( LOGOG_LEVEL_WARN, - _LG( "file1.cpp" ), 50 ); - Topic t2( LOGOG_LEVEL_WARN ); - Topic t3( LOGOG_LEVEL_ERROR, - _LG( "file2.cpp" ), 100 ); - Topic t4( LOGOG_LEVEL_WARN, NULL, 0, - _LG( "Group" ), - _LG( "Category" ), - _LG( "Message" ), - 30.0f); - Topic t5( LOGOG_LEVEL_CRITICAL, NULL, 0, - _LG( "GroupGROUP" ), - _LG( "Important Category" ), - _LG( "Your Message Here"), - 150.0f); - - if (t1.CanSubscribeTo( t2 ) == true) - { - LOGOG_COUT << _LG("Subscription test failed; t1 can subscribe to t2") << endl; - return 1; - } - - if (t2.CanSubscribeTo( t1 ) == false ) - { - LOGOG_COUT << _LG("Subscription test failed; t2 can't subscribe to t1") << endl; - return 1; - } - - if ( t1.CanSubscribeTo( t3 ) == true ) - { - LOGOG_COUT << _LG("Subscription test failed; t1 can subscribe to t3") << endl; - return 1; - } - - if (t2.CanSubscribeTo( t3 ) == false ) - { - LOGOG_COUT << _LG("Subscription test failed; t2 can't subscribe to t3") << endl; - return 1; - } - - if (t4.CanSubscribeTo( t5 ) == false ) - { - LOGOG_COUT << _LG("Subscription test failed; t4 can't subscribe to t5") << endl; - return 1; - } - - if ( t5.CanSubscribeTo( t4 ) == true ) - { - LOGOG_COUT << _LG("Subscription test failed; t5 can subscribe to t4") << endl; - return 1; - } - } - - LOGOG_SHUTDOWN(); - - return 0; -} - -UNITTEST( Checkpoint1 ) -{ - LOGOG_INITIALIZE(); - - { - Checkpoint check( LOGOG_LEVEL_ALL, _LG( __FILE__ ), __LINE__, - _LG("Group"), _LG("Category"), _LG("Message"), 1.0f ); - - Topic t; - - Cerr cerrobj; - Cerr cerrgnu; - OutputDebug outdebug; - - FormatterGCC f; - cerrgnu.SetFormatter( f ); - - check.PublishTo( t ); - t.PublishToMultiple( AllTargets() ); - - LOGOG_COUT << _LG("Setup complete; ready to transmit ") << endl; - check.Transmit(); - } - - LOGOG_SHUTDOWN(); - - return 0; -} - -UNITTEST( FormatString1 ) -{ - LOGOG_INITIALIZE(); - { - String s; - - s.format( _LG("This is a test message.\n")); - LOGOG_COUT << s.c_str(); - - s.format( _LG("This is a test message: %d %x %f\n"), 1234, 0xf00d, 1.234f ); - LOGOG_COUT << s.c_str(); - - const LOGOG_CHAR *p = _LG("Here is a string"); - -#ifdef LOGOG_UNICODE - s.format( _LG("Here are six strings: %ls %ls %ls %ls %ls %ls \n"), p,p,p,p,p,p ); -#else // LOGOG_UNICODE - s.format( _LG("Here are six strings: %s %s %s %s %s %s \n"), p,p,p,p,p,p ); -#endif - - LOGOG_COUT << s.c_str(); - } - - LOGOG_SHUTDOWN(); - - return 0; -} - -UNITTEST( FormatTopic1 ) -{ - LOGOG_INITIALIZE(); - { - Cout out; - LogFile f( "log.txt"); - Message m; - - m.PublishToMultiple( AllTargets() ); - - m.Format( _LG("This is a test message: %d %x %f"), 1234, 0xf00d, 1.234f ); - m.Transmit(); - - const char *p = "Here is a string"; - - m.Format( _LG("Here are six strings: %s %s %s %s %s %s"), p,p,p,p,p,p ); - m.Transmit(); - } - - LOGOG_SHUTDOWN(); - - return 0; -} - -UNITTEST( ThreadLocking ) -{ - LOGOG_INITIALIZE(); - { - Cout out; // only one of these please - - const int NUM_THREADS = 10 * TEST_STRESS_LEVEL; - - LOGOG_VECTOR< Thread *> vpThreads; - Mutex mSharedMutex; - - for ( int t = 0; t < NUM_THREADS; t++ ) - vpThreads.push_back( new Thread( (Thread::ThreadStartLocationType) LockingThread,&mSharedMutex )); - - for ( int t = 0; t < NUM_THREADS; t++ ) - vpThreads[ t ]->Start(); - - for ( int t = 0; t < NUM_THREADS; t++ ) - Thread::WaitFor( *vpThreads[ t ]); - - for ( int t = 0; t < NUM_THREADS; t++ ) - delete vpThreads[t]; - - } - - LOGOG_SHUTDOWN(); - - return _s_ThreadLockingTest; -} - -//! [FormatterCustom1] -class FormatterCustom : public FormatterMSVC -{ - virtual TOPIC_FLAGS GetTopicFlags( const Topic &topic ) - { - return ( Formatter::GetTopicFlags( topic ) & - ~( TOPIC_FILE_NAME_FLAG | TOPIC_LINE_NUMBER_FLAG )); - } -}; - -UNITTEST( CustomFormatter ) -{ - LOGOG_INITIALIZE(); - { - Cout out; - FormatterCustom customFormat; - - out.SetFormatter( customFormat ); - - INFO( _LG( "No file and line number info is provided with this output.") ); - - /* The following output is produced: - * info: No file and line number info is provided with this output. - */ - } - LOGOG_SHUTDOWN(); - - return 0; -} -//! [FormatterCustom1] - -UNITTEST( HelloLogog ) -{ - //! [HelloLogog] - - /* The LOGOG_INITIALIZE() function must be called before we call - * any other logog functions. - */ - LOGOG_INITIALIZE(); - - { - /* In order to see any output, we have to instance a Target object, - * such as a Cerr or a Cout. Additionally, we have to destroy - * this object before calling LOGOG_SHUTDOWN(). This - * is why we have this object within these enclosing brackets. - */ - Cout out; - - /* Send some debugging information to any targets that have - * been instanced. - */ - /* If you're just getting started, and you haven't defined - * LOGOG_UNICODE, then ASCII logging is easy and works - * out of the box. - */ -#ifndef LOGOG_UNICODE - INFO("Hello, logog!"); - WARN("This is a warning"); -#endif // !LOGOG_UNICODE - - /* The _LG() macro around static text permits the given text to - * display correctly in both Unicode and ASCII builds of the - * logog library. - */ - ERR( _LG( "This is an error") ); - DBUG( _LG( "This is debugging info") ); - - /* The Cout object is destroyed here because it falls out of - * scope. */ - } - - /* Call LOGOG_SHUTDOWN() at the termination of your program to free - * all memory allocated by logog. Make sure no logog objects exist - * when you call LOGOG_SHUTDOWN(). - */ - LOGOG_SHUTDOWN(); - - /* Depending on your compiler, the output of the preceding code is - * something like: - * - * test.cpp(373) : info: Hello, logog! - * test.cpp(374) : warning: This is a warning - * test.cpp(375) : error: This is an error - * test.cpp(376) : debug: This is debugging info - */ - //! [HelloLogog] - return 0; -} - - - -UNITTEST( GroupCategory1 ) -{ -//! [GroupCategory1] - /* - The following example produces something like: - .\test.cpp(364) : emergency: {Graphics} [Unrecoverable] The graphics card has been destroyed - .\test.cpp(368) : warning: {Graphics} [Recoverable] The graphics card has been replaced - .\test.cpp(372) : warning: {Audio} [Recoverable] The headphones are unplugged - .\test.cpp(377) : info: Everything's back to normal - */ - - LOGOG_INITIALIZE(); - - { - Cerr err; - -#undef LOGOG_GROUP -#undef LOGOG_CATEGORY -#define LOGOG_GROUP "Graphics" -#define LOGOG_CATEGORY "Unrecoverable" - - EMERGENCY(_LG("The graphics card has been destroyed")); - -#undef LOGOG_CATEGORY -#define LOGOG_CATEGORY "Recoverable" - - WARN(_LG("The graphics card has been replaced")); - -#undef LOGOG_GROUP -#define LOGOG_GROUP "Audio" - - WARN(_LG("The headphones are unplugged")); - -#undef LOGOG_CATEGORY -#undef LOGOG_GROUP -#define LOGOG_CATEGORY NULL -#define LOGOG_GROUP NULL - - INFO(_LG("Everything's back to... %s!"), _LG("normal")); - } - - LOGOG_SHUTDOWN(); - //! [GroupCategory1] - return 0; -} - -UNITTEST( GroupCategory2 ) -{ -//! [GroupCategory2] - LOGOG_INITIALIZE(); - - { - GetDefaultFilter().Category(_LG("Unrecoverable")); - Cerr err; - - WARN(_LG("Logging messages in the Unrecoverable category...")); - - -#undef LOGOG_GROUP -#undef LOGOG_CATEGORY -#define LOGOG_GROUP "Graphics" -#define LOGOG_CATEGORY "Unrecoverable" - - EMERGENCY(_LG("The graphics card has been destroyed")); - -#undef LOGOG_CATEGORY -#define LOGOG_CATEGORY "Recoverable" - - WARN(_LG("The graphics card has been replaced")); - -#undef LOGOG_GROUP -#define LOGOG_GROUP "Audio" - - WARN(_LG("The headphones are unplugged")); - -#undef LOGOG_CATEGORY -#undef LOGOG_GROUP -#define LOGOG_CATEGORY NULL -#define LOGOG_GROUP NULL - - } - - LOGOG_SHUTDOWN(); -//! [GroupCategory2] - return 0; -} - -UNITTEST( GroupCategory3 ) -{ - LOGOG_INITIALIZE(); - - { - /* Assigning a group twice does not leak memory. */ - GetDefaultFilter().Group( _LG( "Controller" )); - GetDefaultFilter().Group( _LG( "Graphics" )); - - Cerr err; - WARN(_LG("This message won't happen because it's not in the Graphics group")); - -#undef LOGOG_GROUP -#undef LOGOG_CATEGORY -#define LOGOG_GROUP "Graphics" -#define LOGOG_CATEGORY "Unrecoverable" - - EMERGENCY(_LG("The graphics card has been destroyed")); - -#undef LOGOG_CATEGORY -#define LOGOG_CATEGORY "Recoverable" - - WARN(_LG("The graphics card has been replaced")); - -#undef LOGOG_GROUP -#define LOGOG_GROUP "Audio" - - WARN(_LG("The headphones are unplugged")); - -#undef LOGOG_CATEGORY -#undef LOGOG_GROUP -#define LOGOG_CATEGORY NULL -#define LOGOG_GROUP NULL - } - - LOGOG_SHUTDOWN(); - return 0; -} - -UNITTEST( GroupCategory4 ) -{ -//! [GroupCategory4] - LOGOG_INITIALIZE(); - - { - GetDefaultFilter().Group(_LG("Graphics")); - Filter filter; - filter.Group(_LG("Audio")); - Cerr err; - - WARN(_LG("This message won't happen because it's not in the Graphics group")); - -#undef LOGOG_GROUP -#undef LOGOG_CATEGORY -#define LOGOG_GROUP "Graphics" -#define LOGOG_CATEGORY "Unrecoverable" - - EMERGENCY(_LG("The graphics card has been destroyed")); - -#undef LOGOG_CATEGORY -#define LOGOG_CATEGORY "Recoverable" - - WARN(_LG("The graphics card has been replaced")); - -#undef LOGOG_GROUP -#define LOGOG_GROUP "Audio" - - WARN(_LG("The headphones are unplugged")); - -#undef LOGOG_GROUP -#define LOGOG_GROUP "Inputs" - - WARN(_LG("The inputs have been yanked off but this fact won't be reported!")); - -#undef LOGOG_CATEGORY -#undef LOGOG_GROUP -#define LOGOG_CATEGORY NULL -#define LOGOG_GROUP NULL - } - - LOGOG_SHUTDOWN(); -//! [GroupCategory4] - return 0; -} - - -UNITTEST( Info1 ) -{ - LOGOG_INITIALIZE(); - { - Cout out; - - for ( int i = 0; i < 2; i++ ) - { - for ( int t = 0; t < 10; t++ ) - { - INFO( _LG("t is now: %d"), t ); - if ( t > 8 ) - WARN(_LG("t is pretty high now!")); - } - - DBUG(_LG("This warning isn't very interesting")); - EMERGENCY(_LG("THIS IS SUPER IMPORTANT!")); - } - - LOGOG_SET_LEVEL( LOGOG_LEVEL_DEBUG ); - LOGOG_DEBUG(_LG("Messages instantiated for the first time will be called now. However, debug messages")); - LOGOG_DEBUG(_LG("instantiated before the LOGOG_SET_LEVEL won't be transmitted.")); - - } - - LOGOG_SHUTDOWN(); - - return 0; -} - -void GeneratePseudoRandomErrorMessages() -{ - int pr = 0xf8d92347; - int ps; - - for ( int t = 0; t < TEST_STRESS_LEVEL * 10; t++ ) - { - pr = pr * 0xd9381381 + 0x13d7b; - ps = pr % ( (1 << 19) - 1 ); - - ERR( _LG("We must inform you of this pseudo-random error code: %d"), ps ); - - // Do a non specific amount of busy work. - int swap1 = 0, swap2 = 1; - for ( int i = 0; i < ps; i++ ) - { - int swap3 = swap1; - swap1 = swap2; - swap2 = swap3; - } - } - -} - -UNITTEST( ImmediateLogging ) -{ - LOGOG_INITIALIZE(); - - { - LogFile logFile( "log.txt" ); - - GeneratePseudoRandomErrorMessages(); - } - - LOGOG_SHUTDOWN(); - - return 0; -} - -#ifdef LOGOG_UNICODE -UNITTEST( UnicodeLogFile ) -{ - LOGOG_INITIALIZE(); - - { - LogFile logFile( "unicode.txt" ); - - // see http://blogs.msdn.com/b/michkap/archive/2008/03/18/8306597.aspx - INFO(L"\x043a\x043e\x0448\x043a\x0430 \x65e5\x672c\x56fd"); - WARN(L"\x043a\x043e\x0448\x043a\x0430 \x65e5\x672c\x56fd"); - ERR(L"\x043a\x043e\x0448\x043a\x0430 \x65e5\x672c\x56fd"); - } - - LOGOG_SHUTDOWN(); - - return 0; -} -#endif // LOGOG_UNICODE - -UNITTEST( DeferredCoutLogging ) -{ - LOGOG_INITIALIZE(); - - { - Cout out; - LogBuffer logBuffer( &out ); - - // Make sure that out does not receive messages via the general filter mechanism. - out.UnsubscribeToMultiple( AllFilters() ); - - for ( int i = 1; i <= 10; i++ ) - { - ERR(_LG("This is error %d of 10"), i); - - int q = 27832; - - for ( int j = 0; j < TEST_STRESS_LEVEL * 10000000; j++ ) - q *= q; - } - } - - LOGOG_SHUTDOWN(); - - return 0; -} - -UNITTEST( DeferredFileLogging ) -{ -//! [DeferredFileLogging] - LOGOG_INITIALIZE(); - - { - LogFile logFile( "log.txt" ); - LogBuffer logBuffer( &logFile ); - - /* Because the LogBuffer is not writing to a line device a la stdout or stderr, it does not need to - * send null terminated strings to its destination (the LogFile). This is a particular peculiarity - * of having a buffering target to a serial-type target, such as a socket or a file. - */ - logBuffer.SetNullTerminatesStrings( false ); - - // Make sure that the log file does not receive messages via the general filter mechanism. - logFile.UnsubscribeToMultiple( AllFilters() ); - - for ( int i = 1; i <= 20; i++ ) - { - WARN(_LG("This is warning %d of 20"), i); - - int q = 27832; - for ( int j = 0; j < TEST_STRESS_LEVEL * 10000000; j++ ) - q *= q; - } - } - - LOGOG_SHUTDOWN(); -//! [DeferredFileLogging] - return 0; -} - -UNITTEST( DateAndTime ) -{ -//! [DateAndTimeLogging] - LOGOG_INITIALIZE(); - - { - Cerr err; - - Formatter *pFormatter = &GetDefaultFormatter(); - - pFormatter->SetShowTimeOfDay( true ); - - for ( int i = 1; i <= 20; i++ ) - { - WARN(_LG("This is warning %d of 20... but with time!"), i); - - int q = 27832; - for ( int j = 0; j < TEST_STRESS_LEVEL * 10000000; j++ ) - q *= q; - } - } - - LOGOG_SHUTDOWN(); -//! [DateAndTimeLogging] - - return 0; -} - - -#ifndef LOGOG_TARGET_PS3 -int DoPlatformSpecificTestInitialization() -{ - return 0; -} -#endif -int main( int , char ** ) -{ -#ifdef LOGOG_LEAK_DETECTION_WINDOWS - _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF | _CRTDBG_CHECK_ALWAYS_DF ); -#endif // LOGOG_LEAK_DETECTION_WINDOWS - -//! [WindowsUnicodeSetup] -#ifdef LOGOG_UNICODE -#ifdef LOGOG_FLAVOR_WINDOWS - _setmode(_fileno(stdout), _O_U16TEXT); - _setmode(_fileno(stderr), _O_U16TEXT); -#endif // LOGOG_FLAVOR_WINDOWS -#endif // LOGOG_UNICODE -//! [WindowsUnicodeSetup] - - int nPlatformSpecific; - nPlatformSpecific = DoPlatformSpecificTestInitialization(); - if ( nPlatformSpecific != 0) - return nPlatformSpecific; - - int nResult; - nResult = RunAllTests(); - ShutdownTests(); - -#ifdef LOGOG_LEAK_DETECTION_WINDOWS - _CrtMemState crtMemState; - _CrtMemCheckpoint( &crtMemState ); - _CrtMemDumpStatistics( &crtMemState ); - _CrtDumpMemoryLeaks(); -#endif // LOGOG_LEAK_DETECTION_WINDOWS - - return nResult; -} - diff --git a/ThirdParty/logog/test/test.sln b/ThirdParty/logog/test/test.sln deleted file mode 100644 index 5e7b2d0feb6b733d20d3f852e2b3d25e9ccd7b8a..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/test/test.sln +++ /dev/null @@ -1,41 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test.vcproj", "{FFD188AD-0FE5-4808-90E0-EC528324FFAD}" - ProjectSection(ProjectDependencies) = postProject - {85857E80-2122-4DD8-9BA9-B90CC10D65B0} = {85857E80-2122-4DD8-9BA9-B90CC10D65B0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "logog", "..\src\logog.vcproj", "{85857E80-2122-4DD8-9BA9-B90CC10D65B0}" -EndProject -Global - GlobalSection(SourceCodeControl) = preSolution - SccNumberOfProjects = 2 - SccProjectUniqueName0 = test.vcproj - SccProjectName0 = Perforce\u0020Project - SccLocalPath0 = . - SccProvider0 = MSSCCI:Perforce\u0020SCM - SccProjectUniqueName1 = ..\\src\\logog.vcproj - SccProjectName1 = Perforce\u0020Project - SccLocalPath1 = .. - SccProvider1 = MSSCCI:Perforce\u0020SCM - SccProjectFilePathRelativizedFromConnection1 = src\\ - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FFD188AD-0FE5-4808-90E0-EC528324FFAD}.Debug|Win32.ActiveCfg = Debug|Win32 - {FFD188AD-0FE5-4808-90E0-EC528324FFAD}.Debug|Win32.Build.0 = Debug|Win32 - {FFD188AD-0FE5-4808-90E0-EC528324FFAD}.Release|Win32.ActiveCfg = Release|Win32 - {FFD188AD-0FE5-4808-90E0-EC528324FFAD}.Release|Win32.Build.0 = Release|Win32 - {85857E80-2122-4DD8-9BA9-B90CC10D65B0}.Debug|Win32.ActiveCfg = Debug|Win32 - {85857E80-2122-4DD8-9BA9-B90CC10D65B0}.Debug|Win32.Build.0 = Debug|Win32 - {85857E80-2122-4DD8-9BA9-B90CC10D65B0}.Release|Win32.ActiveCfg = Release|Win32 - {85857E80-2122-4DD8-9BA9-B90CC10D65B0}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/ThirdParty/logog/test/test.vcproj b/ThirdParty/logog/test/test.vcproj deleted file mode 100644 index 8b14c91680cd2955a83cc9e5847e690fa57137ca..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/test/test.vcproj +++ /dev/null @@ -1,231 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="9.00" - Name="test" - ProjectGUID="{FFD188AD-0FE5-4808-90E0-EC528324FFAD}" - RootNamespace="test" - SccProjectName="Perforce Project" - SccLocalPath="." - SccProvider="MSSCCI:Perforce SCM" - Keyword="Win32Proj" - TargetFrameworkVersion="196613" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\include" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - UsePrecompiledHeader="0" - WarningLevel="4" - Detect64BitPortabilityProblems="false" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - LinkIncremental="2" - GenerateDebugInformation="true" - SubSystem="1" - RandomizedBaseAddress="0" - DataExecutionPrevention="0" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - HeapVerification="2" - HandleVerification="2" - LocksVerification="2" - PageHeapConserveMemory="false" - PageHeapProtectionLocation="1" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - EnableIntrinsicFunctions="true" - AdditionalIncludeDirectories="..\include" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" - RuntimeLibrary="2" - EnableFunctionLevelLinking="true" - UsePrecompiledHeader="0" - WarningLevel="4" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - LinkIncremental="1" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath=".\test.cpp" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc;xsd" - UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" - > - </Filter> - <Filter - Name="Resource Files" - Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" - UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" - > - </Filter> - <File - RelativePath="..\doc\overview.dox" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Generating doxygen output" - CommandLine="$(InputDir)make-doxygen.bat
" - Outputs="$(InputDir)html\index.html" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - ExcludedFromBuild="true" - > - <Tool - Name="VCCustomBuildTool" - Description="Generating doxygen output" - CommandLine="$(InputDir)make-doxygen.bat
" - Outputs="$(InputDir)html\index.html" - /> - </FileConfiguration> - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/ThirdParty/logog/test/test.vcproj.lnt b/ThirdParty/logog/test/test.vcproj.lnt deleted file mode 100644 index 5fd30307fecb5cefe593734b3dc23ed815f10632..0000000000000000000000000000000000000000 --- a/ThirdParty/logog/test/test.vcproj.lnt +++ /dev/null @@ -1,11 +0,0 @@ -/* -dConfiguration= ... none provided */ --D_UNICODE // 27: CharacterSet = "1" --DUNICODE // 27: CharacterSet = "" --i"..\include" // 47: AdditionalIncludeDirectories = "..\include" --DWIN32 // 48: PreprocessorDefinitions = "WIN32;_DEBUG;_CONSOLE" --D_DEBUG // 48: PreprocessorDefinitions = "" --D_CONSOLE // 48: PreprocessorDefinitions = "" --D_MT // 51: RuntimeLibrary = "3" --D_DEBUG // 51: RuntimeLibrary = "" --D_DLL // 51: RuntimeLibrary = "" -.\test.cpp // 180: RelativePath = ".\test.cpp" diff --git a/ThirdParty/spdlog b/ThirdParty/spdlog new file mode 160000 index 0000000000000000000000000000000000000000..cf6f1dd01e660d5865d68bf5fa78f6376b89470a --- /dev/null +++ b/ThirdParty/spdlog @@ -0,0 +1 @@ +Subproject commit cf6f1dd01e660d5865d68bf5fa78f6376b89470a diff --git a/config-cpp-dependencies.txt b/config-cpp-dependencies.txt index 1cb62dd336126d5ebac77e6e2a435cf923cf4ffa..f9a91ef8bc74f9c7adebcf2a912e3846ef644c50 100644 --- a/config-cpp-dependencies.txt +++ b/config-cpp-dependencies.txt @@ -42,4 +42,4 @@ fileLocUpperLimit: 2000 # List of folder paths (from the root) that should be completely ignored. May contain multiple # space-separated values, including values with spaces escaped with quotation marks. -blacklist: build Build "Visual Studio Projects" unistd.h console.h stdint.h windows.h library.h endian.h rle.h ThirdParty/logog/include/thread.hpp Applications/Utils SimpleTests ThirdParty +blacklist: build Build "Visual Studio Projects" unistd.h console.h stdint.h windows.h library.h endian.h rle.h Applications/Utils SimpleTests ThirdParty diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake index cb5970458c4aaf1f35ff742c638031467848893f..782d27b9ff933393f26282af1c6147efe2c02a8a 100644 --- a/scripts/cmake/Find.cmake +++ b/scripts/cmake/Find.cmake @@ -73,13 +73,15 @@ include(${VTK_USE_FILE}) find_package(Eigen3 ${ogs.minimum_version.eigen} REQUIRED) include_directories(SYSTEM ${EIGEN3_INCLUDE_DIR}) -## pthread, is a requirement of logog ## -set(CMAKE_THREAD_PREFER_PTHREAD ON) -set(THREADS_PREFER_PTHREAD_FLAG ON) -find_package(Threads REQUIRED) -if(CMAKE_USE_PTHREADS_INIT) - set(HAVE_PTHREADS TRUE) - add_definitions(-DHAVE_PTHREADS) +if(OGS_USE_MFRONT) + ## pthread, is a requirement of mfront ## + set(CMAKE_THREAD_PREFER_PTHREAD ON) + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) + if(CMAKE_USE_PTHREADS_INIT) + set(HAVE_PTHREADS TRUE) + add_definitions(-DHAVE_PTHREADS) + endif() endif() # Do not search for libs if this option is set diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake index 2c62fa9a3193a7c5c2c677a33d7e3b0f30a128ff..6100c8c3905688ffe25f01cd6658f187b3677a5f 100644 --- a/scripts/cmake/SubmoduleSetup.cmake +++ b/scripts/cmake/SubmoduleSetup.cmake @@ -15,6 +15,7 @@ set(REQUIRED_SUBMODULES ThirdParty/googletest ThirdParty/iphreeqc/src ThirdParty/json-cmake + ThirdParty/spdlog ThirdParty/tclap ThirdParty/tetgen ThirdParty/vtkdiff diff --git a/scripts/cmake/test/CTestCustom.cmake.in b/scripts/cmake/test/CTestCustom.cmake.in deleted file mode 100644 index 14e2ef03447f4df374791cea542eea913833eb34..0000000000000000000000000000000000000000 --- a/scripts/cmake/test/CTestCustom.cmake.in +++ /dev/null @@ -1,2 +0,0 @@ -# set(CTEST_CUSTOM_POST_TEST "cat ${CMAKE_BINARY_DIR}/Testing/Temporary/LastTestTester.log 2>&1") -set(CTEST_CUSTOM_TESTS_IGNORE ${CTEST_CUSTOM_TESTS_IGNORE}) # logog diff --git a/scripts/cmake/test/Test.cmake b/scripts/cmake/test/Test.cmake index ef0c582d606335d0438992eddbb98c60e62654bd..e125f69ab43bae3aba49a3a52e384b7ff9a4bf7e 100644 --- a/scripts/cmake/test/Test.cmake +++ b/scripts/cmake/test/Test.cmake @@ -27,13 +27,6 @@ endif() enable_testing() # Enable CTest -# See http://www.vtk.org/Wiki/CMake/Testing_With_CTest for some customization options -set(CTEST_CUSTOM_TESTS_IGNORE test-harness) # ignore logog test -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test/CTestCustom.cmake.in - ${PROJECT_BINARY_DIR}/CTestCustom.cmake -) - include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test/AddTest.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test/MeshTest.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test/OgsTest.cmake) diff --git a/scripts/jenkins/iwyu-mappings.imp b/scripts/jenkins/iwyu-mappings.imp index ee7bf2ee8f6215bf923f6e42c767705feebe3a94..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/scripts/jenkins/iwyu-mappings.imp +++ b/scripts/jenkins/iwyu-mappings.imp @@ -1,4 +0,0 @@ -[ - { include: ["<logog/include/macro.hpp>", "private", "<logog/include/logog.hpp>", "public"] }, - { include: ["<logog/include/message.hpp>", "private", "<logog/include/logog.hpp>", "public"] } -] diff --git a/web/content/docs/devguide/advanced/log-and-debug-output.pandoc b/web/content/docs/devguide/advanced/log-and-debug-output.pandoc index 8bf61dda3dfb449ba37b6e71a9f10c8691d70094..427e2013f01eb1c2d02703d5c51674c7ba62791e 100644 --- a/web/content/docs/devguide/advanced/log-and-debug-output.pandoc +++ b/web/content/docs/devguide/advanced/log-and-debug-output.pandoc @@ -11,25 +11,28 @@ weight = 1034 ## Introduction -For application output we use [Logog](http://johnwbyrd.github.com/logog) which is already integrated in OGS. Logog provides several verbosity levels which can be used with simple macro calls: +For application output we use [spdlog](https://github.com/gabime/spdlog) which +is already integrated in OGS. Spdlog provides several verbosity levels which can +be used with simple calls: ```cpp -ERR("An error message!") -WARN("A warning message.") -INFO("An information message...") +ERR("An error message!"); +WARN("A warning message."); +INFO("An information message..."); +DBUG("A debug message."); ``` -As arguments you can use the same functionality as in [sprintf](http://www.cplusplus.com/reference/cstdio/sprintf/): +As arguments you can use the same functionality as in [fmt](https://fmt.dev)---a +modern formatting library: ```cpp -int foo = 9001; -int maxfoo = 9000; -if (foo > maxfoo) - WARN("Foo is over %d! Current value is %d.", maxfoo, foo ); +int foo = 42; +double boo = 3.14; +WARN("Foo is {}! Current value is {:10.2g}.", foo, boo); ``` -For more information see the [Logog documentation](http://johnwbyrd.github.com/logog/quickstart.html). - +For more information see the [spdlog +wiki](https://github.com/gabime/spdlog/wiki). On release builds the default log level is `INFO`, for debug builds it is `DEBUG`.