Browse Source

Refactor protected class member checking in CheckStaticClass.

pull/742/head
Joao Matos 9 years ago
parent
commit
dad7ec8ccb
  1. 27
      src/Generator/Passes/CheckStaticClass.cs

27
src/Generator/Passes/CheckStaticClass.cs

@ -22,11 +22,26 @@ namespace CppSharp.Passes
if (Options.IsCSharpGenerator) if (Options.IsCSharpGenerator)
{ {
// C# cannot have protected members in static classes. // C# cannot have protected members in static classes.
if (IsProtectedClassMember(decl) && decl.IsGenerated)
SetDeclarationAccessToPrivate(decl);
}
return true;
}
static bool IsProtectedClassMember(Declaration decl)
{
if (decl.Access != AccessSpecifier.Protected)
return false;
var @class = decl.Namespace as Class; var @class = decl.Namespace as Class;
if ( decl.Access == AccessSpecifier.Protected && if (@class == null || !@class.IsStatic)
decl.GenerationKind == GenerationKind.Generate && return false;
@class != null &&
@class.IsStatic) return true;
}
static void SetDeclarationAccessToPrivate(Declaration decl)
{ {
// By setting it to private it will appear // By setting it to private it will appear
// as an internal in the final C# wrapper. // as an internal in the final C# wrapper.
@ -36,10 +51,6 @@ namespace CppSharp.Passes
// now private declaration will get filtered out later. // now private declaration will get filtered out later.
decl.GenerationKind = GenerationKind.Generate; decl.GenerationKind = GenerationKind.Generate;
} }
}
return true;
}
static bool ReturnsClassInstance(Function function) static bool ReturnsClassInstance(Function function)
{ {

Loading…
Cancel
Save