PMDK C++ bindings  1.13.0-git107.g7e59f08f
This is the C++ bindings documentation for PMDK's libpmemobj.
pmem::obj::experimental Namespace Reference

Experimental implementations. More...

Classes

struct  atomic_persistent_aware_ptr
 Atomic specialization of a persistent ptr (self_relative_ptr) that manages its persistence by itself. More...
 
class  concurrent_map
 Persistent memory aware implementation of Intel TBB concurrent_map with API partially compatible to std::map. More...
 
class  basic_dram_inline_string
 Pmem/DRAM variation of pmem::obj::string, where data is kept right next to the inline_string structure. More...
 
class  basic_inline_string
 Pmem-only variation of pmem::obj::string, where data is kept right next to the inline_string structure. More...
 
struct  total_sizeof
 A helper trait which calculates required memory capacity (in bytes) for a type. More...
 
struct  total_sizeof< basic_inline_string< CharT, Traits > >
 A helper trait which calculates required memory capacity (in bytes) for a type. More...
 
struct  total_sizeof< basic_dram_inline_string< CharT, Traits > >
 A helper trait which calculates required memory capacity (in bytes) for a type. More...
 
class  mpsc_queue
 Persistent memory aware implementation of multi producer single consumer queue. More...
 
class  radix_tree
 Persistent associative, ordered container with API similar and partially compatible with the API of std::map. More...
 
class  self_relative_ptr
 Persistent self-relative pointer class. More...
 
class  v
 Volatile residing on pmem class. More...
 

Typedefs

using dram_inline_string = basic_dram_inline_string< char >
 The most typical dram_inline_string usage - the char specialization. More...
 
using dram_inline_wstring = basic_dram_inline_string< wchar_t >
 The wide char specialization.
 
using dram_inline_u16string = basic_dram_inline_string< char16_t >
 The char16 specialization.
 
using dram_inline_u32string = basic_dram_inline_string< char32_t >
 The char32 specialization.
 
using inline_string = basic_inline_string< char >
 The most typical inline_string usage - the char specialization. More...
 
using inline_wstring = basic_inline_string< wchar_t >
 The wide char specialization.
 
using inline_u16string = basic_inline_string< char16_t >
 The char16 specialization.
 
using inline_u32string = basic_inline_string< char32_t >
 The char32 specialization.
 
using self_relative_ptr_base = pmem::detail::self_relative_ptr_base_impl< std::ptrdiff_t >
 self_relative_ptr base (non-template) class More...
 

Functions

template<typename Key , typename Value , typename BytesView , bool MtMode>
void swap (radix_tree< Key, Value, BytesView, MtMode > &lhs, radix_tree< Key, Value, BytesView, MtMode > &rhs)
 
template<typename K , typename V , typename BV , bool MtMode>
std::ostream & operator<< (std::ostream &os, const radix_tree< K, V, BV, MtMode > &tree)
 Prints tree in DOT format. More...
 

Detailed Description

Experimental implementations.

It contains implementations, which are not yet ready to be used in production. They may be not finished, not fully tested or still in discussion. It is located within pmem::obj namespace.

Typedef Documentation

◆ self_relative_ptr_base

self_relative_ptr base (non-template) class

Implements some of the functionality of the self_relative_ptr class. It defines all applicable conversions from and to a self_relative_ptr_base.

It can be used e.g. as a parameter, where self_relative_ptr of any template type is required. It is similar to self_relative_ptr<void> (it can point to whatever type), but it can be used when you want to have pointer to some unspecified self_relative_ptr (with self_relative_ptr<void> it can't be done, because: self_relative_ptr<T>* does not convert to self_relative_ptr<void>*).

Function Documentation

◆ operator<<()

template<typename K , typename V , typename BV , bool MtMode>
std::ostream& pmem::obj::experimental::operator<< ( std::ostream &  os,
const radix_tree< K, V, BV, MtMode > &  tree 
)

Prints tree in DOT format.

Used for debugging.