summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--icetray/icetray/Jamfile.jam1
-rw-r--r--icetray/icetray/abstractDatabaseClient.cpp2
-rw-r--r--icetray/icetray/logWriter.ice3
-rw-r--r--icetray/icetray/logWriterConsole.cpp4
-rw-r--r--icetray/icetray/logWriterConsole.h4
-rw-r--r--icetray/icetray/string_view_support.h45
-rw-r--r--icetray/unittests/testIceTrayLogger.cpp4
7 files changed, 56 insertions, 7 deletions
diff --git a/icetray/icetray/Jamfile.jam b/icetray/icetray/Jamfile.jam
index a54d613..3796fa8 100644
--- a/icetray/icetray/Jamfile.jam
+++ b/icetray/icetray/Jamfile.jam
@@ -15,6 +15,7 @@ lib icetray :
<library>../..//glibmm
<library>boost_program_options
<slicer>yes
+ <include>.
: :
<include>.
<library>..//dbppcore
diff --git a/icetray/icetray/abstractDatabaseClient.cpp b/icetray/icetray/abstractDatabaseClient.cpp
index bdef7ac..4c9ea32 100644
--- a/icetray/icetray/abstractDatabaseClient.cpp
+++ b/icetray/icetray/abstractDatabaseClient.cpp
@@ -16,6 +16,8 @@ namespace IceTray {
{ \
cmd->bindFunc(o, p); \
}
+ PARAMBINDER(Glib::ustring, bindParamS);
+ PARAMBINDER(std::string_view, bindParamS);
PARAMBINDER(std::string, bindParamS);
PARAMBINDER(Ice::Byte, bindParamI);
PARAMBINDER(Ice::Short, bindParamI);
diff --git a/icetray/icetray/logWriter.ice b/icetray/icetray/logWriter.ice
index 0b2c062..9b766b0 100644
--- a/icetray/icetray/logWriter.ice
+++ b/icetray/icetray/logWriter.ice
@@ -2,6 +2,7 @@
#define ICETRAY_LOGWRITER
[["ice-prefix"]]
+[["cpp:include:string_view_support.h"]]
module IceTray {
module Logging {
enum LogLevel {
@@ -21,7 +22,7 @@ module IceTray {
interface LogWriter {
optional(0) LogLevel lowestLevel();
optional(0) LogLevel level(Domain domain);
- void message(LogLevel level, Domain domain, string message);
+ void message(LogLevel level, Domain domain, ["cpp:view-type:std::string_view"] string message);
};
};
};
diff --git a/icetray/icetray/logWriterConsole.cpp b/icetray/icetray/logWriterConsole.cpp
index feb8789..23c1279 100644
--- a/icetray/icetray/logWriterConsole.cpp
+++ b/icetray/icetray/logWriterConsole.cpp
@@ -65,7 +65,7 @@ namespace IceTray {
}
void
- ConsoleLogWriter::message(LogLevel priority, Domain domain, std::string message, const Ice::Current &)
+ ConsoleLogWriter::message(LogLevel priority, Domain domain, const std::string_view message, const Ice::Current &)
{
writeStream(priority < LogLevel::WARNING ? std::cerr : std::cout,
width, priority, domain, message);
@@ -73,7 +73,7 @@ namespace IceTray {
}
std::ostream &
- ConsoleLogWriter::writeStream(std::ostream & s, int width, LogLevel priority, const Domain & domain, const std::string & message)
+ ConsoleLogWriter::writeStream(std::ostream & s, int width, LogLevel priority, const Domain & domain, const std::string_view & message)
{
return LogMsg::write(s,
Slicer::ModelPartForEnum<LogLevel>::lookup(priority), width, domain, message);
diff --git a/icetray/icetray/logWriterConsole.h b/icetray/icetray/logWriterConsole.h
index a841f6b..0136235 100644
--- a/icetray/icetray/logWriterConsole.h
+++ b/icetray/icetray/logWriterConsole.h
@@ -9,9 +9,9 @@ namespace IceTray {
public:
ConsoleLogWriter(const Ice::PropertiesPtr & p);
- void message(LogLevel priority, Domain domain, std::string message, const Ice::Current &) override;
+ void message(LogLevel priority, Domain domain, std::string_view message, const Ice::Current &) override;
- static DLL_PUBLIC std::ostream & writeStream(std::ostream &, int width, LogLevel priority, const Domain & domain, const std::string & message);
+ static DLL_PUBLIC std::ostream & writeStream(std::ostream &, int width, LogLevel priority, const Domain & domain, const std::string_view & message);
const int width;
};
diff --git a/icetray/icetray/string_view_support.h b/icetray/icetray/string_view_support.h
new file mode 100644
index 0000000..ef9fb94
--- /dev/null
+++ b/icetray/icetray/string_view_support.h
@@ -0,0 +1,45 @@
+#ifndef ICETRAY_STRING_VIEW_SUPPORT_H
+#define ICETRAY_STRING_VIEW_SUPPORT_H
+
+#include <string_view>
+#include <Ice/OutputStream.h>
+#include <Ice/StreamHelpers.h>
+
+namespace Ice
+{
+ template<>
+ struct StreamableTraits<std::string_view>
+ {
+ static const StreamHelperCategory helper = StreamHelperCategoryBuiltin;
+ static const int minWireSize = 1;
+ static const bool fixedLength = false;
+ };
+
+ template<>
+ struct StreamHelper<std::string_view, StreamHelperCategoryBuiltin> {
+ template<class S> static inline void
+ write(S * stream, const std::string_view& v)
+ {
+ stream->write(v.data(), v.size());
+ }
+
+ template<class S> static inline void
+ read(S * stream, std::string_view& v)
+ {
+ const char* vdata = 0;
+ size_t vsize = 0;
+
+ stream->read(vdata, vsize);
+
+ if (vsize > 0) {
+ v = std::string_view(vdata, vsize);
+ }
+ else {
+ v = {};
+ }
+ }
+ };
+}
+
+#endif
+
diff --git a/icetray/unittests/testIceTrayLogger.cpp b/icetray/unittests/testIceTrayLogger.cpp
index 393a6f2..b8c9d5c 100644
--- a/icetray/unittests/testIceTrayLogger.cpp
+++ b/icetray/unittests/testIceTrayLogger.cpp
@@ -34,9 +34,9 @@ class TestLogWriter : public AbstractLogWriter {
{
}
- void message(LogLevel priority, Domain domain, std::string message, const Ice::Current &) override
+ void message(LogLevel priority, Domain domain, const std::string_view message, const Ice::Current &) override
{
- msgs.push_back({priority, domain, message});
+ msgs.push_back({priority, domain, std::string(message)});
}
std::vector<LogEntry> msgs;