22 #ifndef QDENGINE_PARSER_XML_TAG_H 23 #define QDENGINE_PARSER_XML_TAG_H 25 #include "qdengine/qdengine.h" 56 tag(
int id = 0,
tag_data_format data_fmt =
TAG_DATA_VOID,
int data_sz = 0,
int data_offs = 0) : _ID(id), _data_format(data_fmt), _data_size(data_sz), _data_offset(data_offs), _data(NULL) { }
57 tag(
const tag &tg) : _ID(tg._ID), _data_format(tg._data_format), _data_size(tg._data_size), _data_offset(tg._data_offset), _data(tg._data), _subtags(tg._subtags) { }
61 tag &operator = (
const tag &tg) {
62 if (
this == &tg)
return *
this;
65 _data_format = tg._data_format;
66 _data_size = tg._data_size;
67 _data_offset = tg._data_offset;
69 _subtags = tg._subtags;
76 return g_engine->_tagMap[_ID - 1];
98 switch (_data_format) {
103 return sizeof(uint16);
105 return sizeof(int32);
107 return sizeof(uint32);
109 return sizeof(float);
132 return &*(_data->
begin() + _data_offset);
153 return _subtags.
back();
157 return !_subtags.
empty();
161 return _subtags.
size();
165 return _subtags.
begin();
169 return _subtags.
end();
174 if (it->ID() == subtag_id)
return &*it;
200 #endif // QDENGINE_PARSER_XML_TAG_H
int ID() const
Возвращает идентификатор тега.
Definition: xml_tag.h:75
void set_data_size(int sz)
Устанавливает количество элементов данных тега.
Definition: xml_tag.h:117
subtag_iterator subtags_begin() const
Возвращает итератор начала списка вложенных тегов.
Definition: xml_tag.h:164
iterator begin()
Definition: array.h:374
const char * data() const
Возвращает указатель на данные тега.
Definition: xml_tag.h:131
size_type size() const
Definition: list.h:237
int data_size() const
Возвращает количество элеметов данных тега.
Definition: xml_tag.h:93
данные типа uint32.
Definition: xml_tag.h:49
subtag_iterator subtags_end() const
Возвращает итератор конца списка вложенных тегов.
Definition: xml_tag.h:168
t_T & back()
Definition: list.h:206
int data_element_size() const
Возвращает размер элемента данных тега в байтах.
Definition: xml_tag.h:97
bool has_subtags() const
Возвращает true, если список вложенных тегов не пустой .
Definition: xml_tag.h:156
XML тег.
Definition: xml_tag.h:33
iterator end()
Definition: list.h:279
данные типа int.
Definition: xml_tag.h:47
строковые данные
Definition: xml_tag.h:53
void clear()
Очистка вложенных тегов.
Definition: xml_tag.h:144
Базовый класс для игровых ресурсов.
Definition: console.h:28
iterator begin()
Definition: list.h:266
const tag * search_subtag(int subtag_id) const
Поиск вложенного тега по его идентификатору.
Definition: xml_tag.h:172
void set_data_offset(int off)
Устанавливает смещение до данных тега в данных парсера.
Definition: xml_tag.h:126
tag & add_subtag(const tag &tg)
Добавляет вложенный тег.
Definition: xml_tag.h:151
void set_data(const Std::vector< char > *p)
Устанавливает указатель на общие данные.
Definition: xml_tag.h:136
данные отсутствуют
Definition: xml_tag.h:41
void clear()
Definition: list.h:245
int num_subtags() const
Возвращает количество вложенных тэгов.
Definition: xml_tag.h:160
int data_offset() const
Возвращает смещение до данных тега в данных парсера.
Definition: xml_tag.h:122
Definition: list_intern.h:51
данные типа uint16 int.
Definition: xml_tag.h:45
Definition: list_intern.h:54
tag_data_format
Формат данных тега.
Definition: xml_tag.h:39
tag_data_format data_format() const
Возвращает формат данных тега.
Definition: xml_tag.h:84
void push_back(const t_T &element)
Definition: list.h:174
bool empty() const
Definition: list.h:258
данные типа int16 int.
Definition: xml_tag.h:43
данные типа float.
Definition: xml_tag.h:51