Index: tests/RecordTestUtils.h |
diff --git a/tests/RecordTestUtils.h b/tests/RecordTestUtils.h |
index 0575b83cdd57ee687aa585eec74763a2be158c68..4bab8e4a390b980c707824015399db551789b5e8 100644 |
--- a/tests/RecordTestUtils.h |
+++ b/tests/RecordTestUtils.h |
@@ -28,4 +28,28 @@ static const T* assert_type(skiatest::Reporter* r, const SkRecord& record, unsig |
return reader.ptr; |
} |
+template <typename DrawT> struct MatchType { |
+ template <typename T> int operator()(const T&) { return 0; } |
+ int operator()(const DrawT&) { return 1; } |
+}; |
+ |
+template <typename DrawT> int count_instances_of_type(const SkRecord& record) { |
+ MatchType<DrawT> matcher; |
+ int counter = 0; |
+ for (unsigned i = 0; i < record.count(); i++) { |
+ counter += record.visit<int>(i, matcher); |
+ } |
+ return counter; |
+} |
+ |
+template <typename DrawT> int find_first_instances_of_type(const SkRecord& record) { |
+ MatchType<DrawT> matcher; |
+ for (unsigned i = 0; i < record.count(); i++) { |
+ if (record.visit<int>(i, matcher)) { |
+ return i; |
+ } |
+ } |
+ return -1; |
+} |
+ |
#endif//RecordTestUtils_DEFINED |