- size_t size = read_uint();
- sig = new Bitmask::Signature(size);
- for (Bitmask::Signature::iterator it = sig->begin(); it != sig->end(); ++it) {
- it->first = read_string();
- it->second = read_uint();
- if (it->second == 0 && it != sig->begin()) {
- std::cerr << "warning: bitmask " << it->first << " is zero but is not first flag\n";
+ sig = new BitmaskSig;
+ sig->id = id;
+ sig->num_flags = read_uint();
+ BitmaskFlag *flags = new BitmaskFlag[sig->num_flags];
+ for (BitmaskFlag *it = flags; it != flags + sig->num_flags; ++it) {
+ it->name = read_string();
+ it->value = read_uint();
+ if (it->value == 0 && it != flags) {
+ std::cerr << "warning: bitmask " << it->name << " is zero but is not first flag\n";