Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / bench / BenchLogger.h
1 /*
2  * Copyright 2012 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 BenchLogger_DEFINED
9 #define BenchLogger_DEFINED
10
11 #include <stdio.h>
12 #include "include/core/SkString.h"
13 #include "include/core/SkTypes.h"
14
15 class SkFILEWStream;
16
17 /**
18  * Class that allows logging to a file while simultaneously logging to stdout/stderr.
19  */
20 class BenchLogger {
21 public:
22     BenchLogger();
23
24     /**
25      * Not virtual, since this class is not intended to be subclassed.
26      */
27     ~BenchLogger();
28
29     /**
30      * Specify a file to write progress logs to. Unless this is called with a valid file path,
31      * BenchLogger will only write to stdout/stderr.
32      */
33     bool SetLogFile(const char file[]);
34
35     /**
36      * Log an error to stderr, taking a C style string as input.
37      */
38     void logError(const char msg[]) { this->nativeLogError(msg); }
39
40     /**
41      * Log an error to stderr, taking an SkString as input.
42      */
43     void logError(const SkString& str) { this->nativeLogError(str.c_str()); }
44
45     /**
46      * Log the progress of the bench tool to both stdout and the log file specified by SetLogFile,
47      * if any, taking a C style string as input.
48      */
49     void logProgress(const char msg[]) {
50         this->nativeLogProgress(msg);
51         this->fileWrite(msg, strlen(msg));
52     }
53
54     /**
55      * Log the progress of the bench tool to both stdout and the log file specified by SetLogFile,
56      * if any, taking an SkString as input.
57      */
58     void logProgress(const SkString& str) {
59         this->nativeLogProgress(str.c_str());
60         this->fileWrite(str.c_str(), str.size());
61     }
62
63 private:
64 #ifdef SK_BUILD_FOR_ANDROID
65     void nativeLogError(const char msg[]) { SkDebugf("%s", msg); }
66 #else
67     void nativeLogError(const char msg[]) { fprintf(stderr, "%s", msg); }
68 #endif
69     void nativeLogProgress(const char msg[]) { SkDebugf("%s", msg); }
70
71     void fileWrite(const char msg[], size_t size);
72
73     SkFILEWStream* fFileStream;
74 };
75
76 #endif // BenchLogger_DEFINED