From 81746d635ebe5727832496216d63489888d8572d Mon Sep 17 00:00:00 2001 From: Kevin Matz Date: Sat, 13 May 2023 11:34:50 -0400 Subject: [PATCH] convenience functions for adding arguments by value --- protocol/osc/message.cpp | 94 ++++++++++++++++++++++++++++++++++++++++ protocol/osc/message.h | 10 +++++ 2 files changed, 104 insertions(+) diff --git a/protocol/osc/message.cpp b/protocol/osc/message.cpp index df47938..2e508a7 100644 --- a/protocol/osc/message.cpp +++ b/protocol/osc/message.cpp @@ -157,6 +157,100 @@ void Message::writeString(std::shared_ptr buffer, const std::strin } +/** + * @brief Message::addArgument + * @param arg + */ +void Message::addArgument(std::shared_ptr arg) +{ + arguments.push_back(arg); +} + + +/** + * @brief Message::addArgument + * @param val + */ +void Message::addArgument(const int32_t val) +{ + arguments.emplace_back(std::make_shared(val)); +} + + +/** + * @brief Message::addArgument + * @param val + */ +void Message::addArgument(const float val) +{ + arguments.emplace_back(std::make_shared(val)); +} + + +/** + * @brief Message::addArgument + * @param str + */ +void Message::addArgument(const std::string str) +{ + arguments.emplace_back(std::make_shared(str)); +} + + +/** + * @brief Message::addArgument + * @param blob + * @param size + */ +void Message::addArgument(const uint8_t *blob, size_t size) +{ + arguments.emplace_back(std::make_shared(blob, size)); +} + + +/** + * @brief Message::addArgument + * @param val + */ +void Message::addArgument(const int64_t val) +{ + arguments.emplace_back(std::make_shared(val)); +} + + +/** + * @brief Message::addArgument + * @param val + */ +void Message::addArgument(const double val) +{ + arguments.emplace_back(std::make_shared(val)); +} + + +/** + * @brief Message::addArgument + * @param val + */ +void Message::addArgument(const char val) +{ + arguments.emplace_back(std::make_shared(val)); +} + + +/** + * @brief Message::addArgument + * @param state + */ +void Message::addArgument(const bool state) +{ + if (state) + arguments.emplace_back(std::make_shared()); + else + arguments.emplace_back(std::make_shared()); +} + + size_t Message::streamSize() const { size_t address_size = address_pattern.size(); // character count diff --git a/protocol/osc/message.h b/protocol/osc/message.h index daab368..e03d7da 100644 --- a/protocol/osc/message.h +++ b/protocol/osc/message.h @@ -46,6 +46,16 @@ struct Message static void readString(std::shared_ptr buffer, std::string &string); static void writeString(std::shared_ptr buffer, const std::string &string); + void addArgument(std::shared_ptr arg); + void addArgument(const int32_t val); // i + void addArgument(const float val); // f + void addArgument(const std::string str); // s + void addArgument(const uint8_t *blob, size_t size); // b + void addArgument(const int64_t val); // h + void addArgument(const double val); // d + void addArgument(const char val); // c + void addArgument(const bool state); // T, F + virtual size_t streamSize() const override; virtual void iStream(std::shared_ptr) override; virtual void oStream(std::shared_ptr) const override;