Browse Source

Fixed default arguments with enums directly declared in headers.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/322/head
Dimitar Dobrev 12 years ago
parent
commit
95547dbec8
  1. 6
      src/Generator/Passes/HandleDefaultParamValuesPass.cs
  2. 4
      tests/CSharpTemp/CSharpTemp.cpp
  3. 1
      tests/CSharpTemp/CSharpTemp.h

6
src/Generator/Passes/HandleDefaultParamValuesPass.cs

@ -114,9 +114,11 @@ namespace CppSharp.Passes @@ -114,9 +114,11 @@ namespace CppSharp.Passes
var enumItem = parameter.DefaultArgument.Declaration as Enumeration.Item;
if (enumItem != null)
{
parameter.DefaultArgument.String = string.Format("{0}{1}.{2}.{3}",
parameter.DefaultArgument.String = string.Format("{0}{1}{2}.{3}",
desugared.IsPrimitiveType() ? "(int) " : string.Empty,
enumItem.Namespace.Namespace.Name, enumItem.Namespace.Name, enumItem.Name);
string.IsNullOrEmpty(enumItem.Namespace.Namespace.Name)
? string.Empty
: enumItem.Namespace.Namespace.Name + ".", enumItem.Namespace.Name, enumItem.Name);
return true;
}

4
tests/CSharpTemp/CSharpTemp.cpp

@ -264,6 +264,10 @@ void MethodsWithDefaultValues::defaultRefAssignedValue(const Foo &fooRef) @@ -264,6 +264,10 @@ void MethodsWithDefaultValues::defaultRefAssignedValue(const Foo &fooRef)
{
}
void MethodsWithDefaultValues::defaultMappedToEnum(QFlags<Flags> qFlags)
{
}
void HasPrivateOverrideBase::privateOverride(int i)
{
}

1
tests/CSharpTemp/CSharpTemp.h

@ -219,6 +219,7 @@ public: @@ -219,6 +219,7 @@ public:
void DefaultRefAssignedValue(const Foo& fooRef = Foo());
void defaultEnumAssignedBitwiseOr(Flags flags = Flags::Flag1 | Flags::Flag2);
void defaultEnumAssignedBitwiseOrShort(UntypedFlags flags = Flag1 | Flag2);
void defaultMappedToEnum(QFlags<Flags> qFlags = Flags::Flag1);
};
class DLL_API HasPrivateOverrideBase

Loading…
Cancel
Save