1 #ifndef EBML_NG_DATAELEMENT_H 2 #define EBML_NG_DATAELEMENT_H 6 #include "ebmlElement.tpp" 49 ebmlDataType(
const char*,
const std::wstring&,
const T&);
97 virtual size_t _encode(
char*)
const;
124 ebmlDataType(
const char*,
const std::wstring&,
const T&);
156 virtual size_t _encode(
char*)
const;
184 #define DECL_DATA_CLS(T) \ 185 extern template class ebml::ebmlDataType<T>; \ 186 extern template class ebml::ebmlDataElement<T>; \ 187 extern template T& ebml::data<T>(const ebmlElement_sp&); \ 188 extern template const T& ebml::data<T>(const c_ebmlElement_sp&) 190 #define DECL_EBML_ALIAS(T, alias) \ 191 typedef ::ebml::ebmlDataType<T> alias##Type; \ 192 typedef ::ebml::ebmlDataElement<T> alias; 194 #define INST_EBML_CLS(T, defaultval) \ 196 T ebml::ebmlDataType<T>::defaultdefault = defaultval; \ 197 template class ebml::ebmlDataType<T>; \ 198 template class ebml::ebmlDataElement<T>; \ 199 template T& ebml::data<T>(const ebml::ebmlElement_sp&); \ 200 template const T& ebml::data<T>(const ebml::c_ebmlElement_sp&) 202 #define INST_CONST_EBML_CLS(T, defaultval) \ 204 const T ebml::ebmlDataType<const T>::defaultdefault = defaultval; \ 205 template class ebml::ebmlDataType<const T>; \ 206 template class ebml::ebmlDataElement<const T>; \ 207 template const T& ebml::data<const T>(const ebml::c_ebmlElement_sp&);
Helper class for creating and initializing seek data.
Definition: seekdata.h:195
T & data(const ebmlElement_sp &elem)
T defaultval
Definition: ebmlDataElement.h:45
T data
Definition: ebmlDataElement.h:89
Represents a parsed EBML string segment.
Definition: string.h:37
static T defaultdefault
Definition: ebmlDataElement.h:46
Definition: ebmlDataElement.h:134
Definition: ebmlDataElement.h:117
#define DECL_DATA_CLS(T)
Definition: ebmlDataElement.h:184
::ebml::ebmlDataType< double > ebmlFloatType
EBML Float Type.
Definition: basictypes.h:43
ebmlDataElement(const ebmlDataType< T > *)
std::wstring minirepr() const
ebml::ptr< ebmlinst_t > clone() const
Definition: basictypes.h:40
A drop-in replacement for std::shared_ptr tailored for EBML objects.
Definition: ptrs.h:27
Declaration of the EBML element type base class and CRTP templates.
::ebml::ebmlDataType< timepoint_t > ebmlDateTimeType
EBML Date Type.
Definition: basictypes.h:46
::ebml::ebmlDataType< long long > ebmlSignedIntegerType
EBML Signed Integer Type.
Definition: basictypes.h:42
std::chrono::time_point< std::chrono::system_clock, std::chrono::nanoseconds > timepoint_t
Definition: datetime.h:10
uint64_t ebmlID_t
Definition: ebmlID_t.h:7
virtual size_t dataSize() const
virtual void _clonedata(const ebmlElement *)
Definition: ebmlDataElement.h:18
static const T defaultdefault
Definition: ebmlDataElement.h:121
Abstract base class for EBML Element instances.
Definition: ebmlElement.h:79
T data
Definition: ebmlDataElement.h:147
CRTP template for EBML Element instances.
Definition: ebmlElement.h:320
Template class for EBML data types.
Definition: ebmlDataElement.h:42
virtual size_t _encode(char *) const
Declaration of the EBML element instance base class and CRTP templates.
const T defaultval
Definition: ebmlDataElement.h:120
ebmlDataType(const char *, const std::wstring &)
::ebml::ebmlDataType< std::wstring > ebmlUnicodeType
EBML Unicode Type.
Definition: basictypes.h:45
CRTP template for EBML Element Type objects.
Definition: ebmlElementType.h:454
std::shared_ptr< ebmlDataElement< T > > ebmlDataElement_sp
Definition: ebmlDataElement.h:21
::ebml::ebmlDataType< unsigned long long > ebmlUnsignedIntegerType
EBML Unsigned Integer Type.
Definition: basictypes.h:41
::ebml::ebmlDataType< std::string > ebmlBinaryType
EBML Binary Type.
Definition: basictypes.h:44