From 0a5c73dc482e7a71767db39a1bdbb650ab962775 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Mon, 5 Sep 2016 21:07:21 +0300 Subject: [PATCH] Added explicit GNU versions to the language options of the parser. Signed-off-by: Dimitar Dobrev --- src/CppParser/Bindings/CLI/CppParser.h | 10 ++++++++-- .../i686-apple-darwin12.4.0/CppSharp.CppParser.cs | 10 ++++++++-- .../i686-pc-win32-msvc/CppSharp.CppParser.cs | 10 ++++++++-- .../CppSharp.CppParser.cs | 10 ++++++++-- .../CppSharp.CppParser.cs | 10 ++++++++-- .../CSharp/x86_64-linux-gnu-cxx11abi/Std.cs | 8 ++++++++ .../CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs | 10 ++++++++-- .../x86_64-pc-win32-msvc/CppSharp.CppParser.cs | 10 ++++++++-- src/CppParser/CppParser.cpp | 2 +- src/CppParser/CppParser.h | 14 +++++++++++++- src/CppParser/Parser.cpp | 13 +++++++++++-- 11 files changed, 89 insertions(+), 18 deletions(-) diff --git a/src/CppParser/Bindings/CLI/CppParser.h b/src/CppParser/Bindings/CLI/CppParser.h index 0d1fd612..136b02d7 100644 --- a/src/CppParser/Bindings/CLI/CppParser.h +++ b/src/CppParser/Bindings/CLI/CppParser.h @@ -34,10 +34,16 @@ namespace CppSharp { /// The C programming language. C = 0, + /// The C programming language (GNU version). + GNUC = 1, /// The C++ programming language year 1998; supports deprecated constructs. - CPlusPlus98 = 1, + CPlusPlus98 = 2, + /// The C++ programming language year 1998; supports deprecated constructs (GNU version). + GNUPlusPlus98 = 3, /// The C++ programming language year 2011. - CPlusPlus11 = 2 + CPlusPlus11 = 4, + /// The C++ programming language year 2011 (GNU version). + GNUPlusPlus11 = 5 }; public enum struct ParserDiagnosticLevel diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs index c01aba1b..4c07b2fd 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs @@ -16814,10 +16814,16 @@ namespace CppSharp { /// The C programming language. C = 0, + /// The C programming language (GNU version). + GNUC = 1, /// The C++ programming language year 1998; supports deprecated constructs. - CPlusPlus98 = 1, + CPlusPlus98 = 2, + /// The C++ programming language year 1998; supports deprecated constructs (GNU version). + GNUPlusPlus98 = 3, /// The C++ programming language year 2011. - CPlusPlus11 = 2 + CPlusPlus11 = 4, + /// The C++ programming language year 2011 (GNU version). + GNUPlusPlus11 = 5 } public enum ParserDiagnosticLevel diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs index 3457b699..47c4d2b8 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs @@ -16814,10 +16814,16 @@ namespace CppSharp { /// The C programming language. C = 0, + /// The C programming language (GNU version). + GNUC = 1, /// The C++ programming language year 1998; supports deprecated constructs. - CPlusPlus98 = 1, + CPlusPlus98 = 2, + /// The C++ programming language year 1998; supports deprecated constructs (GNU version). + GNUPlusPlus98 = 3, /// The C++ programming language year 2011. - CPlusPlus11 = 2 + CPlusPlus11 = 4, + /// The C++ programming language year 2011 (GNU version). + GNUPlusPlus11 = 5 } public enum ParserDiagnosticLevel diff --git a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs index 8e513c0f..51e97437 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs @@ -16813,10 +16813,16 @@ namespace CppSharp { /// The C programming language. C = 0, + /// The C programming language (GNU version). + GNUC = 1, /// The C++ programming language year 1998; supports deprecated constructs. - CPlusPlus98 = 1, + CPlusPlus98 = 2, + /// The C++ programming language year 1998; supports deprecated constructs (GNU version). + GNUPlusPlus98 = 3, /// The C++ programming language year 2011. - CPlusPlus11 = 2 + CPlusPlus11 = 4, + /// The C++ programming language year 2011 (GNU version). + GNUPlusPlus11 = 5 } public enum ParserDiagnosticLevel diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs index f2fbe222..68f63402 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs @@ -16813,10 +16813,16 @@ namespace CppSharp { /// The C programming language. C = 0, + /// The C programming language (GNU version). + GNUC = 1, /// The C++ programming language year 1998; supports deprecated constructs. - CPlusPlus98 = 1, + CPlusPlus98 = 2, + /// The C++ programming language year 1998; supports deprecated constructs (GNU version). + GNUPlusPlus98 = 3, /// The C++ programming language year 2011. - CPlusPlus11 = 2 + CPlusPlus11 = 4, + /// The C++ programming language year 2011 (GNU version). + GNUPlusPlus11 = 5 } public enum ParserDiagnosticLevel diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs index a2a5d146..bf615f41 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs @@ -1096,6 +1096,10 @@ namespace std namespace __cxx11 { } + + namespace __cxx11 + { + } } public unsafe partial class __mbstate_t @@ -3478,6 +3482,10 @@ namespace std namespace __cxx11 { } + + namespace __cxx11 + { + } } namespace std diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs index ee400b7c..e6b900a3 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs @@ -16813,10 +16813,16 @@ namespace CppSharp { /// The C programming language. C = 0, + /// The C programming language (GNU version). + GNUC = 1, /// The C++ programming language year 1998; supports deprecated constructs. - CPlusPlus98 = 1, + CPlusPlus98 = 2, + /// The C++ programming language year 1998; supports deprecated constructs (GNU version). + GNUPlusPlus98 = 3, /// The C++ programming language year 2011. - CPlusPlus11 = 2 + CPlusPlus11 = 4, + /// The C++ programming language year 2011 (GNU version). + GNUPlusPlus11 = 5 } public enum ParserDiagnosticLevel diff --git a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs index 4d8ea8eb..859813ef 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs @@ -16814,10 +16814,16 @@ namespace CppSharp { /// The C programming language. C = 0, + /// The C programming language (GNU version). + GNUC = 1, /// The C++ programming language year 1998; supports deprecated constructs. - CPlusPlus98 = 1, + CPlusPlus98 = 2, + /// The C++ programming language year 1998; supports deprecated constructs (GNU version). + GNUPlusPlus98 = 3, /// The C++ programming language year 2011. - CPlusPlus11 = 2 + CPlusPlus11 = 4, + /// The C++ programming language year 2011 (GNU version). + GNUPlusPlus11 = 5 } public enum ParserDiagnosticLevel diff --git a/src/CppParser/CppParser.cpp b/src/CppParser/CppParser.cpp index 4bc15fbe..aca8dfa0 100644 --- a/src/CppParser/CppParser.cpp +++ b/src/CppParser/CppParser.cpp @@ -18,7 +18,7 @@ CppParserOptions::CppParserOptions() , NoBuiltinIncludes(false) , MicrosoftMode(false) , Verbose(false) - , LanguageVersion(CppParser::LanguageVersion::CPlusPlus11) + , LanguageVersion(CppParser::LanguageVersion::GNUPlusPlus11) , TargetInfo(0) { } diff --git a/src/CppParser/CppParser.h b/src/CppParser/CppParser.h index ed9552de..3644262e 100644 --- a/src/CppParser/CppParser.h +++ b/src/CppParser/CppParser.h @@ -22,13 +22,25 @@ enum class LanguageVersion */ C, /** + * The C programming language (GNU version). + */ + GNUC, + /** * The C++ programming language year 1998; supports deprecated constructs. */ CPlusPlus98, /** + * The C++ programming language year 1998; supports deprecated constructs (GNU version). + */ + GNUPlusPlus98, + /** * The C++ programming language year 2011. */ - CPlusPlus11 + CPlusPlus11, + /** + * The C++ programming language year 2011 (GNU version). + */ + GNUPlusPlus11 }; struct CS_API CppParserOptions diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp index ff2547cb..7fcaa848 100644 --- a/src/CppParser/Parser.cpp +++ b/src/CppParser/Parser.cpp @@ -250,10 +250,10 @@ void Parser::SetupHeader() switch (Opts->LanguageVersion) { case CppParser::LanguageVersion::C: + case CppParser::LanguageVersion::GNUC: args.push_back("-xc"); break; - case CppParser::LanguageVersion::CPlusPlus98: - case CppParser::LanguageVersion::CPlusPlus11: + default: args.push_back("-xc++"); break; } @@ -261,11 +261,20 @@ void Parser::SetupHeader() switch (Opts->LanguageVersion) { case CppParser::LanguageVersion::C: + args.push_back("-std=c99"); + break; + case CppParser::LanguageVersion::GNUC: args.push_back("-std=gnu99"); break; case CppParser::LanguageVersion::CPlusPlus98: + args.push_back("-std=c++98"); + break; + case CppParser::LanguageVersion::GNUPlusPlus98: args.push_back("-std=gnu++98"); break; + case CppParser::LanguageVersion::CPlusPlus11: + args.push_back(Opts->MicrosoftMode ? "-std=c++14" : "-std=c++11"); + break; default: args.push_back(Opts->MicrosoftMode ? "-std=gnu++14" : "-std=gnu++11"); break;