]> git.notmuchmail.org Git - apitrace/blobdiff - common/trace_writer.cpp
Trace enum signatures as a whole.
[apitrace] / common / trace_writer.cpp
index 897c7b159f346423b46a79876981ebf465b7c97c..1679989d6b11f3eed7da17ca61a6af5c3ceaea40 100644 (file)
@@ -258,14 +258,18 @@ void Writer::writeBlob(const void *data, size_t size) {
     }
 }
 
-void Writer::writeEnum(const EnumSig *sig) {
+void Writer::writeEnum(const EnumSig *sig, signed long long value) {
     _writeByte(trace::TYPE_ENUM);
     _writeUInt(sig->id);
     if (!lookup(enums, sig->id)) {
-        _writeString(sig->name);
-        Writer::writeSInt(sig->value);
+        _writeUInt(sig->num_values);
+        for (unsigned i = 0; i < sig->num_values; ++i) {
+            _writeString(sig->values[i].name);
+            writeSInt(sig->values[i].value);
+        }
         enums[sig->id] = true;
     }
+    writeSInt(value);
 }
 
 void Writer::writeBitmask(const BitmaskSig *sig, unsigned long long value) {