Chromium Code Reviews| Index: src/sksl/SkSLUtil.h |
| diff --git a/src/sksl/SkSLUtil.h b/src/sksl/SkSLUtil.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..65fde33fa88af05dc9f51b675d7820772bd08dd3 |
| --- /dev/null |
| +++ b/src/sksl/SkSLUtil.h |
| @@ -0,0 +1,59 @@ |
| +/* |
| + * Copyright 2016 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#ifndef SKSL_UTIL |
| +#define SKSL_UTIL |
| + |
| +#include <string> |
| +#include <sstream> |
| +#include "stdlib.h" |
| +#include "SkTypes.h" |
| + |
| +namespace SkSL { |
| + |
| +// our own definitions of certain std:: functions, because they are not always present on Android |
| + |
| +template <typename T> std::string to_string(T value) { |
| +#ifdef SK_BUILD_FOR_ANDROID |
| + std::stringstream buffer; |
| + buffer << value; |
| + return buffer.str(); |
| +#else |
| + return std::to_string(value); |
| +#endif |
| +} |
| + |
| +#if _MSC_VER |
| +#define NORETURN __declspec(noreturn) |
| +#else |
| +#define NORETURN __attribute__((__noreturn__)) |
| +#endif |
| +int stoi(std::string s); |
| + |
| +double stod(std::string s); |
| + |
| +long stol(std::string s); |
| + |
| +NORETURN void sksl_abort(); |
| + |
| +} // namespace |
| + |
| +#ifdef DEBUG |
| +#define ASSERT(x) assert(x) |
| +#define ASSERT_RESULT(x) { bool result = x; ASSERT(x); } |
|
dogben
2016/06/20 18:26:26
How is this different from ASSERT? Why does it eva
ethannicholas
2016/06/20 20:17:10
Because I'm a moron, that's why.
dogben
2016/06/21 17:53:45
For non-DEBUG, I see how these are different. I'm
|
| +#else |
| +#define ASSERT(x) |
| +#define ASSERT_RESULT(x) x |
| +#endif |
| + |
| +#ifdef SKIA |
| +#define ABORT(...) { SkDebugf(__VA_ARGS__); sksl_abort(); } |
| +#else |
| +#define ABORT(...) { sksl_abort(); } |
| +#endif |
| + |
| +#endif |