Browse Source

Added preliminary support for char16 to avoid crashes because of null parameter types.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/191/head
Dimitar Dobrev 12 years ago
parent
commit
99849da1d1
  1. 3
      src/AST/Type.cs
  2. 4
      src/Generator/Generators/CLI/CLIMarshal.cs
  3. 1
      src/Generator/Generators/CLI/CLITypePrinter.cs
  4. 2
      src/Generator/Generators/CSharp/CSharpMarshal.cs
  5. 1
      src/Generator/Generators/CSharp/CSharpTypePrinter.cs
  6. 1
      src/Generator/Types/CppTypePrinter.cs
  7. 1
      src/Generator/Utils/Utils.cs
  8. 2
      src/Parser/Parser.cpp
  9. 5
      tests/Basic/Basic.Tests.cs
  10. 16
      tests/Basic/Basic.h

3
src/AST/Type.cs

@ -817,7 +817,8 @@ namespace CppSharp.AST
UInt64, UInt64,
Float, Float,
Double, Double,
IntPtr IntPtr,
Char16
} }
/// <summary> /// <summary>

4
src/Generator/Generators/CLI/CLIMarshal.cs

@ -138,8 +138,6 @@ namespace CppSharp.Generators.CLI
case PrimitiveType.Double: case PrimitiveType.Double:
Context.Return.Write(Context.ReturnVarName); Context.Return.Write(Context.ReturnVarName);
return true; return true;
case PrimitiveType.WideChar:
return false;
} }
return false; return false;
@ -468,8 +466,6 @@ namespace CppSharp.Generators.CLI
case PrimitiveType.Double: case PrimitiveType.Double:
Context.Return.Write(Context.Parameter.Name); Context.Return.Write(Context.Parameter.Name);
return true; return true;
case PrimitiveType.WideChar:
return false;
} }
return false; return false;

1
src/Generator/Generators/CLI/CLITypePrinter.cs

@ -171,6 +171,7 @@ namespace CppSharp.Generators.CLI
{ {
case PrimitiveType.Bool: return "bool"; case PrimitiveType.Bool: return "bool";
case PrimitiveType.Void: return "void"; case PrimitiveType.Void: return "void";
case PrimitiveType.Char16:
case PrimitiveType.WideChar: return "char"; case PrimitiveType.WideChar: return "char";
case PrimitiveType.Int8: return "char"; case PrimitiveType.Int8: return "char";
case PrimitiveType.UInt8: return "unsigned char"; case PrimitiveType.UInt8: return "unsigned char";

2
src/Generator/Generators/CSharp/CSharpMarshal.cs

@ -198,6 +198,7 @@ namespace CppSharp.Generators.CSharp
case PrimitiveType.Double: case PrimitiveType.Double:
Context.Return.Write(Context.ReturnVarName); Context.Return.Write(Context.ReturnVarName);
return true; return true;
case PrimitiveType.Char16:
case PrimitiveType.WideChar: case PrimitiveType.WideChar:
return false; return false;
} }
@ -509,6 +510,7 @@ namespace CppSharp.Generators.CSharp
case PrimitiveType.Double: case PrimitiveType.Double:
Context.Return.Write(Context.Parameter.Name); Context.Return.Write(Context.Parameter.Name);
return true; return true;
case PrimitiveType.Char16:
case PrimitiveType.WideChar: case PrimitiveType.WideChar:
return false; return false;
} }

1
src/Generator/Generators/CSharp/CSharpTypePrinter.cs

@ -365,6 +365,7 @@ namespace CppSharp.Generators.CSharp
{ {
case PrimitiveType.Bool: return "bool"; case PrimitiveType.Bool: return "bool";
case PrimitiveType.Void: return "void"; case PrimitiveType.Void: return "void";
case PrimitiveType.Char16:
case PrimitiveType.WideChar: return "char"; case PrimitiveType.WideChar: return "char";
case PrimitiveType.Int8: return "sbyte"; case PrimitiveType.Int8: return "sbyte";
case PrimitiveType.UInt8: return "byte"; case PrimitiveType.UInt8: return "byte";

1
src/Generator/Types/CppTypePrinter.cs

@ -98,6 +98,7 @@ namespace CppSharp.Types
{ {
case PrimitiveType.Bool: return "bool"; case PrimitiveType.Bool: return "bool";
case PrimitiveType.Void: return "void"; case PrimitiveType.Void: return "void";
case PrimitiveType.Char16:
case PrimitiveType.WideChar: return "char"; case PrimitiveType.WideChar: return "char";
case PrimitiveType.Int8: return "char"; case PrimitiveType.Int8: return "char";
case PrimitiveType.UInt8: return "unsigned char"; case PrimitiveType.UInt8: return "unsigned char";

1
src/Generator/Utils/Utils.cs

@ -23,6 +23,7 @@ namespace CppSharp
{ {
case PrimitiveType.Bool: return typeof(bool); case PrimitiveType.Bool: return typeof(bool);
case PrimitiveType.Void: return typeof(void); case PrimitiveType.Void: return typeof(void);
case PrimitiveType.Char16:
case PrimitiveType.WideChar: return typeof(char); case PrimitiveType.WideChar: return typeof(char);
case PrimitiveType.Int8: return typeof(sbyte); case PrimitiveType.Int8: return typeof(sbyte);
case PrimitiveType.UInt8: return typeof(byte); case PrimitiveType.UInt8: return typeof(byte);

2
src/Parser/Parser.cpp

@ -1152,6 +1152,8 @@ static CppSharp::AST::PrimitiveType WalkBuiltinType(const clang::BuiltinType* Bu
case clang::BuiltinType::WChar_S: case clang::BuiltinType::WChar_S:
case clang::BuiltinType::WChar_U: return PrimitiveType::WideChar; case clang::BuiltinType::WChar_U: return PrimitiveType::WideChar;
case clang::BuiltinType::Char16: return PrimitiveType::Char16;
case clang::BuiltinType::Short: return PrimitiveType::Int16; case clang::BuiltinType::Short: return PrimitiveType::Int16;
case clang::BuiltinType::UShort: return PrimitiveType::UInt16; case clang::BuiltinType::UShort: return PrimitiveType::UInt16;

5
tests/Basic/Basic.Tests.cs

@ -188,5 +188,10 @@ public class BasicTests : GeneratorTestFixture
{ {
Assert.That(TestStaticClass.Add(1, 2), Is.EqualTo(3)); Assert.That(TestStaticClass.Add(1, 2), Is.EqualTo(3));
} }
[Test, Ignore]
public void TestChar16()
{
}
} }

16
tests/Basic/Basic.h

@ -15,6 +15,8 @@ public:
float B; float B;
const char* GetANSI(); const char* GetANSI();
// TODO: VC++ does not support char16
// char16 chr16;
}; };
struct DLL_API Bar struct DLL_API Bar
@ -260,10 +262,10 @@ struct DLL_API TestStaticClass
private: private:
TestStaticClass(); TestStaticClass();
}; };
class HasIgnoredField class HasIgnoredField
{ {
Base<Derived> fieldOfIgnoredType; Base<Derived> fieldOfIgnoredType;
}; };

Loading…
Cancel
Save