+ if (symbolic) {
+ unsigned long long value = node->value;
+ const BitmaskSig *sig = node->sig;
+ writer.beginList();
+ for (const BitmaskFlag *it = sig->flags; it != sig->flags + sig->num_flags; ++it) {
+ if ((it->value && (value & it->value) == it->value) ||
+ (!it->value && value == 0)) {
+ writer.writeString(it->name);
+ value &= ~it->value;
+ }
+ if (value == 0) {
+ break;
+ }
+ }
+ if (value) {
+ writer.writeInt(value);
+ }
+ writer.endList();
+ } else {
+ writer.writeInt(node->value);
+ }