#pragma once #include #include #include "core_export.h" #ifndef tr_lts #define tr_lts(ctx, t) (t) #endif namespace Core { class CORE_COMMON_EXPORT FunctionReplyObject { public: explicit FunctionReplyObject(int id = -1, const char *str = nullptr) : m_str(str ? str : std::string()) , m_id(id) {} explicit FunctionReplyObject(const char *str) : m_str(str ? str : std::string()) {} explicit FunctionReplyObject(int id, const std::string &errStr, const std::vector &errArgs) : m_str(errStr) , m_args(errArgs) , m_id(id) {} explicit FunctionReplyObject(int id, std::string &&errStr, std::vector &&errArgs) : m_str(std::move(errStr)) , m_args(std::move(errArgs)) , m_id(id) {} explicit FunctionReplyObject(int id, const std::string &errStr, const std::vector &errArgs, const std::string &additionalInfo) : m_str(errStr) , m_additionalInfo(additionalInfo) , m_args(errArgs) , m_id(id) {} explicit FunctionReplyObject(int id, std::string &&errStr, std::vector &&errArgs, std::string &&additionalInfo) : m_str(std::move(errStr)) , m_additionalInfo(std::move(additionalInfo)) , m_args(std::move(errArgs)) , m_id(id) {} ~FunctionReplyObject() = default; FunctionReplyObject &arg(qint64 val); FunctionReplyObject &arg(const std::string &str); FunctionReplyObject &arg(const QString &str); bool error() const { return !m_str.empty(); } void setId(int id) { m_id = id; } FunctionReplyObject &setStr(const char *str) { m_str = str; return *this; } FunctionReplyObject &setAdditionalInfo(const char *additionalInfo) { m_additionalInfo = additionalInfo; return *this; } int id() const { return m_id; } std::string str() const { return m_str; } std::string additionalInfo() const { return m_additionalInfo; } std::vector args() const { return m_args; } std::string operator()() const; QString translated() const; int64_t uniqueId() const { return m_uniqueId; } void setUniqueId(int64_t uniqueId) { m_uniqueId = uniqueId; } private: std::string m_str; std::string m_additionalInfo; std::vector m_args; int64_t m_uniqueId = 0; int m_id = -1; }; }