8 #ifndef LLUVIA_CORE_NODE_PUSH_CONSTANTS_H_
9 #define LLUVIA_CORE_NODE_PUSH_CONSTANTS_H_
36 const auto dataSize =
sizeof(data);
37 m_data.resize(dataSize);
39 std::memcpy(
static_cast<void*
>(&m_data[0]), &data, dataSize);
46 if (
sizeof(T) != m_data.size()) {
48 "Size of receiving object must be equal to the size of internal buffer, expected: "
49 + std::to_string(m_data.size())
50 +
" got: " + std::to_string(
sizeof(T)));
54 std::memcpy(&out, &m_data[0],
sizeof(out));
63 const auto currentSize =
getSize();
64 if (currentSize == 0) {
65 set(std::forward<T>(data));
69 const auto dataSize =
sizeof(data);
71 auto new_data = std::vector<uint8_t>(currentSize + dataSize);
72 std::memcpy(&new_data[0], &m_data[0], currentSize);
73 std::memcpy(&new_data[currentSize], &data, dataSize);
75 m_data = std::move(new_data);
80 return (
void*)(&m_data[0]);
90 float getFloat()
const {
return get<float>(); }
94 int32_t
getInt32()
const {
return get<int32_t>(); }
97 std::vector<uint8_t> m_data {};
Definition: PushConstants.h:20
PushConstants(const PushConstants &)=default
void * getPtr() const noexcept
Definition: PushConstants.h:78
void setInt32(const int32_t &d)
Definition: PushConstants.h:93
size_t getSize() const noexcept
Definition: PushConstants.h:83
float getFloat() const
Definition: PushConstants.h:90
void pushFloat(const float &d)
Definition: PushConstants.h:88
PushConstants(PushConstants &&)=default
void setFloat(const float &d)
Definition: PushConstants.h:89
void set(T &&data)
Definition: PushConstants.h:33
int32_t getInt32() const
Definition: PushConstants.h:94
PushConstants & operator=(PushConstants &&)=default
T get() const
Definition: PushConstants.h:43
void push(T &&data)
Definition: PushConstants.h:60
PushConstants & operator=(const PushConstants &)=default
void pushInt32(const int32_t &d)
Definition: PushConstants.h:92
error related classes and methods.
void throwSystemError(ll::ErrorCode errorCode, T &&msg)
Throws a std::system_error exception with error code and message.
Definition: error.h:173