// file : odb/gcc.hxx // copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC // license : GNU GPL v3; see accompanying LICENSE file #ifndef ODB_GCC_HXX #define ODB_GCC_HXX #include // GCC header includes to get the plugin and parse tree declarations. // The order is important and doesn't follow any kind of logic. // #include #include #include // Include before GCC poisons some declarations. #include // GCC 4.7 can be built using either C or C++ compiler. From 4.8 it // is always built as C++. // #if BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 6 # define ODB_GCC_PLUGIN_C #elif BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 7 # include # ifndef ENABLE_BUILD_WITH_CXX # define ODB_GCC_PLUGIN_C # endif #endif #ifdef ODB_GCC_PLUGIN_C extern "C" { #endif #include #include #include #include #include #include #include #include #include #if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 5 # include # include #else # include # include #endif #include #include #ifdef ODB_GCC_PLUGIN_C } // extern "C" #endif // Only since GCC 4.7.0. // #ifndef LOCATION_COLUMN #define LOCATION_COLUMN(LOC) (expand_location (LOC).column) #endif #ifndef DECL_SOURCE_COLUMN #define DECL_SOURCE_COLUMN(NODE) LOCATION_COLUMN (DECL_SOURCE_LOCATION (NODE)) #endif // Only since GCC 4.6.0. // #ifndef DECL_CHAIN #define DECL_CHAIN(x) TREE_CHAIN(x) #endif #endif // ODB_GCC_HXX