Austin Schuh | 36244a1 | 2019-09-21 17:52:38 -0700 | [diff] [blame] | 1 | // |
| 2 | // Copyright 2019 The Abseil Authors. |
| 3 | // |
| 4 | // Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | // you may not use this file except in compliance with the License. |
| 6 | // You may obtain a copy of the License at |
| 7 | // |
| 8 | // https://www.apache.org/licenses/LICENSE-2.0 |
| 9 | // |
| 10 | // Unless required by applicable law or agreed to in writing, software |
| 11 | // distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | // See the License for the specific language governing permissions and |
| 14 | // limitations under the License. |
| 15 | |
| 16 | #ifndef ABSL_FLAGS_CONFIG_H_ |
| 17 | #define ABSL_FLAGS_CONFIG_H_ |
| 18 | |
| 19 | // Determine if we should strip string literals from the Flag objects. |
| 20 | // By default we strip string literals on mobile platforms. |
| 21 | #if !defined(ABSL_FLAGS_STRIP_NAMES) |
| 22 | |
| 23 | #if defined(__ANDROID__) |
| 24 | #define ABSL_FLAGS_STRIP_NAMES 1 |
| 25 | |
| 26 | #elif defined(__APPLE__) |
| 27 | #include <TargetConditionals.h> |
| 28 | #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE |
| 29 | #define ABSL_FLAGS_STRIP_NAMES 1 |
| 30 | #elif defined(TARGET_OS_EMBEDDED) && TARGET_OS_EMBEDDED |
| 31 | #define ABSL_FLAGS_STRIP_NAMES 1 |
| 32 | #endif // TARGET_OS_* |
| 33 | #endif |
| 34 | |
| 35 | #endif // !defined(ABSL_FLAGS_STRIP_NAMES) |
| 36 | |
| 37 | #if !defined(ABSL_FLAGS_STRIP_NAMES) |
| 38 | // If ABSL_FLAGS_STRIP_NAMES wasn't set on the command line or above, |
| 39 | // the default is not to strip. |
| 40 | #define ABSL_FLAGS_STRIP_NAMES 0 |
| 41 | #endif |
| 42 | |
| 43 | #if !defined(ABSL_FLAGS_STRIP_HELP) |
| 44 | // By default, if we strip names, we also strip help. |
| 45 | #define ABSL_FLAGS_STRIP_HELP ABSL_FLAGS_STRIP_NAMES |
| 46 | #endif |
| 47 | |
Austin Schuh | b4691e9 | 2020-12-31 12:37:18 -0800 | [diff] [blame] | 48 | // ABSL_FLAGS_INTERNAL_HAS_RTTI macro is used for selecting if we can use RTTI |
| 49 | // for flag type identification. |
| 50 | #ifdef ABSL_FLAGS_INTERNAL_HAS_RTTI |
| 51 | #error ABSL_FLAGS_INTERNAL_HAS_RTTI cannot be directly set |
| 52 | #elif !defined(__GNUC__) || defined(__GXX_RTTI) |
| 53 | #define ABSL_FLAGS_INTERNAL_HAS_RTTI 1 |
| 54 | #endif // !defined(__GNUC__) || defined(__GXX_RTTI) |
| 55 | |
| 56 | // These macros represent the "source of truth" for the list of supported |
| 57 | // built-in types. |
| 58 | #define ABSL_FLAGS_INTERNAL_BUILTIN_TYPES(A) \ |
| 59 | A(bool, bool) \ |
| 60 | A(short, short) \ |
| 61 | A(unsigned short, unsigned_short) \ |
| 62 | A(int, int) \ |
| 63 | A(unsigned int, unsigned_int) \ |
| 64 | A(long, long) \ |
| 65 | A(unsigned long, unsigned_long) \ |
| 66 | A(long long, long_long) \ |
| 67 | A(unsigned long long, unsigned_long_long) \ |
| 68 | A(double, double) \ |
| 69 | A(float, float) |
| 70 | |
| 71 | #define ABSL_FLAGS_INTERNAL_SUPPORTED_TYPES(A) \ |
| 72 | ABSL_FLAGS_INTERNAL_BUILTIN_TYPES(A) \ |
| 73 | A(std::string, std_string) \ |
| 74 | A(std::vector<std::string>, std_vector_of_string) |
| 75 | |
Austin Schuh | 36244a1 | 2019-09-21 17:52:38 -0700 | [diff] [blame] | 76 | #endif // ABSL_FLAGS_CONFIG_H_ |