36 return m_nameCRC32 == other.m_nameCRC32;
39 return m_nameCRC32 == 0;
41 const char *
name()
const {
67 constexpr
static uint32_t Magic = 0xEE0BDDBA;
68 constexpr
static size_t k_storageSize = 4096;
69 constexpr
static size_t k_maxRecordSize = (1 <<
sizeof(
record_size_t)*8);
72 const char * nameOfRecord(
const Record record);
76 void destroyRecord(
const Record record);
80 const char * nameOfRecordStarting(
char *
start)
const;
81 const void * valueOfRecordStarting(
char *
start)
const;
84 size_t overrideSizeAtPosition(
char * position,
record_size_t size);
85 size_t overrideNameAtPosition(
char * position,
const char * name);
86 size_t overrideValueAtPosition(
char * position,
const void *
data,
record_size_t size);
88 bool isNameTaken(
const char * name,
Record * recordToExclude =
nullptr);
89 bool nameCompliant(
const char * name)
const;
91 size_t sizeOfRecord(
const char * name,
size_t size)
const;
92 bool slideBuffer(
char * position,
int delta);
93 class RecordIterator {
95 RecordIterator(
char *
start) : m_recordStart(
start) {}
96 char * operator*() {
return m_recordStart; }
97 RecordIterator& operator++();
98 bool operator!=(
const RecordIterator& it)
const {
return m_recordStart != it.m_recordStart; }
100 char * m_recordStart;
102 RecordIterator begin()
const {
103 if (sizeOfRecordStarting((
char *)m_buffer) == 0) {
106 return RecordIterator((
char *)m_buffer);
108 RecordIterator end()
const {
return RecordIterator(
nullptr); };
111 char m_buffer[k_storageSize];
Record recordWithExtensionAtIndex(const char *extension, int index)
Record::ErrorStatus createRecord(const char *name, const void *data, size_t size)
int numberOfRecordsWithExtension(const char *extension)
Record recordNamed(const char *name)
static Storage * sharedStorage()
Record(const char *name=nullptr)
const char * name() const
ErrorStatus setName(const char *name)
ErrorStatus setValue(Data data)
bool operator==(const Record &other) const