src/scale/scale.hpp¶
Namespaces¶
| Name |
|---|
| sgns |
| sgns::scale |
Functions¶
| Name | |
|---|---|
| template <typename... Args> outcome::result< std::vector< uint8_t > > |
encode(Args &&... args) convenience function for encoding primitives data to stream |
| template <class T > outcome::result< T > |
decode(gsl::span< const uint8_t > span) convenience function for decoding primitives data from stream |
Functions Documentation¶
function encode¶
convenience function for encoding primitives data to stream
Parameters:
- args data to encode
Template Parameters:
- Args primitive types to be encoded
Return: encoded data
function decode¶
convenience function for decoding primitives data from stream
Parameters:
- span of bytes with encoded data
Template Parameters:
- T primitive type that is decoded from provided span
Return: decoded T
Source code¶
#ifndef SUPERGENIUS_SCALE_HPP
#define SUPERGENIUS_SCALE_HPP
#include <vector>
#include <boost/system/system_error.hpp>
#include <boost/throw_exception.hpp>
#include <gsl/span>
#include "outcome/outcome.hpp"
#include "scale/scale_decoder_stream.hpp"
#include "scale/scale_encoder_stream.hpp"
namespace sgns::scale {
template <typename... Args>
outcome::result<std::vector<uint8_t>> encode(Args &&... args) {
ScaleEncoderStream s{};
try {
(s << ... << std::forward<Args>(args));
} catch (std::system_error &e) {
return outcome::failure(e.code());
}
return s.data();
}
template <class T>
outcome::result<T> decode(gsl::span<const uint8_t> span) {
T t{};
ScaleDecoderStream s(span);
try {
s >> t;
} catch (std::system_error &e) {
return outcome::failure(e.code());
}
return outcome::success(t);
}
} // namespace sgns::scale
#endif // SUPERGENIUS_SCALE_HPP
Updated on 2026-03-04 at 13:10:45 -0800