Browse Source

Fixed the wrapping of bit masks in default arguments.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>

Conflicts:
	src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs
pull/322/head
Dimitar Dobrev 12 years ago
parent
commit
88a88599e7
  1. 3
      src/AST/Statement.cs
  2. 3
      src/Core/Parser/ASTConverter.cs
  3. 3
      src/CppParser/AST.h
  4. 3
      src/CppParser/Bindings/CLI/AST.h
  5. 3
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs
  6. 3
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs
  7. 3
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs
  8. 3
      src/CppParser/Parser.cpp
  9. 6
      src/Generator/Passes/HandleDefaultParamValuesPass.cs
  10. 10
      tests/CSharpTemp/CSharpTemp.cpp
  11. 20
      tests/CSharpTemp/CSharpTemp.h

3
src/AST/Statement.cs

@ -4,7 +4,8 @@ @@ -4,7 +4,8 @@
{
Any,
DeclarationReference,
ConstructorReference
ConstructorReference,
CXXOperatorCall
}
public abstract class Statement

3
src/Core/Parser/ASTConverter.cs

@ -855,6 +855,9 @@ namespace CppSharp @@ -855,6 +855,9 @@ namespace CppSharp
case StatementClass.CXXConstructExprClass:
expression.Class = AST.StatementClass.ConstructorReference;
break;
case StatementClass.CXXOperatorCallExpr:
expression.Class = AST.StatementClass.CXXOperatorCall;
break;
}
return expression;
}

3
src/CppParser/AST.h

@ -459,7 +459,8 @@ enum class StatementClass @@ -459,7 +459,8 @@ enum class StatementClass
{
Any,
DeclRefExprClass,
CXXConstructExprClass
CXXConstructExprClass,
CXXOperatorCallExpr
};
class CS_API Statement

3
src/CppParser/Bindings/CLI/AST.h

@ -211,7 +211,8 @@ namespace CppSharp @@ -211,7 +211,8 @@ namespace CppSharp
{
Any = 0,
DeclRefExprClass = 1,
CXXConstructExprClass = 2
CXXConstructExprClass = 2,
CXXOperatorCallExpr = 3
};
public enum struct TemplateSpecializationKind

3
src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs

@ -135,7 +135,8 @@ namespace CppSharp @@ -135,7 +135,8 @@ namespace CppSharp
{
Any = 0,
DeclRefExprClass = 1,
CXXConstructExprClass = 2
CXXConstructExprClass = 2,
CXXOperatorCallExpr = 3
}
public enum TemplateSpecializationKind

3
src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs

@ -135,7 +135,8 @@ namespace CppSharp @@ -135,7 +135,8 @@ namespace CppSharp
{
Any = 0,
DeclRefExprClass = 1,
CXXConstructExprClass = 2
CXXConstructExprClass = 2,
CXXOperatorCallExpr = 3
}
public enum TemplateSpecializationKind

3
src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs

@ -135,7 +135,8 @@ namespace CppSharp @@ -135,7 +135,8 @@ namespace CppSharp
{
Any = 0,
DeclRefExprClass = 1,
CXXConstructExprClass = 2
CXXConstructExprClass = 2,
CXXOperatorCallExpr = 3
}
public enum TemplateSpecializationKind

3
src/CppParser/Parser.cpp

@ -2466,6 +2466,9 @@ AST::Expression* Parser::WalkStatement(clang::Stmt* Statement) @@ -2466,6 +2466,9 @@ AST::Expression* Parser::WalkStatement(clang::Stmt* Statement)
case Stmt::CXXStaticCastExprClass:
case Stmt::ImplicitCastExprClass:
return WalkStatement(cast<CastExpr>(Statement)->getSubExprAsWritten());
case Stmt::CXXOperatorCallExprClass:
return new AST::Expression(GetStringFromStatement(Statement), StatementClass::CXXOperatorCallExpr,
WalkDeclaration(cast<CXXOperatorCallExpr>(Statement)->getCalleeDecl()));
case Stmt::CXXConstructExprClass:
case Stmt::CXXTemporaryObjectExprClass:
{

6
src/Generator/Passes/HandleDefaultParamValuesPass.cs

@ -13,7 +13,7 @@ namespace CppSharp.Passes @@ -13,7 +13,7 @@ namespace CppSharp.Passes
{
public class HandleDefaultParamValuesPass : TranslationUnitPass
{
private static readonly Regex regexFunctionParams = new Regex(@"\((.+)\)", RegexOptions.Compiled);
private static readonly Regex regexFunctionParams = new Regex(@"\(?(.+)\)?", RegexOptions.Compiled);
private static readonly Regex regexDoubleColon = new Regex(@"\w+::", RegexOptions.Compiled);
private static readonly Regex regexName = new Regex(@"(\w+)", RegexOptions.Compiled);
@ -120,8 +120,8 @@ namespace CppSharp.Passes @@ -120,8 +120,8 @@ namespace CppSharp.Passes
return true;
}
var call = parameter.DefaultArgument.Declaration as Method;
if (call != null && call.IsConstructor)
var call = parameter.DefaultArgument.Declaration as Function;
if (call != null)
{
string @params =
regexFunctionParams.Match(parameter.DefaultArgument.String).Groups[1].Value;

10
tests/CSharpTemp/CSharpTemp.cpp

@ -222,6 +222,16 @@ TestCopyConstructorVal::TestCopyConstructorVal(const TestCopyConstructorVal& oth @@ -222,6 +222,16 @@ TestCopyConstructorVal::TestCopyConstructorVal(const TestCopyConstructorVal& oth
B = other.B;
}
Flags operator|(Flags lhs, Flags rhs)
{
return static_cast<Flags>(static_cast<int>(lhs) | static_cast<int>(rhs));
}
UntypedFlags operator|(UntypedFlags lhs, UntypedFlags rhs)
{
return static_cast<UntypedFlags>(static_cast<int>(lhs) | static_cast<int>(rhs));
}
void MethodsWithDefaultValues::DefaultPointer(Foo *ptr)
{
}

20
tests/CSharpTemp/CSharpTemp.h

@ -187,6 +187,24 @@ struct DLL_API ValueType @@ -187,6 +187,24 @@ struct DLL_API ValueType
{
};
enum class Flags
{
Flag1 = 1,
Flag2 = 2,
Flag3 = 4
};
DLL_API Flags operator|(Flags lhs, Flags rhs);
enum UntypedFlags
{
Flag1 = 1,
Flag2 = 2,
Flag3 = 4
};
UntypedFlags operator|(UntypedFlags lhs, UntypedFlags rhs);
class DLL_API MethodsWithDefaultValues
{
public:
@ -198,6 +216,8 @@ public: @@ -198,6 +216,8 @@ public:
void DefaultRefTypeBeforeAndAfterOthers(int i = 5, Foo foo = Foo(), Bar::Items item = Bar::Item2, Baz baz = Baz());
void DefaultIntAssignedAnEnum(int i = Bar::Item1);
void DefaultRefAssignedValue(const Foo& fooRef = Foo());
void DefaultEnumAssignedBitwiseOr(Flags flags = Flags::Flag1 | Flags::Flag2);
void DefaultEnumAssignedBitwiseOrShort(UntypedFlags flags = Flag1 | Flag2);
};
class DLL_API HasPrivateOverrideBase

Loading…
Cancel
Save