Browse Source

Made the C/C++ language switches adjustable in managed code. (#895)

pull/897/head
Mohit Mohta 8 years ago committed by Dimitar Dobrev
parent
commit
3e8b15c42c
  1. 10
      src/CppParser/Bindings/CLI/CppParser.cpp
  2. 23
      src/CppParser/Bindings/CLI/CppParser.h
  3. 34
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  4. 34
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  5. 34
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  6. 34
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  7. 34
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  8. 34
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  9. 1
      src/CppParser/CppParser.cpp
  10. 29
      src/CppParser/CppParser.h
  11. 33
      src/CppParser/Parser.cpp
  12. 62
      src/Parser/ParserOptions.cs

10
src/CppParser/Bindings/CLI/CppParser.cpp

@ -439,16 +439,6 @@ void CppSharp::Parser::CppParserOptions::Verbose::set(bool value) @@ -439,16 +439,6 @@ void CppSharp::Parser::CppParserOptions::Verbose::set(bool value)
((::CppSharp::CppParser::CppParserOptions*)NativePtr)->verbose = value;
}
CppSharp::Parser::LanguageVersion CppSharp::Parser::CppParserOptions::LanguageVersion::get()
{
return (CppSharp::Parser::LanguageVersion)((::CppSharp::CppParser::CppParserOptions*)NativePtr)->languageVersion;
}
void CppSharp::Parser::CppParserOptions::LanguageVersion::set(CppSharp::Parser::LanguageVersion value)
{
((::CppSharp::CppParser::CppParserOptions*)NativePtr)->languageVersion = (::CppSharp::CppParser::LanguageVersion)value;
}
CppSharp::Parser::ParserTargetInfo^ CppSharp::Parser::CppParserOptions::TargetInfo::get()
{
return (((::CppSharp::CppParser::CppParserOptions*)NativePtr)->targetInfo == nullptr) ? nullptr : gcnew CppSharp::Parser::ParserTargetInfo((::CppSharp::CppParser::ParserTargetInfo*)((::CppSharp::CppParser::CppParserOptions*)NativePtr)->targetInfo);

23
src/CppParser/Bindings/CLI/CppParser.h

@ -13,7 +13,6 @@ namespace CppSharp @@ -13,7 +13,6 @@ namespace CppSharp
{
namespace Parser
{
enum struct LanguageVersion;
enum struct ParserDiagnosticLevel;
enum struct ParserResultKind;
enum struct SourceLocationKind;
@ -36,22 +35,6 @@ namespace CppSharp @@ -36,22 +35,6 @@ namespace CppSharp
{
namespace Parser
{
public enum struct LanguageVersion
{
/// <summary>The C programming language.</summary>
C = 0,
/// <summary>The C programming language (GNU version).</summary>
GNUC = 1,
/// <summary>The C++ programming language year 1998; supports deprecated constructs.</summary>
CPlusPlus98 = 2,
/// <summary>The C++ programming language year 1998; supports deprecated constructs (GNU version).</summary>
GNUPlusPlus98 = 3,
/// <summary>The C++ programming language year 2011.</summary>
CPlusPlus11 = 4,
/// <summary>The C++ programming language year 2011 (GNU version).</summary>
GNUPlusPlus11 = 5
};
public enum struct ParserDiagnosticLevel
{
Ignored = 0,
@ -198,12 +181,6 @@ namespace CppSharp @@ -198,12 +181,6 @@ namespace CppSharp
void set(bool);
}
property CppSharp::Parser::LanguageVersion LanguageVersion
{
CppSharp::Parser::LanguageVersion get();
void set(CppSharp::Parser::LanguageVersion);
}
property CppSharp::Parser::ParserTargetInfo^ TargetInfo
{
CppSharp::Parser::ParserTargetInfo^ get();

34
src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs

@ -17749,22 +17749,6 @@ namespace CppSharp @@ -17749,22 +17749,6 @@ namespace CppSharp
{
namespace Parser
{
public enum LanguageVersion
{
/// <summary>The C programming language.</summary>
C = 0,
/// <summary>The C programming language (GNU version).</summary>
GNUC = 1,
/// <summary>The C++ programming language year 1998; supports deprecated constructs.</summary>
CPlusPlus98 = 2,
/// <summary>The C++ programming language year 1998; supports deprecated constructs (GNU version).</summary>
GNUPlusPlus98 = 3,
/// <summary>The C++ programming language year 2011.</summary>
CPlusPlus11 = 4,
/// <summary>The C++ programming language year 2011 (GNU version).</summary>
GNUPlusPlus11 = 5
}
public enum ParserDiagnosticLevel
{
Ignored = 0,
@ -17839,7 +17823,7 @@ namespace CppSharp @@ -17839,7 +17823,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 144)]
[StructLayout(LayoutKind.Explicit, Size = 140)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17894,9 +17878,6 @@ namespace CppSharp @@ -17894,9 +17878,6 @@ namespace CppSharp
internal byte verbose;
[FieldOffset(136)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(140)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18393,19 +18374,6 @@ namespace CppSharp @@ -18393,19 +18374,6 @@ namespace CppSharp
}
}
public global::CppSharp.Parser.LanguageVersion LanguageVersion
{
get
{
return ((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion;
}
set
{
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion = value;
}
}
public global::CppSharp.Parser.ParserTargetInfo TargetInfo
{
get

34
src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs

@ -17749,22 +17749,6 @@ namespace CppSharp @@ -17749,22 +17749,6 @@ namespace CppSharp
{
namespace Parser
{
public enum LanguageVersion
{
/// <summary>The C programming language.</summary>
C = 0,
/// <summary>The C programming language (GNU version).</summary>
GNUC = 1,
/// <summary>The C++ programming language year 1998; supports deprecated constructs.</summary>
CPlusPlus98 = 2,
/// <summary>The C++ programming language year 1998; supports deprecated constructs (GNU version).</summary>
GNUPlusPlus98 = 3,
/// <summary>The C++ programming language year 2011.</summary>
CPlusPlus11 = 4,
/// <summary>The C++ programming language year 2011 (GNU version).</summary>
GNUPlusPlus11 = 5
}
public enum ParserDiagnosticLevel
{
Ignored = 0,
@ -17839,7 +17823,7 @@ namespace CppSharp @@ -17839,7 +17823,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 180)]
[StructLayout(LayoutKind.Explicit, Size = 176)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17894,9 +17878,6 @@ namespace CppSharp @@ -17894,9 +17878,6 @@ namespace CppSharp
internal byte verbose;
[FieldOffset(172)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(176)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18393,19 +18374,6 @@ namespace CppSharp @@ -18393,19 +18374,6 @@ namespace CppSharp
}
}
public global::CppSharp.Parser.LanguageVersion LanguageVersion
{
get
{
return ((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion;
}
set
{
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion = value;
}
}
public global::CppSharp.Parser.ParserTargetInfo TargetInfo
{
get

34
src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs

@ -17748,22 +17748,6 @@ namespace CppSharp @@ -17748,22 +17748,6 @@ namespace CppSharp
{
namespace Parser
{
public enum LanguageVersion
{
/// <summary>The C programming language.</summary>
C = 0,
/// <summary>The C programming language (GNU version).</summary>
GNUC = 1,
/// <summary>The C++ programming language year 1998; supports deprecated constructs.</summary>
CPlusPlus98 = 2,
/// <summary>The C++ programming language year 1998; supports deprecated constructs (GNU version).</summary>
GNUPlusPlus98 = 3,
/// <summary>The C++ programming language year 2011.</summary>
CPlusPlus11 = 4,
/// <summary>The C++ programming language year 2011 (GNU version).</summary>
GNUPlusPlus11 = 5
}
public enum ParserDiagnosticLevel
{
Ignored = 0,
@ -17838,7 +17822,7 @@ namespace CppSharp @@ -17838,7 +17822,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 280)]
[StructLayout(LayoutKind.Explicit, Size = 272)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17893,9 +17877,6 @@ namespace CppSharp @@ -17893,9 +17877,6 @@ namespace CppSharp
internal byte verbose;
[FieldOffset(264)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(272)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18392,19 +18373,6 @@ namespace CppSharp @@ -18392,19 +18373,6 @@ namespace CppSharp
}
}
public global::CppSharp.Parser.LanguageVersion LanguageVersion
{
get
{
return ((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion;
}
set
{
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion = value;
}
}
public global::CppSharp.Parser.ParserTargetInfo TargetInfo
{
get

34
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs

@ -17748,22 +17748,6 @@ namespace CppSharp @@ -17748,22 +17748,6 @@ namespace CppSharp
{
namespace Parser
{
public enum LanguageVersion
{
/// <summary>The C programming language.</summary>
C = 0,
/// <summary>The C programming language (GNU version).</summary>
GNUC = 1,
/// <summary>The C++ programming language year 1998; supports deprecated constructs.</summary>
CPlusPlus98 = 2,
/// <summary>The C++ programming language year 1998; supports deprecated constructs (GNU version).</summary>
GNUPlusPlus98 = 3,
/// <summary>The C++ programming language year 2011.</summary>
CPlusPlus11 = 4,
/// <summary>The C++ programming language year 2011 (GNU version).</summary>
GNUPlusPlus11 = 5
}
public enum ParserDiagnosticLevel
{
Ignored = 0,
@ -17838,7 +17822,7 @@ namespace CppSharp @@ -17838,7 +17822,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 304)]
[StructLayout(LayoutKind.Explicit, Size = 296)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17893,9 +17877,6 @@ namespace CppSharp @@ -17893,9 +17877,6 @@ namespace CppSharp
internal byte verbose;
[FieldOffset(288)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(296)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18392,19 +18373,6 @@ namespace CppSharp @@ -18392,19 +18373,6 @@ namespace CppSharp
}
}
public global::CppSharp.Parser.LanguageVersion LanguageVersion
{
get
{
return ((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion;
}
set
{
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion = value;
}
}
public global::CppSharp.Parser.ParserTargetInfo TargetInfo
{
get

34
src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs

@ -17748,22 +17748,6 @@ namespace CppSharp @@ -17748,22 +17748,6 @@ namespace CppSharp
{
namespace Parser
{
public enum LanguageVersion
{
/// <summary>The C programming language.</summary>
C = 0,
/// <summary>The C programming language (GNU version).</summary>
GNUC = 1,
/// <summary>The C++ programming language year 1998; supports deprecated constructs.</summary>
CPlusPlus98 = 2,
/// <summary>The C++ programming language year 1998; supports deprecated constructs (GNU version).</summary>
GNUPlusPlus98 = 3,
/// <summary>The C++ programming language year 2011.</summary>
CPlusPlus11 = 4,
/// <summary>The C++ programming language year 2011 (GNU version).</summary>
GNUPlusPlus11 = 5
}
public enum ParserDiagnosticLevel
{
Ignored = 0,
@ -17838,7 +17822,7 @@ namespace CppSharp @@ -17838,7 +17822,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 232)]
[StructLayout(LayoutKind.Explicit, Size = 224)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17893,9 +17877,6 @@ namespace CppSharp @@ -17893,9 +17877,6 @@ namespace CppSharp
internal byte verbose;
[FieldOffset(216)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(224)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18392,19 +18373,6 @@ namespace CppSharp @@ -18392,19 +18373,6 @@ namespace CppSharp
}
}
public global::CppSharp.Parser.LanguageVersion LanguageVersion
{
get
{
return ((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion;
}
set
{
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion = value;
}
}
public global::CppSharp.Parser.ParserTargetInfo TargetInfo
{
get

34
src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs

@ -17749,22 +17749,6 @@ namespace CppSharp @@ -17749,22 +17749,6 @@ namespace CppSharp
{
namespace Parser
{
public enum LanguageVersion
{
/// <summary>The C programming language.</summary>
C = 0,
/// <summary>The C programming language (GNU version).</summary>
GNUC = 1,
/// <summary>The C++ programming language year 1998; supports deprecated constructs.</summary>
CPlusPlus98 = 2,
/// <summary>The C++ programming language year 1998; supports deprecated constructs (GNU version).</summary>
GNUPlusPlus98 = 3,
/// <summary>The C++ programming language year 2011.</summary>
CPlusPlus11 = 4,
/// <summary>The C++ programming language year 2011 (GNU version).</summary>
GNUPlusPlus11 = 5
}
public enum ParserDiagnosticLevel
{
Ignored = 0,
@ -17839,7 +17823,7 @@ namespace CppSharp @@ -17839,7 +17823,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 304)]
[StructLayout(LayoutKind.Explicit, Size = 296)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17894,9 +17878,6 @@ namespace CppSharp @@ -17894,9 +17878,6 @@ namespace CppSharp
internal byte verbose;
[FieldOffset(288)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(296)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18393,19 +18374,6 @@ namespace CppSharp @@ -18393,19 +18374,6 @@ namespace CppSharp
}
}
public global::CppSharp.Parser.LanguageVersion LanguageVersion
{
get
{
return ((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion;
}
set
{
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->languageVersion = value;
}
}
public global::CppSharp.Parser.ParserTargetInfo TargetInfo
{
get

1
src/CppParser/CppParser.cpp

@ -18,7 +18,6 @@ CppParserOptions::CppParserOptions() @@ -18,7 +18,6 @@ CppParserOptions::CppParserOptions()
, noBuiltinIncludes(false)
, microsoftMode(false)
, verbose(false)
, languageVersion(CppParser::LanguageVersion::GNUPlusPlus11)
, targetInfo(0)
{
}

29
src/CppParser/CppParser.h

@ -15,34 +15,6 @@ namespace CppSharp { namespace CppParser { @@ -15,34 +15,6 @@ namespace CppSharp { namespace CppParser {
using namespace CppSharp::CppParser::AST;
enum class LanguageVersion
{
/**
* The C programming language.
*/
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,
/**
* The C++ programming language year 2011 (GNU version).
*/
GNUPlusPlus11
};
struct CS_API CppParserOptions
{
CppParserOptions();
@ -71,7 +43,6 @@ struct CS_API CppParserOptions @@ -71,7 +43,6 @@ struct CS_API CppParserOptions
bool noBuiltinIncludes;
bool microsoftMode;
bool verbose;
LanguageVersion languageVersion;
ParserTargetInfo* targetInfo;
};

33
src/CppParser/Parser.cpp

@ -237,39 +237,6 @@ void Parser::SetupHeader() @@ -237,39 +237,6 @@ void Parser::SetupHeader()
std::vector<const char*> args;
args.push_back("-cc1");
switch (opts->languageVersion)
{
case CppParser::LanguageVersion::C:
case CppParser::LanguageVersion::GNUC:
args.push_back("-xc");
break;
default:
args.push_back("-xc++");
break;
}
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;
}
for (unsigned I = 0, E = opts->Arguments.size(); I != E; ++I)
{
const auto& Arg = opts->Arguments[I];

62
src/Parser/ParserOptions.cs

@ -15,6 +15,7 @@ namespace CppSharp.Parser @@ -15,6 +15,7 @@ namespace CppSharp.Parser
public bool IsItaniumLikeAbi { get { return Abi != CppAbi.Microsoft; } }
public bool IsMicrosoftAbi { get { return Abi == CppAbi.Microsoft; } }
public bool EnableRtti { get; set; }
public LanguageVersion LanguageVersion { get; set; } = LanguageVersion.GNUPlusPlus11;
/// Sets up the parser options to work with the given Visual Studio toolchain.
public void SetupMSVC()
@ -81,6 +82,39 @@ namespace CppSharp.Parser @@ -81,6 +82,39 @@ namespace CppSharp.Parser
private void SetupArguments()
{
switch (LanguageVersion)
{
case LanguageVersion.C:
case LanguageVersion.GNUC:
AddArguments("-xc");
break;
default:
AddArguments("-xc++");
break;
}
switch (LanguageVersion)
{
case LanguageVersion.C:
AddArguments("-std=c99");
break;
case LanguageVersion.GNUC:
AddArguments("-std=gnu99");
break;
case LanguageVersion.CPlusPlus98:
AddArguments("-std=c++98");
break;
case LanguageVersion.GNUPlusPlus98:
AddArguments("-std=gnu++98");
break;
case LanguageVersion.CPlusPlus11:
AddArguments(MicrosoftMode ? "-std=c++14" : "-std=c++11");
break;
default:
AddArguments(MicrosoftMode ? "-std=gnu++14" : "-std=gnu++11");
break;
}
if (!EnableRtti)
AddArguments("-fno-rtti");
}
@ -93,4 +127,32 @@ namespace CppSharp.Parser @@ -93,4 +127,32 @@ namespace CppSharp.Parser
SetupMSVC();
}
}
public enum LanguageVersion
{
/**
* The C programming language.
*/
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,
/**
* The C++ programming language year 2011 (GNU version).
*/
GNUPlusPlus11
};
}

Loading…
Cancel
Save