1/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkEventTracingPriv_DEFINED
9#define SkEventTracingPriv_DEFINED
10
11#include "SkMutex.h"
12
13/**
14 * Construct and install an SkEventTracer, based on the mode,
15 * defaulting to the --trace command line argument.
16 */
17void initializeEventTracingForTools(const char* mode = nullptr);
18
19/**
20 * Helper class used by internal implementations of SkEventTracer to manage categories.
21 */
22class SkEventTracingCategories {
23public:
24    SkEventTracingCategories() : fNumCategories(0) {}
25
26    uint8_t* getCategoryGroupEnabled(const char* name);
27    const char* getCategoryGroupName(const uint8_t* categoryEnabledFlag);
28
29private:
30    enum { kMaxCategories = 256 };
31
32    struct CategoryState {
33        uint8_t fEnabled;
34        const char* fName;
35    };
36
37    CategoryState fCategories[kMaxCategories];
38    int fNumCategories;
39    SkMutex fMutex;
40};
41
42#endif
43