Commit 3af35aee authored by Max Kellermann's avatar Max Kellermann Committed by Max Kellermann

util/TemplateString: add cast operators

parent 02314ac7
...@@ -103,7 +103,7 @@ public: ...@@ -103,7 +103,7 @@ public:
template<typename T> template<typename T>
AppendMessageIter &AppendEmptyArray() { AppendMessageIter &AppendEmptyArray() {
return AppendMessageIter(*this, DBUS_TYPE_ARRAY, return AppendMessageIter(*this, DBUS_TYPE_ARRAY,
T::as_string.value) T::as_string)
.CloseContainer(*this); .CloseContainer(*this);
} }
...@@ -120,7 +120,7 @@ public: ...@@ -120,7 +120,7 @@ public:
AppendMessageIter &AppendVariant(const T &value) { AppendMessageIter &AppendVariant(const T &value) {
typedef VariantTypeTraits Traits; typedef VariantTypeTraits Traits;
return AppendMessageIter(*this, Traits::TYPE, return AppendMessageIter(*this, Traits::TYPE,
Traits::as_string.value) Traits::as_string)
.Append(value) .Append(value)
.CloseContainer(*this); .CloseContainer(*this);
} }
...@@ -146,7 +146,7 @@ public: ...@@ -146,7 +146,7 @@ public:
typedef typename W::ContainedTraits ContainedTraits; typedef typename W::ContainedTraits ContainedTraits;
return AppendMessageIter(*this, Traits::TYPE, return AppendMessageIter(*this, Traits::TYPE,
ContainedTraits::as_string.value) ContainedTraits::as_string)
.Append(value.value) .Append(value.value)
.CloseContainer(*this); .CloseContainer(*this);
} }
...@@ -158,7 +158,7 @@ public: ...@@ -158,7 +158,7 @@ public:
typedef typename W::ContainedTraits ContainedTraits; typedef typename W::ContainedTraits ContainedTraits;
return AppendMessageIter(*this, Traits::TYPE, return AppendMessageIter(*this, Traits::TYPE,
ContainedTraits::as_string.value) ContainedTraits::as_string)
.AppendFixedArray(value.value) .AppendFixedArray(value.value)
.CloseContainer(*this); .CloseContainer(*this);
} }
......
...@@ -245,7 +245,7 @@ UdisksNeighborExplorer::HandleMessage(DBusConnection *, DBusMessage *message) no ...@@ -245,7 +245,7 @@ UdisksNeighborExplorer::HandleMessage(DBusConnection *, DBusMessage *message) no
if (dbus_message_is_signal(message, DBUS_OM_INTERFACE, if (dbus_message_is_signal(message, DBUS_OM_INTERFACE,
"InterfacesAdded") && "InterfacesAdded") &&
dbus_message_has_signature(message, InterfacesAddedType::as_string.value)) { dbus_message_has_signature(message, InterfacesAddedType::as_string)) {
RecurseInterfaceDictEntry(ReadMessageIter(*message), [this](const char *path, auto &&i){ RecurseInterfaceDictEntry(ReadMessageIter(*message), [this](const char *path, auto &&i){
UDisks2::Object o(path); UDisks2::Object o(path);
UDisks2::ParseObject(o, std::forward<decltype(i)>(i)); UDisks2::ParseObject(o, std::forward<decltype(i)>(i));
...@@ -256,7 +256,7 @@ UdisksNeighborExplorer::HandleMessage(DBusConnection *, DBusMessage *message) no ...@@ -256,7 +256,7 @@ UdisksNeighborExplorer::HandleMessage(DBusConnection *, DBusMessage *message) no
return DBUS_HANDLER_RESULT_HANDLED; return DBUS_HANDLER_RESULT_HANDLED;
} else if (dbus_message_is_signal(message, DBUS_OM_INTERFACE, } else if (dbus_message_is_signal(message, DBUS_OM_INTERFACE,
"InterfacesRemoved") && "InterfacesRemoved") &&
dbus_message_has_signature(message, InterfacesRemovedType::as_string.value)) { dbus_message_has_signature(message, InterfacesRemovedType::as_string)) {
Remove(ReadMessageIter(*message).GetString()); Remove(ReadMessageIter(*message).GetString());
return DBUS_HANDLER_RESULT_HANDLED; return DBUS_HANDLER_RESULT_HANDLED;
} else } else
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <array> // for std::size() #include <array> // for std::size()
#include <cstddef> #include <cstddef>
#include <string_view>
namespace TemplateString { namespace TemplateString {
...@@ -39,6 +40,14 @@ template<std::size_t _size> ...@@ -39,6 +40,14 @@ template<std::size_t _size>
struct Buffer { struct Buffer {
static constexpr std::size_t size = _size; static constexpr std::size_t size = _size;
char value[size + 1]; char value[size + 1];
constexpr operator const char *() const noexcept {
return value;
}
constexpr operator std::string_view() const noexcept {
return {value, size};
}
}; };
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment