1 #ifndef EBML_NG_DOCUMENT_H 2 #define EBML_NG_DOCUMENT_H 4 #include <shared_mutex> 10 class ebmlDocument :
public std::enable_shared_from_this<ebmlDocument> {
16 mutable std::shared_mutex _lock;
43 std::unique_lock<std::shared_mutex>
wlock()
const;
44 std::shared_lock<std::shared_mutex>
rlock()
const;
45 std::shared_mutex&
mutex()
const;
std::shared_mutex & mutex() const
Definition: ebmlDocument.cpp:63
ebml_shared_ptr< T > ebml_dynamic_pointer_cast(const ebml_shared_ptr< U > &)
Definition: ptrs.h:676
ebml::ptr< T > root() const
Definition: ebmlDocument.h:37
const ebmlElement_sp & root() const
Definition: ebmlDocument.cpp:44
void setRoot(const ebmlElement_sp &)
Definition: ebmlDocument.h:28
const ebmlElement_sp & head() const
Definition: ebmlDocument.cpp:48
Definition: basictypes.h:40
A drop-in replacement for std::shared_ptr tailored for EBML objects.
Definition: ptrs.h:27
Definition: ebmlSchema.h:32
std::shared_lock< std::shared_mutex > rlock() const
Definition: ebmlDocument.cpp:59
Definition: ebmlDocument.h:10
void setHead(const ebmlElement_sp &)
Definition: ebmlDocument.h:25
std::unique_lock< std::shared_mutex > wlock() const
Definition: ebmlDocument.cpp:55
ebmlDocument(const ebmlSchema *)
Definition: ebmlDocument.cpp:8
size_t blksize() const
Definition: ebmlDocument.cpp:40
Base class for file-like IO operations.
Definition: io.h:22
ioBase & file()
Definition: ebmlDocument.cpp:32
const ebmlSchema * schema() const
Definition: ebmlDocument.cpp:51