return;
m_value = bitmask->value;
- for (const Trace::BitmaskVal *it = bitmask->sig->values;
- it != bitmask->sig->values + bitmask->sig->count; ++it) {
+ for (const Trace::BitmaskFlag *it = bitmask->sig->flags;
+ it != bitmask->sig->flags + bitmask->sig->num_flags; ++it) {
assert(it->value);
QPair<QString, unsigned long long> pair;
ApiBitmask::Signature::const_iterator itr;
Trace::BitmaskSig *sig = new Trace::BitmaskSig();
- Trace::BitmaskVal *values = new Trace::BitmaskVal[bsig.count()];
+ Trace::BitmaskFlag *flags = new Trace::BitmaskFlag[bsig.count()];
sig->id = id;
- sig->count = bsig.count();
- sig->values = values;
+ sig->num_flags = bsig.count();
+ sig->flags = flags;
int i = 0;
for (itr = bsig.constBegin(); itr != bsig.constEnd(); ++itr, ++i) {
- values[i].name = qstrdup(itr->first.toLocal8Bit());
- values[i].value = itr->second;
+ flags[i].name = qstrdup(itr->first.toLocal8Bit());
+ flags[i].value = itr->second;
}
return sig;
static void
deleteBitmaskSig(Trace::BitmaskSig *sig)
{
- for (int i = 0; i < sig->count; ++i) {
- delete [] sig->values[i].name;
+ for (int i = 0; i < sig->num_flags; ++i) {
+ delete [] sig->flags[i].name;
}
- delete [] sig->values;
+ delete [] sig->flags;
delete sig;
}
print
def visit_bitmask(self, bitmask):
- print 'static const Trace::BitmaskVal __bitmask%s_vals[] = {' % (bitmask.id)
+ print 'static const Trace::BitmaskFlag __bitmask%s_flags[] = {' % (bitmask.id)
for value in bitmask.values:
print ' {"%s", %s},' % (value, value)
print '};'
print
print 'static const Trace::BitmaskSig __bitmask%s_sig = {' % (bitmask.id)
- print ' %u, %u, __bitmask%s_vals' % (int(bitmask.id), len(bitmask.values), bitmask.id)
+ print ' %u, %u, __bitmask%s_flags' % (int(bitmask.id), len(bitmask.values), bitmask.id)
print '};'
print
unsigned long long value = bitmask->value;
const BitmaskSig *sig = bitmask->sig;
bool first = true;
- for (const BitmaskVal *it = sig->values; value != 0 && it != sig->values + sig->count; ++it) {
+ for (const BitmaskFlag *it = sig->flags; value != 0 && it != sig->flags + sig->num_flags; ++it) {
if ((it->value && (value & it->value) == it->value) ||
(!it->value && value == 0)) {
if (!first) {
size_t id = read_uint();
BitmaskSig *sig = lookup(bitmasks, id);
if (!sig) {
- size_t count = read_uint();
- BitmaskVal *values = new BitmaskVal[count];
- for (BitmaskVal *it = values; it != values + count; ++it) {
+ 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 != values) {
+ if (it->value == 0 && it != flags) {
std::cerr << "warning: bitmask " << it->name << " is zero but is not first flag\n";
}
}
- sig = new BitmaskSig;
- sig->id = id;
- sig->count = count;
- sig->values = values;
+ sig->flags = flags;
bitmasks[id] = sig;
}
assert(sig);
_writeByte(Trace::TYPE_BITMASK);
_writeUInt(bitmask.id);
if (!lookup(bitmasks, bitmask.id)) {
- _writeUInt(bitmask.count);
- for (unsigned i = 0; i < bitmask.count; ++i) {
- if (i != 0 && bitmask.values[i].value == 0) {
- OS::DebugMessage("apitrace: bitmask %s is zero but is not first flag\n", bitmask.values[i].name);
+ _writeUInt(bitmask.num_flags);
+ for (unsigned i = 0; i < bitmask.num_flags; ++i) {
+ if (i != 0 && bitmask.flags[i].value == 0) {
+ OS::DebugMessage("apitrace: bitmask %s is zero but is not first flag\n", bitmask.flags[i].name);
}
- _writeString(bitmask.values[i].name);
- _writeUInt(bitmask.values[i].value);
+ _writeString(bitmask.flags[i].name);
+ _writeUInt(bitmask.flags[i].value);
}
bitmasks[bitmask.id] = true;
}
signed long long value;
};
- struct BitmaskVal {
+ struct BitmaskFlag {
const char *name;
unsigned long long value;
};
struct BitmaskSig {
Id id;
- unsigned count;
- const BitmaskVal *values;
+ unsigned num_flags;
+ const BitmaskFlag *flags;
};
class Writer {