diff --git a/src/Generator/Generators/ExtensionMethods.cs b/src/Generator/Generators/ExtensionMethods.cs
index b5adfde1..a6a7555f 100644
--- a/src/Generator/Generators/ExtensionMethods.cs
+++ b/src/Generator/Generators/ExtensionMethods.cs
@@ -44,8 +44,9 @@ namespace CppSharp.Generators
PrimitiveType.ULongLong,
PrimitiveType.UShort
};
- return type.IsPointerToPrimitiveType() &&
- allowedToHaveDefaultPtrVals.Any(type.IsPointerToPrimitiveType);
+ return (type.IsPointerToPrimitiveType() &&
+ allowedToHaveDefaultPtrVals.Any(type.IsPointerToPrimitiveType)) ||
+ (type.IsAddress() && type.GetPointee().IsEnum());
}
public static Type GetMappedType(this Type type, TypeMapDatabase typeMaps,
diff --git a/tests/CLI/CLI.Tests.cs b/tests/CLI/CLI.Tests.cs
index 9791ceaa..49845cc3 100644
--- a/tests/CLI/CLI.Tests.cs
+++ b/tests/CLI/CLI.Tests.cs
@@ -18,15 +18,6 @@ public class CLITests : GeneratorTestFixture
Assert.AreEqual("test_test", new Date(0, 0, 0).TestStdString("test"));
}
- [Test]
- public void TestByRefEnumParam()
- {
- using (var byRefEnumParam = new TestByRefEnumParam())
- {
- Assert.AreEqual(EnumParam.E1, byRefEnumParam.GetPassedEnumParam(EnumParam.E1));
- }
- }
-
[Test]
public void GetEmployeeNameFromOrgTest()
{
diff --git a/tests/CLI/CLI.cpp b/tests/CLI/CLI.cpp
index e20ec6ea..965d0b0f 100644
--- a/tests/CLI/CLI.cpp
+++ b/tests/CLI/CLI.cpp
@@ -27,11 +27,6 @@ DLL_API void useIncompleteStruct(IncompleteStruct * a)
return;
}
-EnumParam TestByRefEnumParam::GetPassedEnumParam(EnumParam & e)
-{
- return e;
-}
-
TestMappedTypeNonConstRefParam::TestMappedTypeNonConstRefParam(const std::string str)
{
m_str = str;
diff --git a/tests/CLI/CLI.h b/tests/CLI/CLI.h
index bcfb8c2a..5852457d 100644
--- a/tests/CLI/CLI.h
+++ b/tests/CLI/CLI.h
@@ -63,18 +63,6 @@ typedef struct IncompleteStruct IncompleteStruct;
DLL_API IncompleteStruct* createIncompleteStruct();
DLL_API void useIncompleteStruct(IncompleteStruct* a);
-enum EnumParam
-{
- E1,
- E2
-};
-
-class DLL_API TestByRefEnumParam
-{
-public:
- EnumParam GetPassedEnumParam(EnumParam& e);
-};
-
class DLL_API TestMappedTypeNonConstRefParam
{
public:
@@ -88,4 +76,4 @@ class DLL_API TestMappedTypeNonConstRefParamConsumer
{
public:
void ChangePassedMappedTypeNonConstRefParam(TestMappedTypeNonConstRefParam&);
-};
\ No newline at end of file
+};
diff --git a/tests/Common/Common.Tests.cs b/tests/Common/Common.Tests.cs
index 59a12641..16ca283d 100644
--- a/tests/Common/Common.Tests.cs
+++ b/tests/Common/Common.Tests.cs
@@ -563,7 +563,7 @@ public class CommonTests : GeneratorTestFixture
public unsafe void TestArraysPointers()
{
var values = MyEnum.A;
- var arrays = new TestArraysPointers(&values, 1);
+ var arrays = new TestArraysPointers(ref values, 1);
Assert.That(arrays.Value, Is.EqualTo(MyEnum.A));
}
diff --git a/tests/Common/Common.cpp b/tests/Common/Common.cpp
index 2cbdddc3..1ab6493e 100644
--- a/tests/Common/Common.cpp
+++ b/tests/Common/Common.cpp
@@ -260,13 +260,13 @@ bool Hello::TestPrimitiveOutRef(CS_OUT float& f)
return true;
}
-bool Hello::TestPrimitiveInOut(CS_IN_OUT int* i)
+bool Hello::TestPrimitiveInOut(int* i)
{
*i += 10;
return true;
}
-bool Hello::TestPrimitiveInOutRef(CS_IN_OUT int& i)
+bool Hello::TestPrimitiveInOutRef(int& i)
{
i += 10;
return true;
@@ -282,16 +282,16 @@ void Hello::EnumOutRef(int value, CS_OUT Enum& e)
e = (Enum)value;
}
-void Hello::EnumInOut(CS_IN_OUT Enum* e)
+void Hello::EnumInOut(Enum* e)
{
- if (*e == Enum::E)
- *e = Enum::F;
+ if (*e == Enum::E)
+ *e = Enum::F;
}
-void Hello::EnumInOutRef(CS_IN_OUT Enum& e)
+void Hello::EnumInOutRef(Enum& e)
{
- if (e == Enum::E)
- e = Enum::F;
+ if (e == Enum::E)
+ e = Enum::F;
}
void Hello::StringOut(CS_OUT const char** str)
@@ -1189,4 +1189,4 @@ int NonPrimitiveType::GetFoo()
TestFixedNonPrimitiveArrays::TestFixedNonPrimitiveArrays()
{
-}
\ No newline at end of file
+}
diff --git a/tests/Common/Common.h b/tests/Common/Common.h
index 01d6b994..f394db07 100644
--- a/tests/Common/Common.h
+++ b/tests/Common/Common.h
@@ -234,14 +234,14 @@ public:
bool TestPrimitiveOut(CS_OUT float* f);
bool TestPrimitiveOutRef(CS_OUT float& f);
- bool TestPrimitiveInOut(CS_IN_OUT int* i);
- bool TestPrimitiveInOutRef(CS_IN_OUT int& i);
+ bool TestPrimitiveInOut(int* i);
+ bool TestPrimitiveInOutRef(int& i);
void EnumOut(int value, CS_OUT Enum* e);
void EnumOutRef(int value, CS_OUT Enum& e);
- void EnumInOut(CS_IN_OUT Enum* e);
- void EnumInOutRef(CS_IN_OUT Enum& e);
+ void EnumInOut(Enum* e);
+ void EnumInOutRef(Enum& e);
void StringOut(CS_OUT const char** str);
void StringOutRef(CS_OUT const char*& str);
@@ -1594,4 +1594,4 @@ class TemplateClass : TemplateClassBase {
using typename TemplateClassBase::XType;
using Func = std::function;
explicit TemplateClass(Func function) {}
-};
\ No newline at end of file
+};