12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef BenchLogger_DEFINED
- #define BenchLogger_DEFINED
- #include <stdio.h>
- #include "include/core/SkString.h"
- #include "include/core/SkTypes.h"
- class SkFILEWStream;
- /**
- * Class that allows logging to a file while simultaneously logging to stdout/stderr.
- */
- class BenchLogger {
- public:
- BenchLogger();
- /**
- * Not virtual, since this class is not intended to be subclassed.
- */
- ~BenchLogger();
- /**
- * Specify a file to write progress logs to. Unless this is called with a valid file path,
- * BenchLogger will only write to stdout/stderr.
- */
- bool SetLogFile(const char file[]);
- /**
- * Log an error to stderr, taking a C style string as input.
- */
- void logError(const char msg[]) { this->nativeLogError(msg); }
- /**
- * Log an error to stderr, taking an SkString as input.
- */
- void logError(const SkString& str) { this->nativeLogError(str.c_str()); }
- /**
- * Log the progress of the bench tool to both stdout and the log file specified by SetLogFile,
- * if any, taking a C style string as input.
- */
- void logProgress(const char msg[]) {
- this->nativeLogProgress(msg);
- this->fileWrite(msg, strlen(msg));
- }
- /**
- * Log the progress of the bench tool to both stdout and the log file specified by SetLogFile,
- * if any, taking an SkString as input.
- */
- void logProgress(const SkString& str) {
- this->nativeLogProgress(str.c_str());
- this->fileWrite(str.c_str(), str.size());
- }
- private:
- #ifdef SK_BUILD_FOR_ANDROID
- void nativeLogError(const char msg[]) { SkDebugf("%s", msg); }
- #else
- void nativeLogError(const char msg[]) { fprintf(stderr, "%s", msg); }
- #endif
- void nativeLogProgress(const char msg[]) { SkDebugf("%s", msg); }
- void fileWrite(const char msg[], size_t size);
- SkFILEWStream* fFileStream;
- };
- #endif // BenchLogger_DEFINED
|