Browse Source

Fixed the generated C# when having a field of type char*.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/685/head
Dimitar Dobrev 9 years ago
parent
commit
397d82b2a1
  1. 4
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std.cs
  2. 2
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std.cs
  3. 4
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std.cs
  4. 5
      src/CppParser/Parser.cpp
  5. 4
      src/Generator/Generators/CSharp/CSharpSources.cs

4
src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std.cs

@ -90,7 +90,7 @@ namespace std
} }
} }
public unsafe partial class _Alloc_construct public unsafe partial class _Has_no_alloc_construct_tag
{ {
[StructLayout(LayoutKind.Explicit, Size = 0)] [StructLayout(LayoutKind.Explicit, Size = 0)]
public partial struct Internal public partial struct Internal
@ -98,7 +98,7 @@ namespace std
} }
} }
public unsafe partial class _Alloc_destroy public unsafe partial class _Has_no_alloc_destroy_tag
{ {
[StructLayout(LayoutKind.Explicit, Size = 0)] [StructLayout(LayoutKind.Explicit, Size = 0)]
public partial struct Internal public partial struct Internal

2
src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std.cs

@ -170,7 +170,7 @@ namespace std
{ {
get get
{ {
return ((Internal*) __Instance)->_M_p; return (sbyte*) ((Internal*) __Instance)->_M_p;
} }
set set

4
src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std.cs

@ -90,7 +90,7 @@ namespace std
} }
} }
public unsafe partial class _Alloc_construct public unsafe partial class _Has_no_alloc_construct_tag
{ {
[StructLayout(LayoutKind.Explicit, Size = 0)] [StructLayout(LayoutKind.Explicit, Size = 0)]
public partial struct Internal public partial struct Internal
@ -98,7 +98,7 @@ namespace std
} }
} }
public unsafe partial class _Alloc_destroy public unsafe partial class _Has_no_alloc_destroy_tag
{ {
[StructLayout(LayoutKind.Explicit, Size = 0)] [StructLayout(LayoutKind.Explicit, Size = 0)]
public partial struct Internal public partial struct Internal

5
src/CppParser/Parser.cpp

@ -3172,8 +3172,11 @@ AST::Expression* Parser::WalkExpression(clang::Expr* Expr)
case Stmt::ImplicitCastExprClass: case Stmt::ImplicitCastExprClass:
return WalkExpression(cast<CastExpr>(Expr)->getSubExprAsWritten()); return WalkExpression(cast<CastExpr>(Expr)->getSubExprAsWritten());
case Stmt::CXXOperatorCallExprClass: case Stmt::CXXOperatorCallExprClass:
{
auto OperatorCallExpr = cast<CXXOperatorCallExpr>(Expr);
return new AST::Expression(GetStringFromStatement(Expr), StatementClass::CXXOperatorCallExpr, return new AST::Expression(GetStringFromStatement(Expr), StatementClass::CXXOperatorCallExpr,
WalkDeclaration(cast<CXXOperatorCallExpr>(Expr)->getCalleeDecl())); OperatorCallExpr->getCalleeDecl() ? WalkDeclaration(OperatorCallExpr->getCalleeDecl()) : 0);
}
case Stmt::CXXConstructExprClass: case Stmt::CXXConstructExprClass:
case Stmt::CXXTemporaryObjectExprClass: case Stmt::CXXTemporaryObjectExprClass:
{ {

4
src/Generator/Generators/CSharp/CSharpSources.cs

@ -1143,7 +1143,9 @@ namespace CppSharp.Generators.CSharp
{ {
var final = field.Type.GetFinalPointee().Desugar(); var final = field.Type.GetFinalPointee().Desugar();
if (final.IsPrimitiveType() && !final.IsPrimitiveType(PrimitiveType.Void) && if (final.IsPrimitiveType() && !final.IsPrimitiveType(PrimitiveType.Void) &&
!final.IsPrimitiveType(PrimitiveType.Char)) (!final.IsPrimitiveType(PrimitiveType.Char) ||
(!Driver.Options.MarshalCharAsManagedChar &&
!((PointerType) field.Type).QualifiedPointee.Qualifiers.IsConst)))
@return = string.Format("({0}*) {1}", field.Type.GetPointee().Desugar(), @return); @return = string.Format("({0}*) {1}", field.Type.GetPointee().Desugar(), @return);
} }
WriteLine("return {0};", @return); WriteLine("return {0};", @return);

Loading…
Cancel
Save