18 for (
int i = 0; flags[i] != NULL; i++)
19 tag_map[flags[i]->name] = flags[i];
24 assert(length >= 1 && length <= max_size);
26 for (
int i = 0; flags[i] != NULL; i++) {
28 if (i / 8 >= (
int) length)
32 bool S::*ref = flags[i]->ref;
33 obj.*ref = ((bitflag >> (i % 8)) & 0x1) != 0;
40 for (
int i = 0; flags[i] != NULL; i++) {
43 stream.
Write(bitflag);
46 bool S::*ref = flags[i]->ref;
48 bitflag |= (1 << (i % 8));
51 if (bitflag != 0 || max_size == 1)
52 stream.
Write(bitflag);
58 for (
int i = 0; flags[i] != NULL; i++) {
59 bool S::*ref = flags[i]->ref;
69 for (
int i = 0; flags[i] != NULL; i++) {
70 const Flag* flag = flags[i];
71 bool S::*ref = flag->
ref;
90 bool S::*ref = flag->
ref;
94 stream.
Error(
"Unrecognized field '%s'", name);
static void WriteXml(const S &obj, XmlWriter &stream)
void SetHandler(XmlHandler *handler)
void BeginElement(const std::string &name)
void Read(void *ptr, size_t size, size_t nmemb)
void EndElement(const std::string &name)
void Error(const char *fmt,...)
void EndElement(XmlReader &, const char *)
static void ReadLcf(S &obj, LcfReader &stream, uint32_t length)
static void BeginXml(S &obj, XmlReader &stream)
void Write(const void *ptr, size_t size, size_t nmemb)
void StartElement(XmlReader &stream, const char *name, const char **)
static void WriteLcf(const S &obj, LcfWriter &stream)
void CharacterData(XmlReader &, const std::string &data)
static int LcfSize(const S &obj, LcfWriter &stream)
void WriteNode(const std::string &name, const T &val)