MDBX Containers
Loading...
Searching...
No Matches
utils.hpp File Reference

Utility helper functions for serializing values to and from MDBX. More...

Go to the source code of this file.

Classes

struct  mdbxc::has_to_bytes< T >
 Trait to check if a type provides a to_bytes() member. More...
 
struct  mdbxc::has_from_bytes< T >
 Trait to check if a type provides a static from_bytes() method. More...
 
struct  mdbxc::has_value_type< T >
 Trait indicating that a container defines value_type. More...
 

Namespaces

namespace  mdbxc
 

Macros

#define _MDBX_CONTAINERS_UTILS_HPP_INCLUDED
 

Functions

void mdbxc::check_mdbx (int rc, const std::string &context)
 Throws an MdbxException if MDBX return code indicates an error.
 
template<typename T>
MDBX_db_flags_t mdbxc::get_mdbx_flags ()
 Returns MDBX flags for a given key type.
 
template<typename T>
size_t mdbxc::get_key_size (const T &key)
 Returns the size in bytes of a given key type.
 
template<typename T>
std::enable_if<!has_to_bytes< T >::value &&!std::is_same< T, std::string >::value &&!std::is_trivially_copyable< T >::value, MDBX_val >::type mdbxc::serialize_key (const T &key)
 Serializes a key into MDBX_val for database operations.
 
template<typename T>
std::enable_if< std::is_same< T, std::string >::value, MDBX_val >::type mdbxc::serialize_key (const T &key)
 Serializes a key of type std::string.
 
template<typename T>
std::enable_if< std::is_same< T, std::vector< uint8_t > >::value||std::is_same< T, std::vector< char > >::value||std::is_same< T, std::vector< unsignedchar > >::value, MDBX_val >::type mdbxc::serialize_key (const T &key)
 Serializes a key stored in a byte vector.
 
template<typename T>
std::enable_if< std::is_integral< T >::value &&(sizeof(T)<=2), MDBX_val >::type mdbxc::serialize_key (const T &key)
 Serializes a small integral key (<=16 bits).
 
template<typename T>
std::enable_if< std::is_same< T, int32_t >::value||std::is_same< T, uint32_t >::value||std::is_same< T, float >::value, MDBX_val >::type mdbxc::serialize_key (const T &key)
 Serializes a 32-bit integral or float key.
 
template<typename T>
std::enable_if< std::is_same< T, int64_t >::value||std::is_same< T, uint64_t >::value||std::is_same< T, double >::value, MDBX_val >::type mdbxc::serialize_key (const T &key)
 Serializes a 64-bit integral or double key.
 
template<typename T>
std::enable_if< std::is_trivially_copyable< T >::value &&!std::is_same< T, std::string >::value &&!(std::is_integral< T >::value &&sizeof(T)<=2)&&!std::is_same< T, int32_t >::value &&!std::is_same< T, uint32_t >::value &&!std::is_same< T, float >::value &&!std::is_same< T, int64_t >::value &&!std::is_same< T, uint64_t >::value &&!std::is_same< T, double >::value, MDBX_val >::type mdbxc::serialize_key (const T &key)
 Serializes any other trivially copyable key type.
 
template<size_t N>
MDBX_val mdbxc::serialize_key (const std::bitset< N > &data)
 Serializes a std::bitset as a key.
 
template<typename T>
std::enable_if<!has_value_type< T >::value &&!std::is_same< T, std::vector< typenameT::value_type > >::value &&!std::is_trivially_copyable< typenameT::value_type >::value &&!has_to_bytes< T >::value &&!std::is_same< T, std::string >::value &&!std::is_trivially_copyable< T >::value, MDBX_val >::type mdbxc::serialize_value (const T &value)
 Serializes a general value into MDBX_val.
 
template<typename T>
std::enable_if< std::is_same< T, std::string >::value, MDBX_val >::type mdbxc::serialize_value (const T &value)
 Serializes a std::string value.
 
template<typename T>
std::enable_if< has_value_type< T >::value &&std::is_trivially_copyable< typenameT::value_type >::value &&(std::is_same< T, std::deque< typenameT::value_type > >::value||std::is_same< T, std::list< typenameT::value_type > >::value||std::is_same< T, std::set< typenameT::value_type > >::value), MDBX_val >::type mdbxc::serialize_value (const T &container)
 Serializes containers (vector, deque, list, set) of trivially copyable elements.
 
template<typename T>
std::enable_if< has_value_type< T >::value &&std::is_same< T, std::vector< typenameT::value_type > >::value &&std::is_trivially_copyable< typenameT::value_type >::value, MDBX_val >::type mdbxc::serialize_value (const T &value)
 Serializes a vector of trivially copyable elements.
 
template<typename T>
std::enable_if< has_to_bytes< T >::value, MDBX_val >::type mdbxc::serialize_value (const T &value)
 Serializes a value using its to_bytes() method.
 
template<typename T>
std::enable_if<!has_to_bytes< T >::value &&std::is_trivially_copyable< T >::value, MDBX_val >::type mdbxc::serialize_value (const T &value)
 Serializes any trivially copyable value.
 
template<typename T>
std::enable_if< has_value_type< T >::value &&std::is_same< typenameT::value_type, std::string >::value, MDBX_val >::type mdbxc::serialize_value (const T &container)
 Serializes a container of strings.
 
template<typename T>
std::enable_if<!has_from_bytes< T >::value &&!std::is_same< T, std::string >::value &&!std::is_trivially_copyable< T >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a value from MDBX_val into type T.
 
template<typename T>
std::enable_if< std::is_same< T, std::string >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a std::string value.
 
template<typename T>
std::enable_if< std::is_same< T, std::vector< uint8_t > >::value||std::is_same< T, std::vector< char > >::value||std::is_same< T, std::vector< unsignedchar > >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a vector of bytes.
 
template<typename T>
std::enable_if< std::is_same< T, std::deque< uint8_t > >::value||std::is_same< T, std::deque< char > >::value||std::is_same< T, std::deque< unsignedchar > >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a deque of bytes.
 
template<typename T>
std::enable_if< std::is_same< T, std::list< uint8_t > >::value||std::is_same< T, std::list< char > >::value||std::is_same< T, std::list< unsignedchar > >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a list of bytes.
 
template<typename T>
std::enable_if< has_value_type< T >::value &&std::is_same< T, std::vector< typenameT::value_type > >::value &&std::is_trivially_copyable< typenameT::value_type >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a vector of trivially copyable elements.
 
template<typename T>
std::enable_if<(std::is_same< T, std::deque< typenameT::value_type > >::value||std::is_same< T, std::list< typenameT::value_type > >::value)&&std::is_trivially_copyable< typenameT::value_type >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a deque or list of trivially copyable elements.
 
template<typename T>
std::enable_if<!has_from_bytes< T >::value &&std::is_trivially_copyable< T >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a trivially copyable value.
 
template<typename T>
std::enable_if< has_from_bytes< T >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a value using its from_bytes() method.
 
template<typename T>
std::enable_if< has_value_type< T >::value &&std::is_same< typenameT::value_type, std::string >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a container of strings.
 
template<typename T>
std::enable_if< std::is_same< T, std::set< std::string > >::value||std::is_same< T, std::unordered_set< std::string > >::value, T >::type mdbxc::deserialize_value (const MDBX_val &val)
 Deserializes a set of strings.
 

Detailed Description

Utility helper functions for serializing values to and from MDBX.

See: https://libmdbx.dqdkfa.ru/

Definition in file utils.hpp.

Macro Definition Documentation

◆ _MDBX_CONTAINERS_UTILS_HPP_INCLUDED

#define _MDBX_CONTAINERS_UTILS_HPP_INCLUDED

Definition at line 3 of file utils.hpp.