@@ -6,15 +6,24 @@
|
|||||||
namespace furvm {
|
namespace furvm {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Default specialization for header_has_refcount type trait.
|
||||||
|
*/
|
||||||
template <typename Header, typename = void>
|
template <typename Header, typename = void>
|
||||||
struct header_has_refcount : std::false_type {};
|
struct header_has_refcount : std::false_type {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Specialization for header_has_refcount type trait.
|
||||||
|
*/
|
||||||
template <typename Header>
|
template <typename Header>
|
||||||
struct header_has_refcount<Header,
|
struct header_has_refcount<Header,
|
||||||
std::void_t<decltype(std::declval<Header&>().acquire()),
|
std::void_t<decltype(std::declval<Header&>().acquire()),
|
||||||
decltype(std::declval<Header&>().release()),
|
decltype(std::declval<Header&>().release()),
|
||||||
decltype(std::declval<Header&>().reference_count())>> : std::true_type {};
|
decltype(std::declval<Header&>().reference_count())>> : std::true_type {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief An alias for header_has_refcount's value.
|
||||||
|
*/
|
||||||
template <typename Header>
|
template <typename Header>
|
||||||
static constexpr auto header_has_refcount_v = header_has_refcount<Header>::value;
|
static constexpr auto header_has_refcount_v = header_has_refcount<Header>::value;
|
||||||
|
|
||||||
|
|||||||
@@ -8,15 +8,69 @@
|
|||||||
namespace furvm {
|
namespace furvm {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serializes an integer.
|
||||||
|
*
|
||||||
|
* @param os Output stream.
|
||||||
|
* @param value Integer.
|
||||||
|
* @return The output stream.
|
||||||
|
*/
|
||||||
std::ostream& serialize(std::ostream& os, std::int8_t value);
|
std::ostream& serialize(std::ostream& os, std::int8_t value);
|
||||||
std::ostream& serialize(std::ostream& os, std::int16_t value);
|
std::ostream& serialize(std::ostream& os, std::int16_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serializes an integer.
|
||||||
|
*
|
||||||
|
* @param os Output stream.
|
||||||
|
* @param value Integer.
|
||||||
|
* @return The output stream.
|
||||||
|
*/
|
||||||
std::ostream& serialize(std::ostream& os, std::int32_t value);
|
std::ostream& serialize(std::ostream& os, std::int32_t value);
|
||||||
std::ostream& serialize(std::ostream& os, std::int64_t value);
|
std::ostream& serialize(std::ostream& os, std::int64_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serializes an integer.
|
||||||
|
*
|
||||||
|
* @param os Output stream.
|
||||||
|
* @param value Integer.
|
||||||
|
* @return The output stream.
|
||||||
|
*/
|
||||||
std::ostream& serialize(std::ostream& os, std::uint8_t value);
|
std::ostream& serialize(std::ostream& os, std::uint8_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serializes an integer.
|
||||||
|
*
|
||||||
|
* @param os Output stream.
|
||||||
|
* @param value Integer.
|
||||||
|
* @return The output stream.
|
||||||
|
*/
|
||||||
std::ostream& serialize(std::ostream& os, std::uint16_t value);
|
std::ostream& serialize(std::ostream& os, std::uint16_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serializes an integer.
|
||||||
|
*
|
||||||
|
* @param os Output stream.
|
||||||
|
* @param value Integer.
|
||||||
|
* @return The output stream.
|
||||||
|
*/
|
||||||
std::ostream& serialize(std::ostream& os, std::uint32_t value);
|
std::ostream& serialize(std::ostream& os, std::uint32_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serializes an integer.
|
||||||
|
*
|
||||||
|
* @param os Output stream.
|
||||||
|
* @param value Integer.
|
||||||
|
* @return The output stream.
|
||||||
|
*/
|
||||||
std::ostream& serialize(std::ostream& os, std::uint64_t value);
|
std::ostream& serialize(std::ostream& os, std::uint64_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Serializes a string.
|
||||||
|
*
|
||||||
|
* @param os Output stream.
|
||||||
|
* @param value String.
|
||||||
|
* @return The output stream.
|
||||||
|
*/
|
||||||
std::ostream& serialize(std::ostream& os, const std::string& value);
|
std::ostream& serialize(std::ostream& os, const std::string& value);
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|||||||
Reference in New Issue
Block a user