14#include "lcf/ldb/reader.h"
15#include "lcf/lmt/reader.h"
16#include "lcf/lmu/reader.h"
17#include "lcf/lsd/reader.h"
19#include "lcf/rpg/save.h"
27 if (!field_map.empty())
29 for (
int i = 0; fields[
i] !=
NULL;
i++)
30 field_map[fields[
i]->
id] = fields[
i];
37 for (
int i = 0; fields[
i] !=
NULL;
i++)
38 tag_map[fields[
i]->
name] = fields[
i];
50 static rpg::Actor
make(
bool is2k3) {
51 auto actor = rpg::Actor();
73 if (
it != field_map.end()) {
93typename std::enable_if<std::is_same<T, rpg::Save>::value ||
94 std::is_same<T, rpg::Database>::value>::type
100typename std::enable_if<!std::is_same<T, rpg::Save>::value &&
101 !std::is_same<T, rpg::Database>::value>::type
112 for (
int i = 0; fields[
i] !=
NULL;
i++) {
117 if (field->id <
last)
118 std::cerr <<
"field order mismatch: " << field->id
120 <<
" in struct " <<
name
125 stream.WriteInt(field->id);
129 field->WriteLcf(obj,
stream);
141 for (
int i = 0; fields[
i] !=
NULL;
i++) {
150 result += LcfReader::IntSize(field->id);
155 result += LcfReader::IntSize(0);
162 for (
int i = 0; fields[
i] !=
NULL;
i++) {
164 field->WriteXml(obj,
stream);
263 ref.resize(
ref.size() + 1);
RootXmlHandler(S &ref, const char *const name)
void StartElement(XmlReader &stream, const char *name, const char **atts)
StructFieldXmlHandler(S &ref)
static void BeginXml(S &obj, XmlReader &stream)
static int LcfSize(const S &obj, LcfWriter &stream)
static void MakeFieldMap()
static void WriteXml(const S &obj, XmlWriter &stream)
static void WriteLcf(const S &obj, LcfWriter &stream)
static void ReadLcf(S &obj, LcfReader &stream)
void StartElement(XmlReader &stream, const char *name, const char **atts)
StructVectorXmlHandler(std::vector< S > &ref)
void EndElement(XmlReader &, const char *)
void StartElement(XmlReader &stream, const char *name, const char **)
void CharacterData(XmlReader &, const std::string &data)
std::enable_if< std::is_same< T, rpg::Save >::value||std::is_same< T, rpg::Database >::value >::type conditional_zero_writer(LcfWriter &)
static rpg::Actor make(bool is2k3)