#ifndef RecordTestUtils_DEFINED #define RecordTestUtils_DEFINED #include "SkRecord.h" #include "SkRecords.h" // If the command we're reading is a U, set ptr to it, otherwise set it to NULL. template struct ReadAs { ReadAs() : ptr(NULL), type(SkRecords::Type(~0)) {} const U* ptr; SkRecords::Type type; void operator()(const U& r) { ptr = &r; type = U::kType; } template void operator()(const T&) { type = U::kType; } }; // Assert that the ith command in record is of type T, and return it. template static const T* assert_type(skiatest::Reporter* r, const SkRecord& record, unsigned index) { ReadAs reader; record.visit(index, reader); REPORTER_ASSERT(r, T::kType == reader.type); REPORTER_ASSERT(r, SkToBool(reader.ptr)); return reader.ptr; } #endif//RecordTestUtils_DEFINED