30 for (
size_t i = 0; i < num_flags; ++i) {
33 if (byteidx >=
int(length)) {
39 obj.flags[i] |= (
byte >> bitidx) & 1;
42 #ifdef LCF_DEBUG_TRACE
44 for (
size_t i = 0; i < obj.flags.size(); ++i) {
45 x |= (obj.flags[i] << i);
57 for (
size_t i = 0; i < num_flags; ++i) {
58 const auto flag_is2k3 = flags_is2k3[i];
59 if (!db_is2k3 && flag_is2k3) {
62 byte |= (obj.flags[i] << bitidx);
81 for (
size_t i = 0; i < num_flags; ++i) {
82 const auto flag_is2k3 = flags_is2k3[i];
83 if (!db_is2k3 && flag_is2k3) {
88 auto num_bytes = (num_bits + 7) / 8;
96 for (
size_t i = 0; i < num_flags; ++i) {
97 const auto flag_is2k3 = flags_is2k3[i];
98 if (!db_is2k3 && flag_is2k3) {
101 const auto* flag_name = flag_names[i];
102 stream.
WriteNode<
bool>(flag_name, obj.flags[i]);
119 stream.
Error(
"Unrecognized field '%s'", name);
141 #pragma warning (disable : 4661)
static void WriteLcf(const S &obj, LcfWriter &stream)
static void ReadLcf(S &obj, LcfReader &stream, uint32_t length)
static void BeginXml(S &obj, XmlReader &stream)
static void WriteXml(const S &obj, XmlWriter &stream)
static int idx(const char *tag)
static int LcfSize(const S &obj, LcfWriter &stream)
void EndElement(XmlReader &, const char *)
void CharacterData(XmlReader &, const std::string &data)
void StartElement(XmlReader &stream, const char *name, const char **)
void Read(void *ptr, size_t size, size_t nmemb)
void Write(const void *ptr, size_t size, size_t nmemb)
void SetHandler(XmlHandler *handler)
void Error(const char *fmt,...)
void BeginElement(const std::string &name)
void EndElement(const std::string &name)
void WriteNode(const std::string &name, const T &val)