diff --git a/src/AST/Class.cs b/src/AST/Class.cs
index 61b85219..f4812594 100644
--- a/src/AST/Class.cs
+++ b/src/AST/Class.cs
@@ -149,8 +149,8 @@ namespace CppSharp.AST
{
foreach (var @base in Bases)
{
- if (@base.IsClass && !@base.Class.ExplicityIgnored)
- return @base.Class;
+ if (@base.IsClass && @base.Class.IsDeclared)
+ return @base.Class;
}
return null;
diff --git a/src/AST/ClassExtensions.cs b/src/AST/ClassExtensions.cs
index 88b2e779..259c97c6 100644
--- a/src/AST/ClassExtensions.cs
+++ b/src/AST/ClassExtensions.cs
@@ -85,7 +85,7 @@ namespace CppSharp.AST
return property;
Declaration decl;
foreach (var baseClassSpecifier in c.Bases.Where(
- b => b.Type.IsTagDecl(out decl) && !b.Class.Ignore))
+ b => b.Type.IsTagDecl(out decl) && b.Class.IsDeclared))
{
property = baseClassSpecifier.Class.GetPropertyByName(propertyName);
if (property != null)
diff --git a/src/AST/ClassLayout.cs b/src/AST/ClassLayout.cs
index 7beae5ad..3ebbaac2 100644
--- a/src/AST/ClassLayout.cs
+++ b/src/AST/ClassLayout.cs
@@ -43,7 +43,7 @@ namespace CppSharp.AST
get
{
return Method != null &&
- Method.Ignore &&
+ !Method.IsDeclared &&
((Class) Method.Namespace).GetPropertyByConstituentMethod(Method) == null;
}
}
diff --git a/src/AST/Declaration.cs b/src/AST/Declaration.cs
index 008fbcb1..92fa06b5 100644
--- a/src/AST/Declaration.cs
+++ b/src/AST/Declaration.cs
@@ -25,13 +25,27 @@ namespace CppSharp.AST
string Mangled { get; set; }
}
- [Flags]
- public enum IgnoreFlags
+ ///
+ /// Kind of the generated declaration
+ ///
+ public enum GenerationKind
{
- None = 0,
- Generation = 1 << 0,
- Processing = 1 << 1,
- Explicit = 1 << 2
+ ///
+ // Declaration is not generated.
+ ///
+ None,
+ ///
+ /// Declaration is generated.
+ ///
+ Generate,
+ ///
+ /// Declaration is generated to be used internally.
+ ///
+ Internal,
+ ///
+ /// Declaration was already generated in a linked assembly.
+ ///
+ Link,
}
///
@@ -172,65 +186,71 @@ namespace CppSharp.AST
// Comment associated with declaration.
public RawComment Comment;
- // Keeps flags to know the type of ignore.
- public IgnoreFlags IgnoreFlags { get; set; }
+ private GenerationKind? generationKind;
- // Whether the declaration should be generated.
- public virtual bool IsGenerated
+ public GenerationKind GenerationKind
{
get
{
- var isGenerated = !IgnoreFlags.HasFlag(IgnoreFlags.Generation);
+ if(ExplicityIgnored)
+ return GenerationKind.None;
- if (Namespace == null)
- return isGenerated;
+ if (generationKind.HasValue)
+ return generationKind.Value;
- return isGenerated && Namespace.IsGenerated;
- }
+ if (Namespace != null)
+ return Namespace.GenerationKind;
- set
- {
- if (value)
- IgnoreFlags &= ~IgnoreFlags.Generation;
- else
- IgnoreFlags |= IgnoreFlags.Generation;
+ return GenerationKind.Generate;
}
+ set { generationKind = value; }
}
- // Whether the declaration was explicitly ignored.
- public bool ExplicityIgnored
+ ///
+ /// Whether the declaration should be generated.
+ ///
+ public virtual bool IsGenerated
{
get
{
- var isExplicitlyIgnored = IgnoreFlags.HasFlag(IgnoreFlags.Explicit);
-
- if (Namespace == null)
- return isExplicitlyIgnored;
-
- return isExplicitlyIgnored || Namespace.ExplicityIgnored;
+ return GenerationKind == GenerationKind.Generate;
}
+ }
- set
+ ///
+ /// Whether the declaration internal bindings should be generated.
+ ///
+ public bool IsInternal
+ {
+ get
{
- if (value)
- IgnoreFlags |= IgnoreFlags.Explicit;
- else
- IgnoreFlags &= ~IgnoreFlags.Explicit;
+ var k = GenerationKind;
+ return k == GenerationKind.Generate
+ || k == GenerationKind.Internal;
}
}
- // Whether the declaration should be ignored.
- public virtual bool Ignore
+ ///
+ /// Whether a binded version of this declaration is available.
+ ///
+ public bool IsDeclared
{
get
{
- var isIgnored = IgnoreFlags != IgnoreFlags.None;
+ var k = GenerationKind;
+ return k == GenerationKind.Generate
+ || k == GenerationKind.Internal
+ || k == GenerationKind.Link;
+ }
+ }
- if (Namespace != null)
- isIgnored |= Namespace.Ignore;
+ public bool ExplicityIgnored { get; set; }
- return isIgnored;
- }
+ [Obsolete("Replace set by ExplicityIgnored. Replace get by IsGenerated, IsInternal or IsDeclared.")]
+ public virtual bool Ignore
+ {
+ get { return GenerationKind == GenerationKind.None; }
+ set { ExplicityIgnored = value; }
}
public AccessSpecifier Access { get; set; }
@@ -264,7 +284,6 @@ namespace CppSharp.AST
protected Declaration()
{
Access = AccessSpecifier.Public;
- IgnoreFlags = IgnoreFlags.None;
ExcludeFromPasses = new HashSet();
PreprocessedEntities = new List();
Attributes = new List();
@@ -283,7 +302,7 @@ namespace CppSharp.AST
OriginalName = declaration.OriginalName;
name = declaration.Name;
Comment = declaration.Comment;
- IgnoreFlags = declaration.IgnoreFlags;
+ generationKind = declaration.generationKind;
Access = declaration.Access;
DebugText = declaration.DebugText;
IsIncomplete = declaration.IsIncomplete;
diff --git a/src/AST/Namespace.cs b/src/AST/Namespace.cs
index a343506d..6adaab95 100644
--- a/src/AST/Namespace.cs
+++ b/src/AST/Namespace.cs
@@ -335,8 +335,8 @@ namespace CppSharp.AST
public bool HasDeclarations
{
get
- {
- Predicate pred = (t => !t.Ignore);
+ {
+ Predicate pred = (t => t.IsGenerated);
return Enums.Exists(pred) || HasFunctions || Typedefs.Exists(pred)
|| Classes.Any() || Namespaces.Exists(n => n.HasDeclarations);
}
@@ -345,8 +345,8 @@ namespace CppSharp.AST
public bool HasFunctions
{
get
- {
- Predicate pred = (t => !t.Ignore);
+ {
+ Predicate pred = (t => t.IsGenerated);
return Functions.Exists(pred) || Namespaces.Exists(n => n.HasFunctions);
}
}
diff --git a/src/AST/TranslationUnit.cs b/src/AST/TranslationUnit.cs
index 1e1d36c0..9acff994 100644
--- a/src/AST/TranslationUnit.cs
+++ b/src/AST/TranslationUnit.cs
@@ -24,18 +24,6 @@ namespace CppSharp.AST
/// Contains the macros present in the unit.
public List Macros;
- // Whether the unit should be generated.
- public override bool IsGenerated
- {
- get { return !IgnoreFlags.HasFlag(IgnoreFlags.Generation); }
- }
-
- // Whether the unit should be ignored.
- public override bool Ignore
- {
- get { return IgnoreFlags != IgnoreFlags.None; }
- }
-
public bool IsSystemHeader { get; set; }
public bool IsValid { get { return FilePath != ""; } }
diff --git a/src/CppParser/Bindings/ParserGen.cs b/src/CppParser/Bindings/ParserGen.cs
index 173401a1..e84bdc4c 100644
--- a/src/CppParser/Bindings/ParserGen.cs
+++ b/src/CppParser/Bindings/ParserGen.cs
@@ -145,7 +145,7 @@ namespace CppSharp
{
public override bool VisitFieldDecl(Field field)
{
- if (field.Ignore)
+ if (!field.IsGenerated)
return false;
if (!IsStdType(field.QualifiedType)) return false;
diff --git a/src/Generator/AST/Utils.cs b/src/Generator/AST/Utils.cs
index c3944128..1e887257 100644
--- a/src/Generator/AST/Utils.cs
+++ b/src/Generator/AST/Utils.cs
@@ -9,7 +9,7 @@ namespace CppSharp.AST
{
public static bool CheckIgnoreFunction(Function function, DriverOptions options)
{
- if (function.Ignore) return true;
+ if (!function.IsGenerated) return true;
if (function is Method)
return CheckIgnoreMethod(function as Method, options);
@@ -19,7 +19,7 @@ namespace CppSharp.AST
public static bool CheckIgnoreMethod(Method method, DriverOptions options)
{
- if (method.Ignore) return true;
+ if (!method.IsGenerated) return true;
var isEmptyCtor = method.IsConstructor && method.Parameters.Count == 0;
@@ -52,7 +52,7 @@ namespace CppSharp.AST
var copyConstructor = baseClass.Methods.FirstOrDefault(m => m.IsCopyConstructor);
if (copyConstructor == null
|| copyConstructor.Access == AccessSpecifier.Private
- || copyConstructor.Ignore)
+ || !copyConstructor.IsDeclared)
return true;
}
}
@@ -65,7 +65,7 @@ namespace CppSharp.AST
if (field.Access == AccessSpecifier.Private)
return true;
- return field.Ignore;
+ return !field.IsGenerated;
}
}
diff --git a/src/Generator/Generator.cs b/src/Generator/Generator.cs
index 069437f9..1606cc2a 100644
--- a/src/Generator/Generator.cs
+++ b/src/Generator/Generator.cs
@@ -68,7 +68,7 @@ namespace CppSharp.Generators
foreach (var unit in Driver.ASTContext.TranslationUnits)
{
- if (unit.Ignore || !unit.HasDeclarations)
+ if (!unit.IsGenerated || !unit.HasDeclarations)
continue;
if (unit.IsSystemHeader)
diff --git a/src/Generator/Generators/CLI/CLIHeadersTemplate.cs b/src/Generator/Generators/CLI/CLIHeadersTemplate.cs
index 4b49a012..cf9555d2 100644
--- a/src/Generator/Generators/CLI/CLIHeadersTemplate.cs
+++ b/src/Generator/Generators/CLI/CLIHeadersTemplate.cs
@@ -68,8 +68,8 @@ namespace CppSharp.Generators.CLI
var include = typeRef.Include;
var unit = include.TranslationUnit;
-
- if (unit != null && unit.ExplicityIgnored)
+
+ if (unit != null && !unit.IsDeclared)
continue;
if(!string.IsNullOrEmpty(include.File) && include.InHeader)
@@ -151,7 +151,7 @@ namespace CppSharp.Generators.CLI
// Generate all the enum declarations for the module.
foreach (var @enum in decl.Enums)
{
- if (@enum.Ignore || @enum.IsIncomplete)
+ if (!@enum.IsGenerated || @enum.IsIncomplete)
continue;
PushBlock(CLIBlockKind.Enum, @enum);
@@ -165,7 +165,7 @@ namespace CppSharp.Generators.CLI
// Generate all the struct/class declarations for the module.
foreach (var @class in decl.Classes)
{
- if (@class.Ignore || @class.IsIncomplete)
+ if (!@class.IsGenerated || @class.IsIncomplete)
continue;
if (@class.IsOpaque)
@@ -210,7 +210,7 @@ namespace CppSharp.Generators.CLI
{
foreach (var typedef in decl.Typedefs)
{
- if (typedef.Ignore)
+ if (!typedef.IsGenerated)
continue;
GenerateTypedef(typedef);
@@ -240,7 +240,7 @@ namespace CppSharp.Generators.CLI
public void GenerateClass(Class @class)
{
- if (@class.Ignore || @class.IsIncomplete)
+ if (!@class.IsGenerated || @class.IsIncomplete)
return;
GenerateDeclarationCommon(@class);
@@ -306,7 +306,7 @@ namespace CppSharp.Generators.CLI
PushIndent();
foreach (var template in @class.Templates)
{
- if (template.Ignore) continue;
+ if (!template.IsGenerated) continue;
var functionTemplate = template as FunctionTemplate;
if (functionTemplate == null) continue;
@@ -417,7 +417,7 @@ namespace CppSharp.Generators.CLI
// properties to the managed value subtypes.
if (@class.IsValueType)
{
- foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.Ignore))
+ foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated))
{
GenerateClassFields(@base.Class);
}
@@ -426,7 +426,7 @@ namespace CppSharp.Generators.CLI
PushIndent();
// check for value types because some of the ignored fields may back properties;
// not the case for ref types because the NativePtr pattern is used there
- foreach (var field in @class.Fields.Where(f => !f.Ignore || @class.IsValueType))
+ foreach (var field in @class.Fields.Where(f => f.IsGenerated || @class.IsValueType))
{
var property = @class.Properties.FirstOrDefault(p => p.Field == field);
if (property != null && !property.IsInRefTypeAndBackedByValueClassField())
@@ -454,7 +454,7 @@ namespace CppSharp.Generators.CLI
{
foreach (var @event in @class.Events)
{
- if (@event.Ignore) continue;
+ if (!@event.IsGenerated) continue;
var cppTypePrinter = new CppTypePrinter(Driver.TypeDatabase);
var cppArgs = cppTypePrinter.VisitParameters(@event.Parameters, hasNames: true);
@@ -522,7 +522,7 @@ namespace CppSharp.Generators.CLI
foreach(var variable in @class.Variables)
{
- if (variable.Ignore) continue;
+ if (!variable.IsGenerated) continue;
if (variable.Access != AccessSpecifier.Public)
continue;
@@ -592,14 +592,14 @@ namespace CppSharp.Generators.CLI
// properties to the managed value subtypes.
if (@class.IsValueType)
{
- foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.Ignore))
+ foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated))
{
GenerateClassProperties(@base.Class);
}
}
PushIndent();
- foreach (var prop in @class.Properties.Where(prop => !prop.Ignore))
+ foreach (var prop in @class.Properties.Where(prop => prop.IsGenerated))
{
if (prop.IsInRefTypeAndBackedByValueClassField())
{
@@ -701,7 +701,7 @@ namespace CppSharp.Generators.CLI
public bool GenerateTypedef(TypedefDecl typedef)
{
- if (typedef.Ignore)
+ if (!typedef.IsGenerated)
return false;
FunctionType function;
@@ -726,7 +726,7 @@ namespace CppSharp.Generators.CLI
public void GenerateFunction(Function function)
{
- if (function.Ignore)
+ if (!function.IsGenerated)
return;
PushBlock(CLIBlockKind.Function, function);
@@ -745,7 +745,7 @@ namespace CppSharp.Generators.CLI
public void GenerateEnum(Enumeration @enum)
{
- if (@enum.Ignore || @enum.IsIncomplete)
+ if (!@enum.IsGenerated || @enum.IsIncomplete)
return;
PushBlock(CLIBlockKind.Enum, @enum);
diff --git a/src/Generator/Generators/CLI/CLIMarshal.cs b/src/Generator/Generators/CLI/CLIMarshal.cs
index 4f840c2d..c7a6624a 100644
--- a/src/Generator/Generators/CLI/CLIMarshal.cs
+++ b/src/Generator/Generators/CLI/CLIMarshal.cs
@@ -618,14 +618,14 @@ namespace CppSharp.Generators.CLI
public void MarshalValueClassProperties(Class @class, string marshalVar)
{
- foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.Ignore))
+ foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated))
{
MarshalValueClassProperties(@base.Class, marshalVar);
}
foreach (var property in @class.Properties)
{
- if (property.Ignore || property.Field == null)
+ if (!property.IsGenerated || property.Field == null)
continue;
MarshalValueClassProperty(property, marshalVar);
diff --git a/src/Generator/Generators/CLI/CLISourcesTemplate.cs b/src/Generator/Generators/CLI/CLISourcesTemplate.cs
index 6182d191..a75c57d0 100644
--- a/src/Generator/Generators/CLI/CLISourcesTemplate.cs
+++ b/src/Generator/Generators/CLI/CLISourcesTemplate.cs
@@ -86,7 +86,7 @@ namespace CppSharp.Generators.CLI
PushBlock(CLIBlockKind.Namespace);
foreach (var @class in @namespace.Classes)
{
- if (@class.Ignore)
+ if (!@class.IsGenerated)
continue;
if (@class.IsOpaque || @class.IsIncomplete)
@@ -100,7 +100,7 @@ namespace CppSharp.Generators.CLI
// Generate all the function declarations for the module.
foreach (var function in @namespace.Functions)
{
- if (function.Ignore)
+ if (!function.IsGenerated)
continue;
GenerateFunction(function, @namespace);
@@ -112,12 +112,12 @@ namespace CppSharp.Generators.CLI
{
foreach (var template in @namespace.Templates)
{
- if (template.Ignore) continue;
+ if (!template.IsGenerated) continue;
var functionTemplate = template as FunctionTemplate;
if (functionTemplate == null) continue;
- if (functionTemplate.Ignore)
+ if (!functionTemplate.IsGenerated)
continue;
GenerateFunctionTemplate(functionTemplate);
@@ -174,7 +174,7 @@ namespace CppSharp.Generators.CLI
foreach (var @event in @class.Events)
{
- if (@event.Ignore)
+ if (!@event.IsGenerated)
continue;
GenerateDeclarationCommon(@event);
@@ -183,7 +183,7 @@ namespace CppSharp.Generators.CLI
foreach (var variable in @class.Variables)
{
- if (variable.Ignore)
+ if (!variable.IsGenerated)
continue;
if (variable.Access != AccessSpecifier.Public)
@@ -216,14 +216,14 @@ namespace CppSharp.Generators.CLI
{
if (@class.IsValueType)
{
- foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.Ignore))
+ foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated))
{
GenerateClassProperties(@base.Class, realOwner);
}
}
foreach (var property in @class.Properties.Where(
- p => !p.Ignore && !p.IsInRefTypeAndBackedByValueClassField()))
+ p => p.IsGenerated && !p.IsInRefTypeAndBackedByValueClassField()))
GenerateProperty(property, realOwner);
}
@@ -309,7 +309,7 @@ namespace CppSharp.Generators.CLI
private void GenerateProperty(Property property, Class realOwner)
{
- if (property.Ignore) return;
+ if (!property.IsGenerated) return;
PushBlock(CLIBlockKind.Property);
@@ -628,14 +628,14 @@ namespace CppSharp.Generators.CLI
private void GenerateStructMarshaling(Class @class, string nativeVar)
{
- foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.Ignore))
+ foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated))
{
GenerateStructMarshaling(@base.Class, nativeVar);
}
foreach (var property in @class.Properties)
{
- if (property.Ignore || property.Field == null) continue;
+ if (!property.IsGenerated || property.Field == null) continue;
var nativeField = string.Format("{0}{1}",
nativeVar, property.Field.OriginalName);
@@ -659,7 +659,7 @@ namespace CppSharp.Generators.CLI
private bool GenerateClassConstructorBase(Class @class, bool isIntPtr, Method method = null)
{
- var hasBase = @class.HasBase && @class.Bases[0].IsClass && !@class.Bases[0].Class.ExplicityIgnored;
+ var hasBase = @class.HasBase && @class.Bases[0].IsClass && @class.Bases[0].Class.IsDeclared;
if (!hasBase)
return false;
@@ -777,14 +777,14 @@ namespace CppSharp.Generators.CLI
private void GenerateValueTypeConstructorCallProperties(Class @class)
{
- foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.ExplicityIgnored))
+ foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsDeclared))
{
GenerateValueTypeConstructorCallProperties(@base.Class);
}
foreach (var property in @class.Properties)
{
- if (property.ExplicityIgnored || property.Field == null) continue;
+ if (!property.IsDeclared || property.Field == null) continue;
var varName = string.Format("_native.{0}", property.Field.OriginalName);
@@ -806,7 +806,7 @@ namespace CppSharp.Generators.CLI
public void GenerateFunction(Function function, DeclarationContext @namespace)
{
- if (function.Ignore)
+ if (!function.IsGenerated)
return;
GenerateDeclarationCommon(function);
diff --git a/src/Generator/Generators/CLI/CLITypeReferences.cs b/src/Generator/Generators/CLI/CLITypeReferences.cs
index 6340533d..337bded4 100644
--- a/src/Generator/Generators/CLI/CLITypeReferences.cs
+++ b/src/Generator/Generators/CLI/CLITypeReferences.cs
@@ -115,7 +115,7 @@ namespace CppSharp.Generators.CLI
if (translationUnit.IsSystemHeader)
return;
- if(decl.ExplicityIgnored)
+ if(!decl.IsDeclared)
return;
if(IsBuiltinTypedef(decl))
@@ -181,7 +181,7 @@ namespace CppSharp.Generators.CLI
if (decl.Namespace != null && decl.Namespace.TranslationUnit.IsSystemHeader)
return false;
- return !decl.ExplicityIgnored;
+ return decl.IsDeclared;
}
public override bool VisitClassDecl(Class @class)
diff --git a/src/Generator/Generators/CSharp/CSharpMarshal.cs b/src/Generator/Generators/CSharp/CSharpMarshal.cs
index c26a82a6..035114be 100644
--- a/src/Generator/Generators/CSharp/CSharpMarshal.cs
+++ b/src/Generator/Generators/CSharp/CSharpMarshal.cs
@@ -268,7 +268,7 @@ namespace CppSharp.Generators.CSharp
// Call the copy constructor.
TypeMap typeMap;
- if (copyCtorMethod.Ignore && FindTypeMap(ctx.Driver.TypeDatabase, @class, out typeMap))
+ if (!copyCtorMethod.IsGenerated && FindTypeMap(ctx.Driver.TypeDatabase, @class, out typeMap))
{
typeMap.CSharpMarshalCopyCtorToManaged(Context);
}
diff --git a/src/Generator/Generators/CSharp/CSharpTextTemplate.cs b/src/Generator/Generators/CSharp/CSharpTextTemplate.cs
index f65c5823..d95be772 100644
--- a/src/Generator/Generators/CSharp/CSharpTextTemplate.cs
+++ b/src/Generator/Generators/CSharp/CSharpTextTemplate.cs
@@ -203,8 +203,8 @@ namespace CppSharp.Generators.CSharp
// Generate all the enum declarations.
foreach (var @enum in context.Enums)
- {
- if (@enum.Ignore || @enum.IsIncomplete)
+ {
+ if (!@enum.IsGenerated || @enum.IsIncomplete)
continue;
GenerateEnum(@enum);
@@ -241,8 +241,8 @@ namespace CppSharp.Generators.CSharp
// Generate all the internal function declarations.
foreach (var function in context.Functions)
- {
- if (function.Ignore) continue;
+ {
+ if (!function.IsInternal) continue;
GenerateInternalFunction(function);
}
@@ -251,8 +251,8 @@ namespace CppSharp.Generators.CSharp
PopBlock(NewLineKind.BeforeNextBlock);
foreach (var function in context.Functions)
- {
- if (function.Ignore) continue;
+ {
+ if (!function.IsGenerated) continue;
GenerateFunction(function);
}
@@ -262,8 +262,8 @@ namespace CppSharp.Generators.CSharp
}
foreach (var @event in context.Events)
- {
- if (@event.Ignore) continue;
+ {
+ if (!@event.IsGenerated) continue;
GenerateEvent(@event);
}
@@ -350,9 +350,9 @@ namespace CppSharp.Generators.CSharp
GenerateClassInternals(@class);
GenerateDeclContext(@class);
- if (@class.Ignore || @class.IsDependent)
- goto exit;
-
+ if (!@class.IsGenerated || @class.IsDependent)
+ goto exit;
+
if (ShouldGenerateClassNativeField(@class))
{
PushBlock(CSharpBlockKind.Field);
@@ -403,8 +403,8 @@ namespace CppSharp.Generators.CSharp
}
private void GenerateInterface(Class @class)
- {
- if (@class.Ignore || @class.IsIncomplete)
+ {
+ if (!@class.IsGenerated || @class.IsIncomplete)
return;
PushBlock(CSharpBlockKind.Interface);
@@ -432,8 +432,8 @@ namespace CppSharp.Generators.CSharp
WriteLine(");");
PopBlock(NewLineKind.BeforeNextBlock);
- }
- foreach (var prop in @class.Properties.Where(p => !p.Ignore))
+ }
+ foreach (var prop in @class.Properties.Where(p => p.IsGenerated))
{
PushBlock(CSharpBlockKind.Property);
var type = prop.Type;
@@ -595,8 +595,8 @@ namespace CppSharp.Generators.CSharp
private void GenerateStructMarshalingProperties(Class @class)
{
foreach (var @base in @class.Bases)
- {
- if (!@base.IsClass || @base.Class.Ignore)
+ {
+ if (!@base.IsClass || !@base.Class.IsGenerated)
continue;
GenerateStructMarshalingProperties(@base.Class);
@@ -604,8 +604,8 @@ namespace CppSharp.Generators.CSharp
for (int i = 0; i < @class.Properties.Count; i++)
{
- var property = @class.Properties[i];
- if (property.Ignore || property.Field == null) continue;
+ var property = @class.Properties[i];
+ if (!property.IsGenerated || property.Field == null) continue;
var nativeField = string.Format("{0}->{1}",
Generator.GeneratedIdentifier("ptr"),
@@ -646,8 +646,8 @@ namespace CppSharp.Generators.CSharp
private void GenerateStructInternalMarshalingProperties(Class @class, string marshalVar)
{
foreach (var @base in @class.Bases)
- {
- if (!@base.IsClass || @base.Class.Ignore)
+ {
+ if (!@base.IsClass || !@base.Class.IsGenerated)
continue;
var baseClass = @base.Class;
@@ -655,8 +655,8 @@ namespace CppSharp.Generators.CSharp
}
foreach (var property in @class.Properties)
- {
- if (property.Ignore || property.Field == null)
+ {
+ if (!property.IsGenerated || property.Field == null)
continue;
GenerateStructInternalMarshalingProperty(property, marshalVar);
@@ -710,7 +710,7 @@ namespace CppSharp.Generators.CSharp
baseClass = @class.Bases[0].Class;
var hasRefBase = baseClass != null && baseClass.IsRefType
- && !baseClass.ExplicityIgnored;
+ && baseClass.IsDeclared;
return hasRefBase;
}
@@ -723,9 +723,9 @@ namespace CppSharp.Generators.CSharp
public void GenerateClassProlog(Class @class)
{
if (@class.IsUnion)
- WriteLine("[StructLayout(LayoutKind.Explicit)]");
-
- Write(@class.Ignore ? "internal " : Helpers.GetAccess(@class.Access));
+ WriteLine("[StructLayout(LayoutKind.Explicit)]");
+
+ Write(!@class.IsGenerated ? "internal " : Helpers.GetAccess(@class.Access));
Write("unsafe ");
if (Driver.Options.GenerateAbstractImpls && @class.IsAbstract)
@@ -737,11 +737,11 @@ namespace CppSharp.Generators.CSharp
Write(@class.IsInterface ? "interface " : (@class.IsValueType ? "struct " : "class "));
Write("{0}", @class.Name);
- var bases = new List();
-
- var needsBase = @class.HasBaseClass && !@class.IsValueType && !@class.Ignore
- && !@class.Bases[0].Class.IsValueType
- && !@class.Bases[0].Class.Ignore;
+ var bases = new List();
+
+ var needsBase = @class.HasBaseClass && !@class.IsValueType && @class.IsGenerated
+ && !@class.Bases[0].Class.IsValueType
+ && @class.Bases[0].Class.IsGenerated;
if (needsBase)
{
@@ -749,9 +749,9 @@ namespace CppSharp.Generators.CSharp
from @base in @class.Bases
where @base.IsClass
select QualifiedIdentifier(@base.Class));
- }
-
- if (!@class.Ignore)
+ }
+
+ if (@class.IsGenerated)
{
if (@class.IsRefType)
bases.Add("IDisposable");
@@ -770,8 +770,8 @@ namespace CppSharp.Generators.CSharp
{
foreach (var @base in @class.Bases.Where(b => !(b.Type is DependentNameType)))
{
- TypeMap typeMap;
- if ((!Driver.TypeDatabase.FindTypeMap(@base.Type, out typeMap) && @base.Class.Ignore) ||
+ TypeMap typeMap;
+ if ((!Driver.TypeDatabase.FindTypeMap(@base.Type, out typeMap) && !@base.Class.IsGenerated) ||
@base.Class.OriginalClass == @class)
continue;
@@ -806,13 +806,13 @@ namespace CppSharp.Generators.CSharp
if (field.Expression != null)
{
- var fieldValuePrinted = field.Expression.CSharpValue(ExpressionPrinter);
- Write("{0} {1} {2} = {3};", field.Ignore ? "internal" : "public",
+ var fieldValuePrinted = field.Expression.CSharpValue(ExpressionPrinter);
+ Write("{0} {1} {2} = {3};", !field.IsGenerated ? "internal" : "public",
fieldTypePrinted.Type, safeIdentifier, fieldValuePrinted);
}
else
- {
- Write("{0} {1} {2};", field.Ignore ? "internal" : "public",
+ {
+ Write("{0} {1} {2};", !field.IsGenerated ? "internal" : "public",
fieldTypePrinted.Type, safeIdentifier);
}
@@ -1167,8 +1167,8 @@ namespace CppSharp.Generators.CSharp
public void GenerateClassVariables(Class @class)
{
foreach (var variable in @class.Variables)
- {
- if (variable.Ignore) continue;
+ {
+ if (!variable.IsGenerated) continue;
if (variable.Access != AccessSpecifier.Public)
continue;
@@ -1182,8 +1182,8 @@ namespace CppSharp.Generators.CSharp
private void GenerateClassProperties(Class @class)
{
if (@class.IsValueType)
- {
- foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.Ignore))
+ {
+ foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated))
{
GenerateClassProperties(@base.Class);
}
@@ -1193,8 +1193,8 @@ namespace CppSharp.Generators.CSharp
}
private void GenerateProperties(Class @class)
- {
- foreach (var prop in @class.Properties.Where(p => !p.Ignore))
+ {
+ foreach (var prop in @class.Properties.Where(p => p.IsGenerated))
{
if (prop.IsInRefTypeAndBackedByValueClassField())
{
@@ -1513,8 +1513,8 @@ namespace CppSharp.Generators.CSharp
var marshals = new List();
for (int i = 0; i < method.Parameters.Count; i++)
{
- var param = method.Parameters[i];
- if (param.Ignore)
+ var param = method.Parameters[i];
+ if (!param.IsGenerated)
continue;
if (param.Kind == ParameterKind.IndirectReturnType)
@@ -1957,7 +1957,7 @@ namespace CppSharp.Generators.CSharp
private bool GenerateClassConstructorBase(Class @class, Method method)
{
- var hasBase = @class.HasBaseClass && !@class.Bases[0].Class.Ignore;
+ var hasBase = @class.HasBaseClass && @class.Bases[0].Class.IsGenerated;
if (hasBase && !@class.IsValueType)
{
@@ -2528,8 +2528,8 @@ namespace CppSharp.Generators.CSharp
#endregion
public bool GenerateTypedef(TypedefDecl typedef)
- {
- if (typedef.Ignore)
+ {
+ if (!typedef.IsGenerated)
return false;
GenerateDeclarationCommon(typedef);
@@ -2562,8 +2562,8 @@ namespace CppSharp.Generators.CSharp
}
public void GenerateEnum(Enumeration @enum)
- {
- if (@enum.Ignore) return;
+ {
+ if (!@enum.IsGenerated) return;
PushBlock(CSharpBlockKind.Enum);
GenerateDeclarationCommon(@enum);
@@ -2654,7 +2654,7 @@ namespace CppSharp.Generators.CSharp
public void GenerateInternalFunction(Function function)
{
- if (function.ExplicityIgnored || function.IsPure)
+ if (!function.IsInternal || function.IsPure)
return;
if (function.OriginalFunction != null)
diff --git a/src/Generator/Library.cs b/src/Generator/Library.cs
index 187855ab..d72002ae 100644
--- a/src/Generator/Library.cs
+++ b/src/Generator/Library.cs
@@ -334,7 +334,6 @@ namespace CppSharp
foreach (var unit in units)
{
- unit.IsGenerated = false;
unit.ExplicityIgnored = true;
}
}
diff --git a/src/Generator/Passes/CheckAmbiguousFunctions.cs b/src/Generator/Passes/CheckAmbiguousFunctions.cs
index e3726767..49c1e07b 100644
--- a/src/Generator/Passes/CheckAmbiguousFunctions.cs
+++ b/src/Generator/Passes/CheckAmbiguousFunctions.cs
@@ -40,7 +40,7 @@ namespace CppSharp.Passes
if (overload == function) continue;
- if (overload.Ignore) continue;
+ if (!overload.IsGenerated) continue;
if (!CheckDefaultParameters(function, overload))
continue;
diff --git a/src/Generator/Passes/CheckDuplicatedNamesPass.cs b/src/Generator/Passes/CheckDuplicatedNamesPass.cs
index 20fa8bea..df64939f 100644
--- a/src/Generator/Passes/CheckDuplicatedNamesPass.cs
+++ b/src/Generator/Passes/CheckDuplicatedNamesPass.cs
@@ -180,7 +180,7 @@ namespace CppSharp.Passes
void CheckDuplicate(Declaration decl)
{
- if (decl.IsDependent || decl.Ignore)
+ if (decl.IsDependent || !decl.IsGenerated)
return;
if (string.IsNullOrWhiteSpace(decl.Name))
diff --git a/src/Generator/Passes/CheckIgnoredDecls.cs b/src/Generator/Passes/CheckIgnoredDecls.cs
index 1d200420..4a1b0274 100644
--- a/src/Generator/Passes/CheckIgnoredDecls.cs
+++ b/src/Generator/Passes/CheckIgnoredDecls.cs
@@ -168,7 +168,7 @@ namespace CppSharp.Passes
if (method.IsOverride)
{
var baseOverride = @class.GetRootBaseMethod(method);
- if (baseOverride != null && baseOverride.Ignore)
+ if (baseOverride != null && !baseOverride.IsDeclared)
{
Log.Debug(
"Virtual method '{0}' was ignored due to ignored override '{1}'",
@@ -199,7 +199,7 @@ namespace CppSharp.Passes
continue;
ignoredBase = @base;
- isIgnored |= @base.Ignore
+ isIgnored |= !@base.IsDeclared
|| HasIgnoredBaseClass(@override, @base, out ignoredBase);
if (isIgnored)
diff --git a/src/Generator/Passes/CheckMacrosPass.cs b/src/Generator/Passes/CheckMacrosPass.cs
index 35e678d2..77cfd758 100644
--- a/src/Generator/Passes/CheckMacrosPass.cs
+++ b/src/Generator/Passes/CheckMacrosPass.cs
@@ -74,22 +74,21 @@ namespace CppSharp.Passes
e.Location != MacroLocation.ClassBody &&
e.Location != MacroLocation.FunctionBody &&
e.Location != MacroLocation.FunctionParameters))
- decl.IsGenerated = false;
+ decl.GenerationKind = GenerationKind.Link;
+ }
+
+ public override bool VisitTranslationUnit(TranslationUnit unit)
+ {
+ var expansions = unit.PreprocessedEntities.OfType();
+
+ if (expansions.Any(e => e.Text == Prefix + "_IGNORE_FILE"))
+ {
+ unit.ExplicityIgnored = true;
+ }
+
+ return base.VisitTranslationUnit(unit);
}
- public override bool VisitTranslationUnit(TranslationUnit unit)
- {
- var expansions = unit.PreprocessedEntities.OfType();
-
- if (expansions.Any(e => e.Text == Prefix + "_IGNORE_FILE"))
- {
- unit.IsGenerated = false;
- unit.ExplicityIgnored = true;
- }
-
- return base.VisitTranslationUnit(unit);
- }
-
public override bool VisitClassDecl(Class @class)
{
var expansions = @class.PreprocessedEntities.OfType();
diff --git a/src/Generator/Passes/CheckOperatorsOverloads.cs b/src/Generator/Passes/CheckOperatorsOverloads.cs
index 22564dd6..9b2cca86 100644
--- a/src/Generator/Passes/CheckOperatorsOverloads.cs
+++ b/src/Generator/Passes/CheckOperatorsOverloads.cs
@@ -47,7 +47,7 @@ namespace CppSharp.Passes
private void CheckInvalidOperators(Class @class)
{
- foreach (var @operator in @class.Operators.Where(o => !o.Ignore))
+ foreach (var @operator in @class.Operators.Where(o => o.IsGenerated))
{
if (!IsValidOperatorOverload(@operator))
{
@@ -95,28 +95,29 @@ namespace CppSharp.Passes
Access = @operator.Access,
Namespace = @class,
GetMethod = @operator
- };
-
- if (!@operator.ReturnType.Qualifiers.IsConst && @operator.ReturnType.Type.IsAddress())
+ };
+
+ if (!@operator.ReturnType.Qualifiers.IsConst && @operator.ReturnType.Type.IsAddress())
property.SetMethod = @operator;
- if (Driver.Options.IsCLIGenerator)
- {
- // If we've a setter use the pointee as the type of the property.
- var pointerType = property.Type as PointerType;
- if (pointerType != null && property.HasSetter)
- {
- property.QualifiedType = new QualifiedType(pointerType.Pointee, property.QualifiedType.Qualifiers);
- property.GetMethod.ReturnType = property.QualifiedType;
- }
- // C++/CLI uses "default" as the indexer property name.
- property.Name = "default";
+ if (Driver.Options.IsCLIGenerator)
+ {
+ // If we've a setter use the pointee as the type of the property.
+ var pointerType = property.Type as PointerType;
+ if (pointerType != null && property.HasSetter)
+ {
+ property.QualifiedType = new QualifiedType(pointerType.Pointee, property.QualifiedType.Qualifiers);
+ property.GetMethod.ReturnType = property.QualifiedType;
+ }
+ // C++/CLI uses "default" as the indexer property name.
+ property.Name = "default";
}
property.Parameters.AddRange(@operator.Parameters);
- @class.Properties.Add(property);
- @operator.IsGenerated = false;
+ @class.Properties.Add(property);
+
+ @operator.GenerationKind = GenerationKind.Internal;
}
static void HandleMissingOperatorOverloadPair(Class @class, CXXOperatorKind op1,
@@ -129,7 +130,7 @@ namespace CppSharp.Passes
var missingKind = CheckMissingOperatorOverloadPair(@class, out index, op1, op2,
op.Parameters.Last().Type);
- if (missingKind == CXXOperatorKind.None || op.Ignore)
+ if (missingKind == CXXOperatorKind.None || !op.IsGenerated)
continue;
var method = new Method()
@@ -158,13 +159,13 @@ namespace CppSharp.Passes
var hasFirst = first != null;
var hasSecond = second != null;
- if (hasFirst && (!hasSecond || second.Ignore))
+ if (hasFirst && (!hasSecond || !second.IsGenerated))
{
index = @class.Methods.IndexOf(first);
return op2;
}
- if (hasSecond && (!hasFirst || first.Ignore))
+ if (hasSecond && (!hasFirst || !first.IsGenerated))
{
index = @class.Methods.IndexOf(second);
return op1;
@@ -196,18 +197,18 @@ namespace CppSharp.Passes
// The array indexing operator can be overloaded
case CXXOperatorKind.Subscript:
- // The conversion operator can be overloaded
+ // The conversion operator can be overloaded
case CXXOperatorKind.Conversion:
- return true;
-
- // The comparison operators can be overloaded if their return type is bool
- case CXXOperatorKind.EqualEqual:
- case CXXOperatorKind.ExclaimEqual:
- case CXXOperatorKind.Less:
- case CXXOperatorKind.Greater:
- case CXXOperatorKind.LessEqual:
- case CXXOperatorKind.GreaterEqual:
- return @operator.ReturnType.Type.IsPrimitiveType(PrimitiveType.Bool);
+ return true;
+
+ // The comparison operators can be overloaded if their return type is bool
+ case CXXOperatorKind.EqualEqual:
+ case CXXOperatorKind.ExclaimEqual:
+ case CXXOperatorKind.Less:
+ case CXXOperatorKind.Greater:
+ case CXXOperatorKind.LessEqual:
+ case CXXOperatorKind.GreaterEqual:
+ return @operator.ReturnType.Type.IsPrimitiveType(PrimitiveType.Bool);
// Only prefix operators can be overloaded
case CXXOperatorKind.PlusPlus:
diff --git a/src/Generator/Passes/CheckStaticClass.cs b/src/Generator/Passes/CheckStaticClass.cs
index 04a2c4cb..586520ac 100644
--- a/src/Generator/Passes/CheckStaticClass.cs
+++ b/src/Generator/Passes/CheckStaticClass.cs
@@ -63,10 +63,10 @@ namespace CppSharp.Passes
// Ignore the special methods for static classes.
foreach (var ctor in @class.Constructors)
- ctor.IsGenerated = false;
+ ctor.GenerationKind = GenerationKind.Internal;
foreach (var dtor in @class.Destructors)
- dtor.IsGenerated = false;
+ dtor.GenerationKind = GenerationKind.Internal;
return true;
}
diff --git a/src/Generator/Passes/CleanUnitPass.cs b/src/Generator/Passes/CleanUnitPass.cs
index 63e4e43f..bc833e38 100644
--- a/src/Generator/Passes/CleanUnitPass.cs
+++ b/src/Generator/Passes/CleanUnitPass.cs
@@ -13,9 +13,9 @@ namespace CppSharp.Passes
public override bool VisitTranslationUnit(TranslationUnit unit)
{
- if (IsTranslationGenerated(unit))
- unit.IsGenerated = false;
-
+ if (IsExternalDeclaration(unit))
+ unit.GenerationKind = GenerationKind.Link;
+
// Try to get an include path that works from the original include
// directories paths.
@@ -52,19 +52,20 @@ namespace CppSharp.Passes
return includePath.Replace('\\', '/');
}
-
- bool IsTranslationGenerated(TranslationUnit translationUnit)
- {
- if (DriverOptions.NoGenIncludeDirs == null)
- return false;
-
- foreach (var path in DriverOptions.NoGenIncludeDirs)
- {
- if (translationUnit.FilePath.StartsWith(path))
- return true;
- }
-
- return false;
- }
+
+
+ bool IsExternalDeclaration(TranslationUnit translationUnit)
+ {
+ if (DriverOptions.NoGenIncludeDirs == null)
+ return false;
+
+ foreach (var path in DriverOptions.NoGenIncludeDirs)
+ {
+ if (translationUnit.FilePath.StartsWith(path))
+ return true;
+ }
+
+ return false;
+ }
}
}
\ No newline at end of file
diff --git a/src/Generator/Passes/FunctionToInstanceMethodPass.cs b/src/Generator/Passes/FunctionToInstanceMethodPass.cs
index 6355c8c8..c5cc7bd9 100644
--- a/src/Generator/Passes/FunctionToInstanceMethodPass.cs
+++ b/src/Generator/Passes/FunctionToInstanceMethodPass.cs
@@ -18,7 +18,7 @@ namespace CppSharp.Passes
public override bool VisitFunctionDecl(Function function)
{
- if (function.Ignore)
+ if (!function.IsGenerated)
return false;
// Check if this function can be converted.
diff --git a/src/Generator/Passes/FunctionToStaticMethodPass.cs b/src/Generator/Passes/FunctionToStaticMethodPass.cs
index 52f08b71..fc0ccfba 100644
--- a/src/Generator/Passes/FunctionToStaticMethodPass.cs
+++ b/src/Generator/Passes/FunctionToStaticMethodPass.cs
@@ -14,7 +14,7 @@ namespace CppSharp.Passes
public override bool VisitFunctionDecl(Function function)
{
- if (function.Ignore)
+ if (!function.IsGenerated)
return false;
var types = StringHelpers.SplitCamelCase(function.Name);
diff --git a/src/Generator/Passes/GenerateInlinesCodePass.cs b/src/Generator/Passes/GenerateInlinesCodePass.cs
index 8b7bbed8..5bd22c1f 100644
--- a/src/Generator/Passes/GenerateInlinesCodePass.cs
+++ b/src/Generator/Passes/GenerateInlinesCodePass.cs
@@ -81,7 +81,7 @@ namespace CppSharp.Passes
{
string symbol = mangled.Mangled;
var declaration = (Declaration) mangled;
- if (!declaration.Ignore && AccessValid(declaration) &&
+ if (declaration.IsGenerated && AccessValid(declaration) &&
!Driver.Symbols.FindSymbol(ref symbol) &&
!currentUnit.FilePath.EndsWith("_impl.h") &&
!currentUnit.FilePath.EndsWith("_p.h"))
diff --git a/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs b/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs
index d3c6072f..6ebe8484 100644
--- a/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs
+++ b/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs
@@ -70,7 +70,7 @@ namespace CppSharp.Passes
public override bool VisitMethodDecl(Method method)
{
if (!method.IsConstructor && !method.IsDestructor && !method.IsOperator &&
- !method.Ignore)
+ method.IsGenerated)
DistributeMethod(method);
return base.VisitMethodDecl(method);
}
@@ -205,9 +205,9 @@ namespace CppSharp.Passes
property.Comment = comment;
}
type.Properties.Add(property);
- getter.IsGenerated = false;
+ getter.GenerationKind = GenerationKind.Internal;
if (setter != null)
- setter.IsGenerated = false;
+ setter.GenerationKind = GenerationKind.Internal;
}
}
diff --git a/src/Generator/Passes/GetterSetterToPropertyPass.cs b/src/Generator/Passes/GetterSetterToPropertyPass.cs
index d6bc25d8..d2d68013 100644
--- a/src/Generator/Passes/GetterSetterToPropertyPass.cs
+++ b/src/Generator/Passes/GetterSetterToPropertyPass.cs
@@ -95,7 +95,7 @@ namespace CppSharp.Passes
prop.Access = method.Access;
// Do not generate the original method now that we know it is a getter.
- method.IsGenerated = false;
+ method.GenerationKind = GenerationKind.Internal;
Driver.Diagnostics.Debug("Getter created: {0}::{1}", @class.Name, name);
@@ -111,8 +111,8 @@ namespace CppSharp.Passes
prop.SetMethod = method;
prop.Access = method.Access;
- // Ignore the original method now that we know it is a setter.
- method.IsGenerated = false;
+ // Ignore the original method now that we know it is a setter.
+ method.GenerationKind = GenerationKind.Internal;
Driver.Diagnostics.Debug("Setter created: {0}::{1}", @class.Name, name);
diff --git a/src/Generator/Passes/MoveFunctionToClassPass.cs b/src/Generator/Passes/MoveFunctionToClassPass.cs
index b3896c89..67fdf4e8 100644
--- a/src/Generator/Passes/MoveFunctionToClassPass.cs
+++ b/src/Generator/Passes/MoveFunctionToClassPass.cs
@@ -13,7 +13,7 @@ namespace CppSharp.Passes
if (!VisitDeclaration(function))
return false;
- if (function.Ignore || function.Namespace is Class)
+ if (!function.IsGenerated || function.Namespace is Class)
return false;
var @class = FindClassToMoveFunctionTo(function.Namespace);
diff --git a/src/Generator/Passes/MoveOperatorToClassPass.cs b/src/Generator/Passes/MoveOperatorToClassPass.cs
index eddeadf1..c4f9e283 100644
--- a/src/Generator/Passes/MoveOperatorToClassPass.cs
+++ b/src/Generator/Passes/MoveOperatorToClassPass.cs
@@ -12,7 +12,7 @@ namespace CppSharp.Passes
public override bool VisitFunctionDecl(Function function)
{
- if (function.Ignore || !function.IsOperator)
+ if (!function.IsGenerated || !function.IsOperator)
return false;
Class @class = null;
diff --git a/src/Generator/Passes/MultipleInheritancePass.cs b/src/Generator/Passes/MultipleInheritancePass.cs
index 712bb5ef..716aa8fb 100644
--- a/src/Generator/Passes/MultipleInheritancePass.cs
+++ b/src/Generator/Passes/MultipleInheritancePass.cs
@@ -67,13 +67,13 @@ namespace CppSharp.Passes
select new BaseClassSpecifier { Type = new TagType(i) });
@interface.Methods.AddRange(
- from m in @base.Methods
- where !m.IsConstructor && !m.IsDestructor && !m.IsStatic && !m.Ignore && !m.IsOperator
+ from m in @base.Methods
+ where !m.IsConstructor && !m.IsDestructor && !m.IsStatic && m.IsDeclared && !m.IsOperator
select new Method(m) { Namespace = @interface });
@interface.Properties.AddRange(
from property in @base.Properties
- where !property.Ignore
+ where property.IsDeclared
select new Property(property) { Namespace = @interface });
@interface.Fields.AddRange(@base.Fields);
@@ -112,8 +112,8 @@ namespace CppSharp.Passes
IsVirtual = false,
IsOverride = false
};
- var rootBaseMethod = @class.GetRootBaseMethod(method, true);
- if (rootBaseMethod != null && !rootBaseMethod.Ignore)
+ var rootBaseMethod = @class.GetRootBaseMethod(method, true);
+ if (rootBaseMethod != null && rootBaseMethod.IsDeclared)
impl.ExplicitInterfaceImpl = @interface;
@class.Methods.Add(impl);
}
@@ -126,8 +126,8 @@ namespace CppSharp.Passes
foreach (var property in @interface.Properties.Where(p => p.Name != Helpers.InstanceIdentifier))
{
var impl = new Property(property) { Namespace = @class };
- var rootBaseProperty = @class.GetRootBaseProperty(property, true);
- if (rootBaseProperty != null && !rootBaseProperty.Ignore)
+ var rootBaseProperty = @class.GetRootBaseProperty(property, true);
+ if (rootBaseProperty != null && rootBaseProperty.IsDeclared)
impl.ExplicitInterfaceImpl = @interface;
@class.Properties.Add(impl);
}
diff --git a/src/Generator/Passes/ResolveIncompleteDeclsPass.cs b/src/Generator/Passes/ResolveIncompleteDeclsPass.cs
index 1f910c29..5f94a0e0 100644
--- a/src/Generator/Passes/ResolveIncompleteDeclsPass.cs
+++ b/src/Generator/Passes/ResolveIncompleteDeclsPass.cs
@@ -9,7 +9,7 @@ namespace CppSharp.Passes
if (AlreadyVisited(decl))
return false;
- return !decl.Ignore;
+ return decl.IsGenerated;
}
public override bool VisitClassDecl(Class @class)
@@ -25,7 +25,7 @@ namespace CppSharp.Passes
if (@class.CompleteDeclaration == null)
{
- @class.IsGenerated = false;
+ @class.GenerationKind = GenerationKind.Internal;
Driver.Diagnostics.Debug("Unresolved declaration: {0}",
@class.Name);
}
@@ -51,7 +51,7 @@ namespace CppSharp.Passes
if (@enum.CompleteDeclaration == null)
{
- @enum.IsGenerated = false;
+ @enum.GenerationKind = GenerationKind.Internal;
Driver.Diagnostics.EmitWarning(DiagnosticId.UnresolvedDeclaration,
"Unresolved declaration: {0}", @enum.Name);
}