Browse Source

Major refactoring: refactor GeneratorKind enum into a class

pull/1794/head
Deadlocklogic 3 years ago
parent
commit
48e060bb57
  1. 6
      src/CLI/Generator.cs
  2. 8
      src/CppParser/Bootstrap/Bootstrap.cs
  3. 16
      src/Generator/Driver.cs
  4. 18
      src/Generator/Generator.cs
  5. 102
      src/Generator/GeneratorKind.cs
  6. 4
      src/Generator/Generators/ExtensionMethods.cs
  7. 16
      src/Generator/Passes/CheckDuplicatedNamesPass.cs
  8. 7
      src/Generator/Passes/ValidateOperatorsPass.cs
  9. 2
      src/Generator/Types/DeclMap.cs
  10. 2
      src/Generator/Types/DeclMapDatabase.cs
  11. 26
      src/Generator/Types/Std/Stdlib.CLI.cs
  12. 28
      src/Generator/Types/Std/Stdlib.CSharp.cs
  13. 7
      src/Generator/Types/TypeIgnoreChecker.cs
  14. 32
      src/Generator/Types/TypeMap.cs
  15. 4
      src/Generator/Types/TypeMapDatabase.cs

6
src/CLI/Generator.cs

@ -230,11 +230,11 @@ namespace CppSharp @@ -230,11 +230,11 @@ namespace CppSharp
{
switch (kind)
{
case GeneratorKind.CLI:
case var _ when ReferenceEquals(kind, GeneratorKind.CLI):
return "C++/CLI";
case GeneratorKind.CSharp:
case var _ when ReferenceEquals(kind, GeneratorKind.CSharp):
return "C#";
case GeneratorKind.NAPI:
case var _ when ReferenceEquals(kind, GeneratorKind.NAPI):
return "N-API";
default:
return kind.ToString();

8
src/CppParser/Bootstrap/Bootstrap.cs

@ -1778,8 +1778,7 @@ namespace CppSharp @@ -1778,8 +1778,7 @@ namespace CppSharp
return qualifiedName;
}
public static string GetDeclName(Declaration decl,
GeneratorKind kind = GeneratorKind.CPlusPlus)
public static string GetDeclName(Declaration decl, GeneratorKind kind)
{
string name = decl.Name;
@ -1811,6 +1810,11 @@ namespace CppSharp @@ -1811,6 +1810,11 @@ namespace CppSharp
return name;
}
public static string GetDeclName(Declaration decl)
{
return GetDeclName(decl, GeneratorKind.CPlusPlus);
}
public static AST.Type GetDeclType(AST.Type type,
TypePrinter typePrinter)
{

16
src/Generator/Driver.cs

@ -36,21 +36,21 @@ namespace CppSharp @@ -36,21 +36,21 @@ namespace CppSharp
{
switch (kind)
{
case GeneratorKind.C:
case var _ when ReferenceEquals(kind, GeneratorKind.C):
return new CGenerator(Context);
case GeneratorKind.CPlusPlus:
case var _ when ReferenceEquals(kind, GeneratorKind.CPlusPlus):
return new CppGenerator(Context);
case GeneratorKind.CLI:
case var _ when ReferenceEquals(kind, GeneratorKind.CLI):
return new CLIGenerator(Context);
case GeneratorKind.CSharp:
case var _ when ReferenceEquals(kind, GeneratorKind.CSharp):
return new CSharpGenerator(Context);
case GeneratorKind.Emscripten:
case var _ when ReferenceEquals(kind, GeneratorKind.Emscripten):
return new EmscriptenGenerator(Context);
case GeneratorKind.QuickJS:
case var _ when ReferenceEquals(kind, GeneratorKind.QuickJS):
return new QuickJSGenerator(Context);
case GeneratorKind.NAPI:
case var _ when ReferenceEquals(kind, GeneratorKind.NAPI):
return new NAPIGenerator(Context);
case GeneratorKind.TypeScript:
case var _ when ReferenceEquals(kind, GeneratorKind.TypeScript):
return new TSGenerator(Context);
}

18
src/Generator/Generator.cs

@ -5,24 +5,6 @@ using CppSharp.AST; @@ -5,24 +5,6 @@ using CppSharp.AST;
namespace CppSharp.Generators
{
/// <summary>
/// Kinds of language generators.
/// </summary>
public enum GeneratorKind
{
CLI = 1,
CSharp = 2,
C,
CPlusPlus,
Emscripten,
ObjectiveC,
Java,
Swift,
QuickJS,
NAPI,
TypeScript
}
/// <summary>
/// Output generated by each backend generator.
/// </summary>

102
src/Generator/GeneratorKind.cs

@ -0,0 +1,102 @@ @@ -0,0 +1,102 @@
using System;
using System.Collections.Generic;
using System.Linq;
using CppSharp.AST;
namespace CppSharp.Generators
{
/// <summary>
/// Kinds of language generators.
/// </summary>
public class GeneratorKind : IEquatable<GeneratorKind>
{
private static HashSet<string> s_registeredIDSet = new();
public string ID { get; }
public GeneratorKind(string id)
{
if (s_registeredIDSet.Contains(id))
{
throw new Exception($"GeneratorKind has an already registered ID: {ID}");
}
ID = id;
s_registeredIDSet.Add(id);
}
public static bool operator ==(GeneratorKind obj1, GeneratorKind obj2)
{
if (ReferenceEquals(obj1, obj2))
{
return true;
}
if (obj1 is null)
{
return false;
}
if (obj2 is null)
{
return false;
}
return obj1.Equals(obj2);
}
public static bool operator !=(GeneratorKind obj1, GeneratorKind obj2) => !(obj1 == obj2);
public bool Equals(GeneratorKind? other)
{
if (other is null)
{
return false;
}
if (ReferenceEquals(this, other))
{
return true;
}
return ID.Equals(other.ID);
}
public override bool Equals(object? obj) => Equals(obj as GeneratorKind);
public override int GetHashCode()
{
unchecked
{
return ID.GetHashCode();
}
}
public const string CLI_ID = "CLI";
public static readonly GeneratorKind CLI = new(CLI_ID);
public const string CSharp_ID = "CSharp";
public static readonly GeneratorKind CSharp = new(CSharp_ID);
public const string C_ID = "C";
public static readonly GeneratorKind C = new(C_ID);
public const string CPlusPlus_ID = "CPlusPlus";
public static readonly GeneratorKind CPlusPlus = new(CPlusPlus_ID);
public const string Emscripten_ID = "Emscripten";
public static readonly GeneratorKind Emscripten = new(Emscripten_ID);
public const string ObjectiveC_ID = "ObjectiveC";
public static readonly GeneratorKind ObjectiveC = new(ObjectiveC_ID);
public const string Java_ID = "Java";
public static readonly GeneratorKind Java = new(Java_ID);
public const string Swift_ID = "Swift";
public static readonly GeneratorKind Swift = new(Swift_ID);
public const string QuickJS_ID = "QuickJS";
public static readonly GeneratorKind QuickJS = new(QuickJS_ID);
public const string NAPI_ID = "NAPI";
public static readonly GeneratorKind NAPI = new(NAPI_ID);
public const string TypeScript_ID = "TypeScript";
public static readonly GeneratorKind TypeScript = new(TypeScript_ID);
}
}

4
src/Generator/Generators/ExtensionMethods.cs

@ -65,9 +65,9 @@ namespace CppSharp.Generators @@ -65,9 +65,9 @@ namespace CppSharp.Generators
switch (generatorKind)
{
case GeneratorKind.CLI:
case var _ when ReferenceEquals(generatorKind, GeneratorKind.CLI):
return typeMap.CLISignatureType(typePrinterContext).Desugar();
case GeneratorKind.CSharp:
case var _ when ReferenceEquals(generatorKind, GeneratorKind.CSharp):
return typeMap.CSharpSignatureType(typePrinterContext).Desugar();
}
}

16
src/Generator/Passes/CheckDuplicatedNamesPass.cs

@ -202,22 +202,22 @@ namespace CppSharp.Passes @@ -202,22 +202,22 @@ namespace CppSharp.Passes
TypePrinter typePrinter;
switch (kind)
{
case GeneratorKind.C:
case var _ when ReferenceEquals(kind, GeneratorKind.C):
typePrinter = new CppTypePrinter(Context) { PrintFlavorKind = CppTypePrintFlavorKind.C };
break;
case GeneratorKind.Emscripten:
case var _ when ReferenceEquals(kind, GeneratorKind.Emscripten):
typePrinter = new EmscriptenTypePrinter(Context);
break;;
case GeneratorKind.CPlusPlus:
case GeneratorKind.QuickJS:
case GeneratorKind.NAPI:
case GeneratorKind.TypeScript:
case var _ when ReferenceEquals(kind, GeneratorKind.CPlusPlus):
case var _ when ReferenceEquals(kind, GeneratorKind.QuickJS):
case var _ when ReferenceEquals(kind, GeneratorKind.NAPI):
case var _ when ReferenceEquals(kind, GeneratorKind.TypeScript):
typePrinter = new CppTypePrinter(Context);
break;
case GeneratorKind.CLI:
case var _ when ReferenceEquals(kind, GeneratorKind.CLI):
typePrinter = new CLITypePrinter(Context);
break;
case GeneratorKind.CSharp:
case var _ when ReferenceEquals(kind, GeneratorKind.CSharp):
typePrinter = new CSharpTypePrinter(Context);
break;
default:

7
src/Generator/Passes/ValidateOperatorsPass.cs

@ -83,11 +83,12 @@ namespace CppSharp.Passes @@ -83,11 +83,12 @@ namespace CppSharp.Passes
{
Parameter parameter = @operator.Parameters.Last();
Type type = parameter.Type.Desugar();
switch (Options.GeneratorKind)
var kind = Options.GeneratorKind;
switch (kind)
{
case GeneratorKind.CLI:
case var _ when ReferenceEquals(kind, GeneratorKind.CLI):
return type.IsPrimitiveType(PrimitiveType.Int);
case GeneratorKind.CSharp:
case var _ when ReferenceEquals(kind, GeneratorKind.CSharp):
Types.TypeMap typeMap;
if (Context.TypeMaps.FindTypeMap(type, out typeMap))
{

2
src/Generator/Types/DeclMap.cs

@ -35,7 +35,7 @@ namespace CppSharp.Types @@ -35,7 +35,7 @@ namespace CppSharp.Types
{
public GeneratorKind GeneratorKind { get; set; }
public DeclMapAttribute() : this(0)
public DeclMapAttribute()
{
}

2
src/Generator/Types/DeclMapDatabase.cs

@ -41,7 +41,7 @@ namespace CppSharp.Types @@ -41,7 +41,7 @@ namespace CppSharp.Types
var attrs = type.GetCustomAttributes(typeof(DeclMapAttribute), true);
foreach (DeclMapAttribute attr in attrs)
{
if (attr.GeneratorKind == 0 ||
if (attr.GeneratorKind == null ||
attr.GeneratorKind == bindingContext.Options.GeneratorKind)
{
var declMap = (DeclMap)Activator.CreateInstance(type);

26
src/Generator/Types/Std/Stdlib.CLI.cs

@ -9,7 +9,7 @@ using CppSharp.Generators.CSharp; @@ -9,7 +9,7 @@ using CppSharp.Generators.CSharp;
namespace CppSharp.Types.Std
{
[TypeMap("const char*", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("const char*", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class ConstCharPointer : TypeMap
{
public override Type CLISignatureType(TypePrinterContext ctx)
@ -62,27 +62,27 @@ namespace CppSharp.Types.Std @@ -62,27 +62,27 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("const char[]", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("const char[]", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class ConstCharArray : ConstCharPointer
{
}
[TypeMap("const wchar_t*", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("const wchar_t*", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class ConstWCharTPointer : ConstCharPointer
{
}
[TypeMap("const char16_t*", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("const char16_t*", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class ConstChar16TPointer : ConstCharPointer
{
}
[TypeMap("const char32_t*", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("const char32_t*", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class ConstChar32TPointer : ConstCharPointer
{
}
[TypeMap("basic_string<char, char_traits<char>, allocator<char>>", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("basic_string<char, char_traits<char>, allocator<char>>", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class String : TypeMap
{
public override Type CLISignatureType(TypePrinterContext ctx)
@ -103,7 +103,7 @@ namespace CppSharp.Types.Std @@ -103,7 +103,7 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("std::wstring", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("std::wstring", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class WString : TypeMap
{
public override Type CLISignatureType(TypePrinterContext ctx)
@ -124,7 +124,7 @@ namespace CppSharp.Types.Std @@ -124,7 +124,7 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("std::vector", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("std::vector", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class Vector : TypeMap
{
public override bool IsIgnored
@ -258,7 +258,7 @@ namespace CppSharp.Types.Std @@ -258,7 +258,7 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("std::map", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("std::map", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class Map : TypeMap
{
public override bool IsIgnored { get { return true; } }
@ -293,19 +293,19 @@ namespace CppSharp.Types.Std @@ -293,19 +293,19 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("std::list", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("std::list", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class List : TypeMap
{
public override bool IsIgnored { get { return true; } }
}
[TypeMap("std::shared_ptr", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("std::shared_ptr", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class SharedPtr : TypeMap
{
public override bool IsIgnored { get { return true; } }
}
[TypeMap("basic_ostream<char, char_traits<char>>", GeneratorKind.CLI)]
[TypeMap("basic_ostream<char, char_traits<char>>", GeneratorKind.CLI_ID)]
public partial class OStream : TypeMap
{
public override Type CLISignatureType(TypePrinterContext ctx)
@ -325,7 +325,7 @@ namespace CppSharp.Types.Std @@ -325,7 +325,7 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("std::nullptr_t", GeneratorKind = GeneratorKind.CLI)]
[TypeMap("std::nullptr_t", GeneratorKindID = GeneratorKind.CLI_ID)]
public partial class NullPtr : TypeMap
{
public override bool DoesMarshalling { get { return false; } }

28
src/Generator/Types/Std/Stdlib.CSharp.cs

@ -11,35 +11,35 @@ using Type = CppSharp.AST.Type; @@ -11,35 +11,35 @@ using Type = CppSharp.AST.Type;
namespace CppSharp.Types.Std
{
[TypeMap("int", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("int", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class Int : TypeMap
{
public override Type CSharpSignatureType(TypePrinterContext ctx) =>
CSharpTypePrinter.GetSignedType(Context.TargetInfo.IntWidth);
}
[TypeMap("unsigned int", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("unsigned int", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class UnsignedInt : TypeMap
{
public override Type CSharpSignatureType(TypePrinterContext ctx) =>
CSharpTypePrinter.GetUnsignedType(Context.TargetInfo.IntWidth);
}
[TypeMap("long", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("long", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class Long : TypeMap
{
public override Type CSharpSignatureType(TypePrinterContext ctx) =>
CSharpTypePrinter.GetSignedType(Context.TargetInfo.LongWidth);
}
[TypeMap("unsigned long", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("unsigned long", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class UnsignedLong : TypeMap
{
public override Type CSharpSignatureType(TypePrinterContext ctx) =>
CSharpTypePrinter.GetUnsignedType(Context.TargetInfo.LongWidth);
}
[TypeMap("char", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("char", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class Char : TypeMap
{
public override Type CSharpSignatureType(TypePrinterContext ctx)
@ -67,7 +67,7 @@ namespace CppSharp.Types.Std @@ -67,7 +67,7 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("char16_t", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("char16_t", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class Char16T : TypeMap
{
public override Type CSharpSignatureType(TypePrinterContext ctx)
@ -76,7 +76,7 @@ namespace CppSharp.Types.Std @@ -76,7 +76,7 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("wchar_t", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("wchar_t", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class WCharT : TypeMap
{
public override Type CSharpSignatureType(TypePrinterContext ctx)
@ -85,7 +85,7 @@ namespace CppSharp.Types.Std @@ -85,7 +85,7 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("const char*", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("const char*", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class ConstCharPointer : TypeMap
{
public override Type CSharpSignatureType(TypePrinterContext ctx)
@ -281,27 +281,27 @@ namespace CppSharp.Types.Std @@ -281,27 +281,27 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("const char[]", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("const char[]", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class ConstCharArray : ConstCharPointer
{
}
[TypeMap("const wchar_t*", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("const wchar_t*", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class ConstWCharTPointer : ConstCharPointer
{
}
[TypeMap("const char16_t*", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("const char16_t*", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class ConstChar16TPointer : ConstCharPointer
{
}
[TypeMap("const char32_t*", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("const char32_t*", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class ConstChar32TPointer : ConstCharPointer
{
}
[TypeMap("basic_string<char, char_traits<char>, allocator<char>>", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("basic_string<char, char_traits<char>, allocator<char>>", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class String : TypeMap
{
public override Type CSharpSignatureType(TypePrinterContext ctx)
@ -420,7 +420,7 @@ namespace CppSharp.Types.Std @@ -420,7 +420,7 @@ namespace CppSharp.Types.Std
}
}
[TypeMap("FILE", GeneratorKind = GeneratorKind.CSharp)]
[TypeMap("FILE", GeneratorKindID = GeneratorKind.CSharp_ID)]
public partial class FILE : TypeMap
{
public override Type CSharpSignatureType(TypePrinterContext ctx)

7
src/Generator/Types/TypeIgnoreChecker.cs

@ -13,14 +13,17 @@ namespace CppSharp @@ -13,14 +13,17 @@ namespace CppSharp
ITypeMapDatabase TypeMapDatabase { get; }
public bool IsIgnored;
public TypeIgnoreChecker(ITypeMapDatabase database,
GeneratorKind generatorKind = GeneratorKind.CSharp)
public TypeIgnoreChecker(ITypeMapDatabase database, GeneratorKind generatorKind)
{
TypeMapDatabase = database;
VisitOptions.ClearFlags(VisitFlags.ClassBases | VisitFlags.TemplateArguments);
this.generatorKind = generatorKind;
}
public TypeIgnoreChecker(ITypeMapDatabase database) : this(database, GeneratorKind.CSharp)
{
}
void Ignore()
{
IsIgnored = true;

32
src/Generator/Types/TypeMap.cs

@ -15,17 +15,17 @@ namespace CppSharp.Types @@ -15,17 +15,17 @@ namespace CppSharp.Types
public class TypeMapAttribute : Attribute
{
public string Type { get; }
public GeneratorKind GeneratorKind { get; set; }
public string GeneratorKindID { get; set; }
public TypeMapAttribute(string type) : this(type, 0)
public TypeMapAttribute(string type) : this(type, null)
{
Type = type;
}
public TypeMapAttribute(string type, GeneratorKind generatorKind)
public TypeMapAttribute(string type, string generatorKindID)
{
Type = type;
GeneratorKind = generatorKind;
GeneratorKindID = generatorKindID;
}
}
@ -55,12 +55,12 @@ namespace CppSharp.Types @@ -55,12 +55,12 @@ namespace CppSharp.Types
{
switch (kind)
{
case GeneratorKind.C:
case GeneratorKind.CPlusPlus:
case var _ when ReferenceEquals(kind, GeneratorKind.C):
case var _ when ReferenceEquals(kind, GeneratorKind.CPlusPlus):
return CppSignatureType(ctx);
case GeneratorKind.CLI:
case var _ when ReferenceEquals(kind, GeneratorKind.CLI):
return CLISignatureType(ctx);
case GeneratorKind.CSharp:
case var _ when ReferenceEquals(kind, GeneratorKind.CSharp):
return CSharpSignatureType(ctx);
default:
throw new System.NotImplementedException();
@ -71,14 +71,14 @@ namespace CppSharp.Types @@ -71,14 +71,14 @@ namespace CppSharp.Types
{
switch (kind)
{
case GeneratorKind.C:
case GeneratorKind.CPlusPlus:
case var _ when ReferenceEquals(kind, GeneratorKind.C):
case var _ when ReferenceEquals(kind, GeneratorKind.CPlusPlus):
CppMarshalToNative(ctx);
return;
case GeneratorKind.CLI:
case var _ when ReferenceEquals(kind, GeneratorKind.CLI):
CLIMarshalToNative(ctx);
return;
case GeneratorKind.CSharp:
case var _ when ReferenceEquals(kind, GeneratorKind.CSharp):
CSharpMarshalToNative(ctx as CSharpMarshalContext);
return;
default:
@ -90,14 +90,14 @@ namespace CppSharp.Types @@ -90,14 +90,14 @@ namespace CppSharp.Types
{
switch (kind)
{
case GeneratorKind.C:
case GeneratorKind.CPlusPlus:
case var _ when ReferenceEquals(kind, GeneratorKind.C):
case var _ when ReferenceEquals(kind, GeneratorKind.CPlusPlus):
CppMarshalToManaged(ctx);
return;
case GeneratorKind.CLI:
case var _ when ReferenceEquals(kind, GeneratorKind.CLI):
CLIMarshalToManaged(ctx);
return;
case GeneratorKind.CSharp:
case var _ when ReferenceEquals(kind, GeneratorKind.CSharp):
CSharpMarshalToManaged(ctx as CSharpMarshalContext);
return;
default:

4
src/Generator/Types/TypeMapDatabase.cs

@ -40,8 +40,8 @@ namespace CppSharp.Types @@ -40,8 +40,8 @@ namespace CppSharp.Types
var attrs = type.GetCustomAttributes(typeof(TypeMapAttribute), true);
foreach (TypeMapAttribute attr in attrs)
{
if (attr.GeneratorKind == 0 ||
attr.GeneratorKind == bindingContext.Options.GeneratorKind)
if (string.IsNullOrEmpty(attr.GeneratorKindID) ||
attr.GeneratorKindID == bindingContext.Options.GeneratorKind.ID)
{
var typeMap = (TypeMap)Activator.CreateInstance(type);
typeMap.Context = bindingContext;

Loading…
Cancel
Save