diff options
| author | Patrick Williams <patrick@stwcx.xyz> | 2017-01-06 15:55:05 -0600 |
|---|---|---|
| committer | Patrick Williams <patrick@stwcx.xyz> | 2017-01-09 21:25:29 -0600 |
| commit | 9db2864677fc8a27a23294a51766c1f280e6f839 (patch) | |
| tree | 262eb01842e133410d716baccb61846650d7a590 | |
| parent | ab7de32d1bc41eb32519565582874fe006092b65 (diff) | |
| download | sdbusplus-9db2864677fc8a27a23294a51766c1f280e6f839.tar.gz sdbusplus-9db2864677fc8a27a23294a51766c1f280e6f839.zip | |
message: Add class for object-path and signatures
Change-Id: I1ca54ecc5d4033c41738bd224399f80b95094430
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
| -rw-r--r-- | Makefile.am | 1 | ||||
| -rw-r--r-- | sdbusplus/message.hpp | 1 | ||||
| -rw-r--r-- | sdbusplus/message/native_types.hpp | 49 | ||||
| -rw-r--r-- | test/Makefile.am | 3 | ||||
| -rw-r--r-- | test/message/native_types.cpp | 13 |
5 files changed, 67 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am index 1870f06..78ab597 100644 --- a/Makefile.am +++ b/Makefile.am @@ -7,6 +7,7 @@ nobase_include_HEADERS = \ sdbusplus/exception.hpp \ sdbusplus/message.hpp \ sdbusplus/message/append.hpp \ + sdbusplus/message/native_types.hpp \ sdbusplus/message/read.hpp \ sdbusplus/message/types.hpp \ sdbusplus/server.hpp \ diff --git a/sdbusplus/message.hpp b/sdbusplus/message.hpp index 2d23ff3..958e60b 100644 --- a/sdbusplus/message.hpp +++ b/sdbusplus/message.hpp @@ -4,6 +4,7 @@ #include <systemd/sd-bus.h> #include <sdbusplus/message/append.hpp> #include <sdbusplus/message/read.hpp> +#include <sdbusplus/message/native_types.hpp> namespace sdbusplus { diff --git a/sdbusplus/message/native_types.hpp b/sdbusplus/message/native_types.hpp new file mode 100644 index 0000000..c3941ca --- /dev/null +++ b/sdbusplus/message/native_types.hpp @@ -0,0 +1,49 @@ +#pragma once + +#include <string> + +namespace sdbusplus +{ + +namespace message +{ + +namespace details +{ + +/** Simple wrapper class for std::string to allow conversion to and from an + * alternative typename. */ +template <typename T> +struct string_wrapper +{ + std::string str; + + string_wrapper() = default; + string_wrapper(const string_wrapper&) = default; + string_wrapper& operator=(const string_wrapper&) = default; + string_wrapper(string_wrapper&&) = default; + string_wrapper& operator=(string_wrapper&&) = default; + ~string_wrapper() = default; + + string_wrapper(const std::string& str) : str(str) {} + string_wrapper(std::string&& str) : str(std::move(str)) {} + + operator std::string() const { return str; } + operator const std::string&() const { return str; } + operator std::string&&() { return std::move(str); } +}; + +/** Typename for sdbus OBJECT_PATH types. */ +struct object_path_type {}; +/** Typename for sdbus SIGNATURE types. */ +struct signature_type {}; + +} // namespace details + +/** std::string wrapper for OBJECT_PATH. */ +using object_path = details::string_wrapper<details::object_path_type>; +/** std::string wrapper for SIGNATURE. */ +using signature = details::string_wrapper<details::signature_type>; + +} // namespace message +} // namespace sdbusplus diff --git a/test/Makefile.am b/test/Makefile.am index e89fea1..c80b2b5 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -15,6 +15,9 @@ message_read_CXXFLAGS = $(SYSTEMD_CFLAGS) $(PTHREAD_CFLAGS) message_read_LDFLAGS = $(SYSTEMD_LIBS) $(PTHREAD_LIBS) message_read_SOURCES = message/read.cpp +check_PROGRAMS += message_native_types +message_native_types_SOURCES = message/native_types.cpp + check_PROGRAMS += message_types message_types_SOURCES = message/types.cpp diff --git a/test/message/native_types.cpp b/test/message/native_types.cpp new file mode 100644 index 0000000..1ee3dee --- /dev/null +++ b/test/message/native_types.cpp @@ -0,0 +1,13 @@ +#include <cassert> +#include <sdbusplus/message.hpp> + +int main() +{ + std::string s1 = sdbusplus::message::object_path("/asdf/"); + sdbusplus::message::object_path p = std::move(s1); + + std::string s2 = sdbusplus::message::signature("iii"); + sdbusplus::message::signature sig = s2; + + return 0; +} |

