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"
28 if (!field_map.empty())
30 for (
int i = 0; fields[
i] !=
NULL;
i++)
31 field_map[fields[
i]->
id] = fields[
i];
38 for (
int i = 0; fields[
i] !=
NULL;
i++)
39 tag_map[fields[
i]->
name] = fields[
i];
51 static rpg::Actor
make(
bool is2k3) {
52 auto actor = rpg::Actor();
74 if (
it != field_map.end()) {
94typename std::enable_if<std::is_same<T, rpg::Save>::value ||
95 std::is_same<T, rpg::Database>::value>::type
101typename std::enable_if<!std::is_same<T, rpg::Save>::value &&
102 !std::is_same<T, rpg::Database>::value>::type
113 for (
int i = 0; fields[
i] !=
NULL;
i++) {
118 if (field->id <
last)
119 std::cerr <<
"field order mismatch: " << field->id
121 <<
" in struct " <<
name
123 if (!field->isPresentIfDefault(
db_is2k3) && field->IsDefault(obj, ref,
db_is2k3)) {
126 stream.WriteInt(field->id);
142 for (
int i = 0; fields[
i] !=
NULL;
i++) {
148 if (!field->isPresentIfDefault(
db_is2k3) && field->IsDefault(obj, ref,
db_is2k3)) {
151 result += LcfReader::IntSize(field->id);
156 result += LcfReader::IntSize(0);
163 for (
int i = 0; fields[
i] !=
NULL;
i++) {
264 ref.resize(
ref.size() + 1);
static void BeginXml(S &obj, XmlReader &stream)
static void ReadLcf(S &obj, LcfReader &stream, uint32_t length)
static void WriteXml(const S &obj, XmlWriter &stream)
static int LcfSize(const S &obj, LcfWriter &stream)
static void WriteLcf(const S &obj, LcfWriter &stream)
static 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)
void Warning(const char *fmt,...) LIKE_PRINTF
void Error(const char *fmt,...) LIKE_PRINTF
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)