From 22f0de69565c19ae9f72dda314957b36fab1ec43 Mon Sep 17 00:00:00 2001 From: Joscha Schmiedt <schmiedt@uni-bremen.de> Date: Tue, 14 May 2024 20:56:57 +0200 Subject: [PATCH] Add missing LoggerOutputStream operator<< for std::filesystem::path (issue #75) --- include/caosdb/logging.h | 7 +++++++ include/caosdb/transaction_status.h | 2 +- src/caosdb/configuration.cpp | 2 +- src/caosdb/entity.cpp | 1 + src/caosdb/logging.cpp | 13 +++++++++++++ src/caosdb/result_set.cpp | 1 + src/caosdb/transaction.cpp | 1 + src/ccaosdb.cpp | 18 +++++++++--------- 8 files changed, 34 insertions(+), 11 deletions(-) diff --git a/include/caosdb/logging.h b/include/caosdb/logging.h index 3fda8e8..d17c891 100644 --- a/include/caosdb/logging.h +++ b/include/caosdb/logging.h @@ -30,6 +30,10 @@ #include <string> // for string #include <vector> // for vector +namespace std::filesystem { +class path; +} + namespace caosdb::logging { const std::string logger_name = "caosdb::logging"; @@ -46,6 +50,9 @@ public: auto operator<<(const char *msg) -> LoggerOutputStream &; auto operator<<(const std::string &msg) -> LoggerOutputStream &; auto operator<<(void *msg) -> LoggerOutputStream &; + auto operator<<(std::filesystem::path *path) -> LoggerOutputStream &; + LoggerOutputStream &operator<<(const std::filesystem::path &path); + static auto get(const std::string &channel, int level) -> LoggerOutputStream { return LoggerOutputStream(channel, level); } diff --git a/include/caosdb/transaction_status.h b/include/caosdb/transaction_status.h index d46f391..56bd55b 100644 --- a/include/caosdb/transaction_status.h +++ b/include/caosdb/transaction_status.h @@ -40,7 +40,7 @@ using caosdb::exceptions::TransactionTypeError; * Define static factory method in the TransactionStatus class. */ #define CAOSDB_TRANSACTION_STATUS_DEFAULT_FACTORY(_StatusName, _StatusCode) \ - inline static auto _StatusName()->const TransactionStatus & { \ + inline static auto _StatusName() -> const TransactionStatus & { \ static const TransactionStatus instance(_StatusCode, \ caosdb::get_status_description(_StatusCode)); \ return instance; \ diff --git a/src/caosdb/configuration.cpp b/src/caosdb/configuration.cpp index e1ffb23..8fbf9fe 100644 --- a/src/caosdb/configuration.cpp +++ b/src/caosdb/configuration.cpp @@ -55,7 +55,7 @@ throw ConfigurationError("This CaosDB client has not been configured."); \ } \ assert(WRAPPED_JSON_CONFIGURATION(this)->is_object()); \ - const auto &configuration = WRAPPED_JSON_CONFIGURATION(this)->as_object(); \ + const auto &configuration = WRAPPED_JSON_CONFIGURATION(this) -> as_object(); \ if (!configuration.contains("connections")) { \ throw ConfigurationError("This CaosDB client hasn't any configured connections."); \ } \ diff --git a/src/caosdb/entity.cpp b/src/caosdb/entity.cpp index 568cc5d..c8bcb48 100644 --- a/src/caosdb/entity.cpp +++ b/src/caosdb/entity.cpp @@ -25,6 +25,7 @@ #include "caosdb/protobuf_helper.h" // for get_arena #include "caosdb/value.h" // for Value #include <google/protobuf/arena.h> // for Arena +#include <string> namespace caosdb::entity { using ProtoParent = caosdb::entity::v1::Parent; diff --git a/src/caosdb/logging.cpp b/src/caosdb/logging.cpp index ecc34d6..f6ca7f4 100644 --- a/src/caosdb/logging.cpp +++ b/src/caosdb/logging.cpp @@ -39,6 +39,7 @@ #include <boost/smart_ptr/intrusive_ref_counter.hpp> #include <boost/smart_ptr/shared_ptr.hpp> #include <cstdint> // for uint64_t +#include <filesystem> #include <memory> #include <sstream> #include <string> @@ -117,6 +118,18 @@ auto LoggerOutputStream::operator<<(void *msg) -> LoggerOutputStream & { return *this; } +auto LoggerOutputStream::operator<<(std::filesystem::path *path) -> LoggerOutputStream & { + BOOST_LOG_CHANNEL_SEV(caosdb::logging::logger::get(), channel, this->level) << path->string(); + + return *this; +} + +LoggerOutputStream &LoggerOutputStream::operator<<(const std::filesystem::path &path) { + + BOOST_LOG_CHANNEL_SEV(caosdb::logging::logger::get(), channel, this->level) << path.string(); + return *this; +} + LoggingConfiguration::LoggingConfiguration(int level) : LevelConfiguration(level) {} auto LoggingConfiguration::AddSink(const std::shared_ptr<SinkConfiguration> &sink) -> void { diff --git a/src/caosdb/result_set.cpp b/src/caosdb/result_set.cpp index a4172a8..f4f4efd 100644 --- a/src/caosdb/result_set.cpp +++ b/src/caosdb/result_set.cpp @@ -20,6 +20,7 @@ #include "caosdb/result_set.h" // for ResultSet #include <memory> // for unique_ptr #include <utility> // for move, pair +#include <vector> namespace caosdb::transaction { diff --git a/src/caosdb/transaction.cpp b/src/caosdb/transaction.cpp index 28f9e35..56e8e8f 100644 --- a/src/caosdb/transaction.cpp +++ b/src/caosdb/transaction.cpp @@ -40,6 +40,7 @@ #include <map> // for map, operator!= #include <memory> // for unique_ptr #include <random> // for mt19937, rand... +#include <string> // for string #include <system_error> // for std::system_error #include <utility> // for move, pair // IWYU pragma: no_include <cxxabi.h> diff --git a/src/ccaosdb.cpp b/src/ccaosdb.cpp index ae1a728..82bcbae 100644 --- a/src/ccaosdb.cpp +++ b/src/ccaosdb.cpp @@ -83,7 +83,7 @@ extern "C" { auto *wrapped_entity = WRAPPED_ENTITY_CAST(entity); \ auto *tmp = (char *)malloc(sizeof(char) * wrapped_entity->GetFunction.length() + 1); \ strcpy(tmp, wrapped_entity->GetFunction.c_str()); \ - delete[] * out; \ + delete[] *out; \ *out = tmp; \ return 0; \ }) @@ -109,7 +109,7 @@ extern "C" { auto *wrapped_property = WRAPPED_PROPERTY_CAST(property); \ auto *tmp = (char *)malloc(sizeof(char) * wrapped_property->GetFunction.length() + 1); \ strcpy(tmp, wrapped_property->GetFunction.c_str()); \ - delete[] * out; \ + delete[] *out; \ *out = tmp; \ return 0; \ }) @@ -136,7 +136,7 @@ extern "C" { auto *wrapped_parent = WRAPPED_PARENT_CAST(parent); \ auto *tmp = (char *)malloc(sizeof(char) * wrapped_parent->GetFunction.length() + 1); \ strcpy(tmp, wrapped_parent->GetFunction.c_str()); \ - delete[] * out; \ + delete[] *out; \ *out = tmp; \ return 0; \ }) @@ -729,7 +729,7 @@ ERROR_RETURN_CODE(GENERIC_ERROR, std::string role_str = ENUM_NAME_FROM_VALUE(wrapped_entity->GetRole(), Role); auto *tmp = (char *)malloc(sizeof(char) * role_str.length() + 1); strcpy(tmp, role_str.c_str()); - delete[] * out; + delete[] *out; *out = tmp; return 0; }) @@ -741,7 +741,7 @@ ERROR_RETURN_CODE(GENERIC_ERROR, auto path = wrapped_entity->GetLocalPath().string(); auto *tmp = (char *)(malloc(sizeof(char) * path.length() + 1)); strcpy(tmp, path.c_str()); - delete[] * out; + delete[] *out; *out = tmp; return 0; }) @@ -887,7 +887,7 @@ ERROR_RETURN_CODE(GENERIC_ERROR, ENUM_NAME_FROM_VALUE(wrapped_property->GetImportance(), Importance); char *tmp = (char *)malloc(sizeof(char) * importance_str.length() + 1); strcpy(tmp, importance_str.c_str()); - delete[] * out; + delete[] *out; *out = tmp; return 0; }) @@ -925,7 +925,7 @@ ERROR_RETURN_CODE( auto *wrapped_message = static_cast<caosdb::entity::Message *>(message->wrapped_message); auto *tmp = (char *)malloc(sizeof(char) * wrapped_message->GetDescription().length() + 1); strcpy(tmp, wrapped_message->GetDescription().c_str()); - delete[] * out; + delete[] *out; *out = tmp; return 0; }) @@ -1000,7 +1000,7 @@ ERROR_RETURN_CODE( } char *tmp = (char *)malloc(sizeof(char) * datatype_name.length() + 1); strcpy(tmp, datatype_name.c_str()); - delete[] * out; + delete[] *out; *out = tmp; return 0; }) @@ -1018,7 +1018,7 @@ ERROR_RETURN_CODE(GENERIC_ERROR, auto *tmp = (char *)malloc(sizeof(char) * wrapped_value->GetAsString().length() + 1); strcpy(tmp, wrapped_value->GetAsString().c_str()); - delete[] * out; + delete[] *out; *out = tmp; return 0; }) -- GitLab