This class serves similar purpose to pmem::obj::string, but keeps the data within the same allocation as inline_string itself.
More...
Inherits pmem::obj::experimental::basic_inline_string_base< CharT, Traits >.
template<typename CharT, typename Traits = std::char_traits<CharT>>
class pmem::obj::experimental::basic_inline_string< CharT, Traits >
This class serves similar purpose to pmem::obj::string, but keeps the data within the same allocation as inline_string itself.
It can be kept only on pmem.
The data is always kept right after the inline_string structure. It means that creating an object of inline_string must be done as follows:
- Allocate memory of sizeof(inline_string) + size of the characters string + sizeof('\0')
- Use emplace new() to create inline_string
Example:
struct Object {
Object(int x, const char *s) : x(x), s(s)
{
}
int x;
};
struct root {
};
void
{
if (r->o)
return;
auto value = "example";
auto req_capacity =
sizeof(Object) + strlen(value) + sizeof('\0');
new (r->o.get()) Object(1, value);
});
std::cout << r->o->s.data() << std::endl;
}
void
{
auto new_value = "some new, longer value";
if (r->o->s.capacity() >= strlen(new_value)) {
r->o->s.assign(new_value);
} else {
auto ptr =
strlen(new_value) + 1));
new (ptr.get()) Object(r->o->x, new_value);
pmem::obj::delete_persistent<Object>(r->o);
r->o = ptr;
});
}
std::cout << r->o->s.data() << std::endl;
}
(EXPERIMENTAL) Encapsulates the information about the persistent memory allocation model using PMDK's...
Definition: allocator.hpp:446
static void run(obj::pool_base &pool, std::function< void()> tx, Locks &... locks)
Execute a closure-like transaction and lock locks.
Definition: transaction.hpp:694
This class serves similar purpose to pmem::obj::string, but keeps the data within the same allocation...
Definition: inline_string.hpp:154
Persistent pointer class.
Definition: persistent_ptr.hpp:152
PMEMobj pool class.
Definition: pool.hpp:482
persistent_ptr< T > root()
Retrieves pool's root object.
Definition: pool.hpp:644
pointer allocate(size_type cnt, const_void_pointer=0)
Allocate storage for cnt objects of type T.
Definition: allocator.hpp:242