diff options
Diffstat (limited to 'antlr4-cpp-runtime-4.9.2-source/install/include/antlr4-runtime/antlr4-common.h')
| -rw-r--r-- | antlr4-cpp-runtime-4.9.2-source/install/include/antlr4-runtime/antlr4-common.h | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/antlr4-cpp-runtime-4.9.2-source/install/include/antlr4-runtime/antlr4-common.h b/antlr4-cpp-runtime-4.9.2-source/install/include/antlr4-runtime/antlr4-common.h new file mode 100644 index 0000000..4731297 --- /dev/null +++ b/antlr4-cpp-runtime-4.9.2-source/install/include/antlr4-runtime/antlr4-common.h @@ -0,0 +1,140 @@ +/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. + * Use of this file is governed by the BSD 3-clause license that + * can be found in the LICENSE.txt file in the project root. + */ + +#pragma once + +#include <algorithm> +#include <assert.h> +#include <atomic> +#include <chrono> +#include <fstream> +#include <iostream> +#include <iterator> +#include <limits> +#include <limits.h> +#include <list> +#include <map> +#include <memory> +#include <set> +#include <stdarg.h> +#include <stdint.h> +#include <stdlib.h> +#include <sstream> +#include <stack> +#include <string> +#include <typeinfo> +#include <type_traits> +#include <unordered_map> +#include <unordered_set> +#include <utility> +#include <vector> +#include <mutex> +#include <exception> +#include <bitset> +#include <condition_variable> +#include <functional> + +#ifndef USE_UTF8_INSTEAD_OF_CODECVT + #include <codecvt> +#endif + +// Defines for the Guid class and other platform dependent stuff. +#ifdef _WIN32 + #ifdef _MSC_VER + #pragma warning (disable: 4250) // Class inherits by dominance. + #pragma warning (disable: 4512) // assignment operator could not be generated + + #if _MSC_VER < 1900 + // Before VS 2015 code like "while (true)" will create a (useless) warning in level 4. + #pragma warning (disable: 4127) // conditional expression is constant + #endif + #endif + + #define GUID_WINDOWS + + #ifdef _WIN64 + typedef __int64 ssize_t; + #else + typedef __int32 ssize_t; + #endif + + #if _MSC_VER >= 1900 && _MSC_VER < 2000 + // VS 2015 has a known bug when using std::codecvt_utf8<char32_t> + // so we have to temporarily use __int32 instead. + // https://connect.microsoft.com/VisualStudio/feedback/details/1403302/unresolved-external-when-using-codecvt-utf8 + typedef std::basic_string<__int32> i32string; + + typedef i32string UTF32String; + #else + typedef std::u32string UTF32String; + #endif + + #ifdef ANTLR4CPP_EXPORTS + #define ANTLR4CPP_PUBLIC __declspec(dllexport) + #else + #ifdef ANTLR4CPP_STATIC + #define ANTLR4CPP_PUBLIC + #else + #define ANTLR4CPP_PUBLIC __declspec(dllimport) + #endif + #endif + + #if defined(_MSC_VER) && !defined(__clang__) + // clang-cl should escape this to prevent [ignored-attributes]. + namespace std { + class ANTLR4CPP_PUBLIC exception; // Prevents warning C4275 from MSVC. + } // namespace std + #endif + +#elif defined(__APPLE__) + typedef std::u32string UTF32String; + + #define GUID_CFUUID + #if __GNUC__ >= 4 + #define ANTLR4CPP_PUBLIC __attribute__ ((visibility ("default"))) + #else + #define ANTLR4CPP_PUBLIC + #endif +#else + typedef std::u32string UTF32String; + + #define GUID_LIBUUID + #if __GNUC__ >= 6 + #define ANTLR4CPP_PUBLIC __attribute__ ((visibility ("default"))) + #else + #define ANTLR4CPP_PUBLIC + #endif +#endif + +#include "support/guid.h" +#include "support/Declarations.h" + +#if !defined(HAS_NOEXCEPT) + #if defined(__clang__) + #if __has_feature(cxx_noexcept) + #define HAS_NOEXCEPT + #endif + #else + #if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46 || \ + defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026 + #define HAS_NOEXCEPT + #endif + #endif + + #ifdef HAS_NOEXCEPT + #define NOEXCEPT noexcept + #else + #define NOEXCEPT + #endif +#endif + +// We have to undefine this symbol as ANTLR will use this name for own members and even +// generated functions. Because EOF is a global macro we cannot use e.g. a namespace scope to disambiguate. +#ifdef EOF +#undef EOF +#endif + +#define INVALID_INDEX std::numeric_limits<size_t>::max() +template<class T> using Ref = std::shared_ptr<T>; |
