[xswiftbus] Use std::string_view for performance in CDBusMessage

This avoids repeated dynamic memory allocations in dbusMessageHandler
methods and elsewhere due to repeatedly constructing temporary strings.

std::string_view is a C++17 feature but also part of the Library
Fundamentals TS and available in all our compilers.
This commit is contained in:
Mat Sutcliffe
2020-01-12 18:55:27 +00:00
parent 0c444ca45c
commit 0a2001a68e
3 changed files with 21 additions and 6 deletions

View File

@@ -61,17 +61,17 @@ namespace XSwiftBus
return dbus_message_get_serial(m_message);
}
std::string CDBusMessage::getInterfaceName() const
string_view CDBusMessage::getInterfaceName() const
{
return dbus_message_get_interface(m_message);
}
std::string CDBusMessage::getObjectPath() const
string_view CDBusMessage::getObjectPath() const
{
return dbus_message_get_path(m_message);
}
std::string CDBusMessage::getMethodName() const
string_view CDBusMessage::getMethodName() const
{
return dbus_message_get_member(m_message);
}

View File

@@ -12,10 +12,23 @@
#include "dbus/dbus.h"
#include <string>
#include <vector>
#if defined(_MSC_VER)
#include <experimental/string>
#elif defined(__clang__)
#include <string_view>
#else
#include <experimental/string_view>
#endif
namespace XSwiftBus
{
#if defined(_MSC_VER) || defined(__clang__)
using std::string_view;
#else
using std::experimental::string_view;
#endif
//! DBus Message
class CDBusMessage
{
@@ -45,13 +58,13 @@ namespace XSwiftBus
dbus_uint32_t getSerial() const;
//! Get the called interface name
std::string getInterfaceName() const;
string_view getInterfaceName() const;
//! Get the called object path
std::string getObjectPath() const;
string_view getObjectPath() const;
//! Get the called method name
std::string getMethodName() const;
string_view getMethodName() const;
//! Begin writing argument
void beginArgumentWrite();

View File

@@ -5,6 +5,8 @@ TEMPLATE = lib
CONFIG += shared plugin
CONFIG -= qt
CONFIG += c++17
INCLUDEPATH += $$EXTERNALSROOT/common/include/XPLM
LIBS += -levent_core -ldbus-1