Browse Source

Replaced declaration IgnoreFlags by GenerationKind. Added methods IsInternal and IsDeclared to declaration. Replaced IsGenerated = true by GeneratioKind = GeneratioKind.Internal. Deprecated Ignore, replace Ignore set by ExplicityIgnored, replace Ignore get by IsGenerated, IsInternal or IsDeclared.

Conflicts:
	src/Generator/Passes/CheckOperatorsOverloads.cs
pull/228/merge
marcos henrich 11 years ago committed by triton
parent
commit
3f96bdbfe3
  1. 2
      src/AST/Class.cs
  2. 2
      src/AST/ClassExtensions.cs
  3. 2
      src/AST/ClassLayout.cs
  4. 105
      src/AST/Declaration.cs
  5. 4
      src/AST/Namespace.cs
  6. 12
      src/AST/TranslationUnit.cs
  7. 2
      src/CppParser/Bindings/ParserGen.cs
  8. 8
      src/Generator/AST/Utils.cs
  9. 2
      src/Generator/Generator.cs
  10. 30
      src/Generator/Generators/CLI/CLIHeadersTemplate.cs
  11. 4
      src/Generator/Generators/CLI/CLIMarshal.cs
  12. 30
      src/Generator/Generators/CLI/CLISourcesTemplate.cs
  13. 4
      src/Generator/Generators/CLI/CLITypeReferences.cs
  14. 2
      src/Generator/Generators/CSharp/CSharpMarshal.cs
  15. 54
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs
  16. 1
      src/Generator/Library.cs
  17. 2
      src/Generator/Passes/CheckAmbiguousFunctions.cs
  18. 2
      src/Generator/Passes/CheckDuplicatedNamesPass.cs
  19. 4
      src/Generator/Passes/CheckIgnoredDecls.cs
  20. 3
      src/Generator/Passes/CheckMacrosPass.cs
  21. 11
      src/Generator/Passes/CheckOperatorsOverloads.cs
  22. 4
      src/Generator/Passes/CheckStaticClass.cs
  23. 7
      src/Generator/Passes/CleanUnitPass.cs
  24. 2
      src/Generator/Passes/FunctionToInstanceMethodPass.cs
  25. 2
      src/Generator/Passes/FunctionToStaticMethodPass.cs
  26. 2
      src/Generator/Passes/GenerateInlinesCodePass.cs
  27. 6
      src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs
  28. 4
      src/Generator/Passes/GetterSetterToPropertyPass.cs
  29. 2
      src/Generator/Passes/MoveFunctionToClassPass.cs
  30. 2
      src/Generator/Passes/MoveOperatorToClassPass.cs
  31. 8
      src/Generator/Passes/MultipleInheritancePass.cs
  32. 6
      src/Generator/Passes/ResolveIncompleteDeclsPass.cs

2
src/AST/Class.cs

@ -149,7 +149,7 @@ namespace CppSharp.AST @@ -149,7 +149,7 @@ namespace CppSharp.AST
{
foreach (var @base in Bases)
{
if (@base.IsClass && !@base.Class.ExplicityIgnored)
if (@base.IsClass && @base.Class.IsDeclared)
return @base.Class;
}

2
src/AST/ClassExtensions.cs

@ -85,7 +85,7 @@ namespace CppSharp.AST @@ -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)

2
src/AST/ClassLayout.cs

@ -43,7 +43,7 @@ namespace CppSharp.AST @@ -43,7 +43,7 @@ namespace CppSharp.AST
get
{
return Method != null &&
Method.Ignore &&
!Method.IsDeclared &&
((Class) Method.Namespace).GetPropertyByConstituentMethod(Method) == null;
}
}

105
src/AST/Declaration.cs

@ -25,13 +25,27 @@ namespace CppSharp.AST @@ -25,13 +25,27 @@ namespace CppSharp.AST
string Mangled { get; set; }
}
[Flags]
public enum IgnoreFlags
/// <summary>
/// Kind of the generated declaration
/// </summary>
public enum GenerationKind
{
None = 0,
Generation = 1 << 0,
Processing = 1 << 1,
Explicit = 1 << 2
/// <summary>
// Declaration is not generated.
/// </summary>
None,
/// <summary>
/// Declaration is generated.
/// </summary>
Generate,
/// <summary>
/// Declaration is generated to be used internally.
/// </summary>
Internal,
/// <summary>
/// Declaration was already generated in a linked assembly.
/// </summary>
Link,
}
/// <summary>
@ -172,65 +186,71 @@ namespace CppSharp.AST @@ -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
/// <summary>
/// Whether the declaration should be generated.
/// </summary>
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
/// <summary>
/// Whether the declaration internal bindings should be generated.
/// </summary>
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
/// <summary>
/// Whether a binded version of this declaration is available.
/// </summary>
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 @@ -264,7 +284,6 @@ namespace CppSharp.AST
protected Declaration()
{
Access = AccessSpecifier.Public;
IgnoreFlags = IgnoreFlags.None;
ExcludeFromPasses = new HashSet<System.Type>();
PreprocessedEntities = new List<PreprocessedEntity>();
Attributes = new List<Attribute>();
@ -283,7 +302,7 @@ namespace CppSharp.AST @@ -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;

4
src/AST/Namespace.cs

@ -336,7 +336,7 @@ namespace CppSharp.AST @@ -336,7 +336,7 @@ namespace CppSharp.AST
{
get
{
Predicate<Declaration> pred = (t => !t.Ignore);
Predicate<Declaration> pred = (t => t.IsGenerated);
return Enums.Exists(pred) || HasFunctions || Typedefs.Exists(pred)
|| Classes.Any() || Namespaces.Exists(n => n.HasDeclarations);
}
@ -346,7 +346,7 @@ namespace CppSharp.AST @@ -346,7 +346,7 @@ namespace CppSharp.AST
{
get
{
Predicate<Declaration> pred = (t => !t.Ignore);
Predicate<Declaration> pred = (t => t.IsGenerated);
return Functions.Exists(pred) || Namespaces.Exists(n => n.HasFunctions);
}
}

12
src/AST/TranslationUnit.cs

@ -24,18 +24,6 @@ namespace CppSharp.AST @@ -24,18 +24,6 @@ namespace CppSharp.AST
/// Contains the macros present in the unit.
public List<MacroDefinition> 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 != "<invalid>"; } }

2
src/CppParser/Bindings/ParserGen.cs

@ -145,7 +145,7 @@ namespace CppSharp @@ -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;

8
src/Generator/AST/Utils.cs

@ -9,7 +9,7 @@ namespace CppSharp.AST @@ -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 @@ -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 @@ -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 @@ -65,7 +65,7 @@ namespace CppSharp.AST
if (field.Access == AccessSpecifier.Private)
return true;
return field.Ignore;
return !field.IsGenerated;
}
}

2
src/Generator/Generator.cs

@ -68,7 +68,7 @@ namespace CppSharp.Generators @@ -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)

30
src/Generator/Generators/CLI/CLIHeadersTemplate.cs

@ -69,7 +69,7 @@ namespace CppSharp.Generators.CLI @@ -69,7 +69,7 @@ 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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);

4
src/Generator/Generators/CLI/CLIMarshal.cs

@ -618,14 +618,14 @@ namespace CppSharp.Generators.CLI @@ -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);

30
src/Generator/Generators/CLI/CLISourcesTemplate.cs

@ -86,7 +86,7 @@ namespace CppSharp.Generators.CLI @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -806,7 +806,7 @@ namespace CppSharp.Generators.CLI
public void GenerateFunction(Function function, DeclarationContext @namespace)
{
if (function.Ignore)
if (!function.IsGenerated)
return;
GenerateDeclarationCommon(function);

4
src/Generator/Generators/CLI/CLITypeReferences.cs

@ -115,7 +115,7 @@ namespace CppSharp.Generators.CLI @@ -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 @@ -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)

2
src/Generator/Generators/CSharp/CSharpMarshal.cs

@ -268,7 +268,7 @@ namespace CppSharp.Generators.CSharp @@ -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);
}

54
src/Generator/Generators/CSharp/CSharpTextTemplate.cs

@ -204,7 +204,7 @@ namespace CppSharp.Generators.CSharp @@ -204,7 +204,7 @@ 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);
@ -242,7 +242,7 @@ namespace CppSharp.Generators.CSharp @@ -242,7 +242,7 @@ 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);
}
@ -252,7 +252,7 @@ namespace CppSharp.Generators.CSharp @@ -252,7 +252,7 @@ namespace CppSharp.Generators.CSharp
foreach (var function in context.Functions)
{
if (function.Ignore) continue;
if (!function.IsGenerated) continue;
GenerateFunction(function);
}
@ -263,7 +263,7 @@ namespace CppSharp.Generators.CSharp @@ -263,7 +263,7 @@ namespace CppSharp.Generators.CSharp
foreach (var @event in context.Events)
{
if (@event.Ignore) continue;
if (!@event.IsGenerated) continue;
GenerateEvent(@event);
}
@ -350,7 +350,7 @@ namespace CppSharp.Generators.CSharp @@ -350,7 +350,7 @@ namespace CppSharp.Generators.CSharp
GenerateClassInternals(@class);
GenerateDeclContext(@class);
if (@class.Ignore || @class.IsDependent)
if (!@class.IsGenerated || @class.IsDependent)
goto exit;
if (ShouldGenerateClassNativeField(@class))
@ -404,7 +404,7 @@ namespace CppSharp.Generators.CSharp @@ -404,7 +404,7 @@ namespace CppSharp.Generators.CSharp
private void GenerateInterface(Class @class)
{
if (@class.Ignore || @class.IsIncomplete)
if (!@class.IsGenerated || @class.IsIncomplete)
return;
PushBlock(CSharpBlockKind.Interface);
@ -433,7 +433,7 @@ namespace CppSharp.Generators.CSharp @@ -433,7 +433,7 @@ namespace CppSharp.Generators.CSharp
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;
@ -596,7 +596,7 @@ namespace CppSharp.Generators.CSharp @@ -596,7 +596,7 @@ namespace CppSharp.Generators.CSharp
{
foreach (var @base in @class.Bases)
{
if (!@base.IsClass || @base.Class.Ignore)
if (!@base.IsClass || !@base.Class.IsGenerated)
continue;
GenerateStructMarshalingProperties(@base.Class);
@ -605,7 +605,7 @@ namespace CppSharp.Generators.CSharp @@ -605,7 +605,7 @@ 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;
if (!property.IsGenerated || property.Field == null) continue;
var nativeField = string.Format("{0}->{1}",
Generator.GeneratedIdentifier("ptr"),
@ -647,7 +647,7 @@ namespace CppSharp.Generators.CSharp @@ -647,7 +647,7 @@ namespace CppSharp.Generators.CSharp
{
foreach (var @base in @class.Bases)
{
if (!@base.IsClass || @base.Class.Ignore)
if (!@base.IsClass || !@base.Class.IsGenerated)
continue;
var baseClass = @base.Class;
@ -656,7 +656,7 @@ namespace CppSharp.Generators.CSharp @@ -656,7 +656,7 @@ 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 @@ -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;
}
@ -725,7 +725,7 @@ namespace CppSharp.Generators.CSharp @@ -725,7 +725,7 @@ namespace CppSharp.Generators.CSharp
if (@class.IsUnion)
WriteLine("[StructLayout(LayoutKind.Explicit)]");
Write(@class.Ignore ? "internal " : Helpers.GetAccess(@class.Access));
Write(!@class.IsGenerated ? "internal " : Helpers.GetAccess(@class.Access));
Write("unsafe ");
if (Driver.Options.GenerateAbstractImpls && @class.IsAbstract)
@ -739,9 +739,9 @@ namespace CppSharp.Generators.CSharp @@ -739,9 +739,9 @@ namespace CppSharp.Generators.CSharp
var bases = new List<string>();
var needsBase = @class.HasBaseClass && !@class.IsValueType && !@class.Ignore
var needsBase = @class.HasBaseClass && !@class.IsValueType && @class.IsGenerated
&& !@class.Bases[0].Class.IsValueType
&& !@class.Bases[0].Class.Ignore;
&& @class.Bases[0].Class.IsGenerated;
if (needsBase)
{
@ -751,7 +751,7 @@ namespace CppSharp.Generators.CSharp @@ -751,7 +751,7 @@ namespace CppSharp.Generators.CSharp
select QualifiedIdentifier(@base.Class));
}
if (!@class.Ignore)
if (@class.IsGenerated)
{
if (@class.IsRefType)
bases.Add("IDisposable");
@ -771,7 +771,7 @@ namespace CppSharp.Generators.CSharp @@ -771,7 +771,7 @@ 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) ||
if ((!Driver.TypeDatabase.FindTypeMap(@base.Type, out typeMap) && !@base.Class.IsGenerated) ||
@base.Class.OriginalClass == @class)
continue;
@ -807,12 +807,12 @@ namespace CppSharp.Generators.CSharp @@ -807,12 +807,12 @@ namespace CppSharp.Generators.CSharp
if (field.Expression != null)
{
var fieldValuePrinted = field.Expression.CSharpValue(ExpressionPrinter);
Write("{0} {1} {2} = {3};", field.Ignore ? "internal" : "public",
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);
}
@ -1168,7 +1168,7 @@ namespace CppSharp.Generators.CSharp @@ -1168,7 +1168,7 @@ namespace CppSharp.Generators.CSharp
{
foreach (var variable in @class.Variables)
{
if (variable.Ignore) continue;
if (!variable.IsGenerated) continue;
if (variable.Access != AccessSpecifier.Public)
continue;
@ -1183,7 +1183,7 @@ namespace CppSharp.Generators.CSharp @@ -1183,7 +1183,7 @@ namespace CppSharp.Generators.CSharp
{
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);
}
@ -1194,7 +1194,7 @@ namespace CppSharp.Generators.CSharp @@ -1194,7 +1194,7 @@ 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())
{
@ -1514,7 +1514,7 @@ namespace CppSharp.Generators.CSharp @@ -1514,7 +1514,7 @@ namespace CppSharp.Generators.CSharp
for (int i = 0; i < method.Parameters.Count; i++)
{
var param = method.Parameters[i];
if (param.Ignore)
if (!param.IsGenerated)
continue;
if (param.Kind == ParameterKind.IndirectReturnType)
@ -1957,7 +1957,7 @@ namespace CppSharp.Generators.CSharp @@ -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)
{
@ -2529,7 +2529,7 @@ namespace CppSharp.Generators.CSharp @@ -2529,7 +2529,7 @@ namespace CppSharp.Generators.CSharp
public bool GenerateTypedef(TypedefDecl typedef)
{
if (typedef.Ignore)
if (!typedef.IsGenerated)
return false;
GenerateDeclarationCommon(typedef);
@ -2563,7 +2563,7 @@ namespace CppSharp.Generators.CSharp @@ -2563,7 +2563,7 @@ 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 @@ -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)

1
src/Generator/Library.cs

@ -334,7 +334,6 @@ namespace CppSharp @@ -334,7 +334,6 @@ namespace CppSharp
foreach (var unit in units)
{
unit.IsGenerated = false;
unit.ExplicityIgnored = true;
}
}

2
src/Generator/Passes/CheckAmbiguousFunctions.cs

@ -40,7 +40,7 @@ namespace CppSharp.Passes @@ -40,7 +40,7 @@ namespace CppSharp.Passes
if (overload == function) continue;
if (overload.Ignore) continue;
if (!overload.IsGenerated) continue;
if (!CheckDefaultParameters(function, overload))
continue;

2
src/Generator/Passes/CheckDuplicatedNamesPass.cs

@ -180,7 +180,7 @@ namespace CppSharp.Passes @@ -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))

4
src/Generator/Passes/CheckIgnoredDecls.cs

@ -168,7 +168,7 @@ namespace CppSharp.Passes @@ -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 @@ -199,7 +199,7 @@ namespace CppSharp.Passes
continue;
ignoredBase = @base;
isIgnored |= @base.Ignore
isIgnored |= !@base.IsDeclared
|| HasIgnoredBaseClass(@override, @base, out ignoredBase);
if (isIgnored)

3
src/Generator/Passes/CheckMacrosPass.cs

@ -74,7 +74,7 @@ namespace CppSharp.Passes @@ -74,7 +74,7 @@ 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)
@ -83,7 +83,6 @@ namespace CppSharp.Passes @@ -83,7 +83,6 @@ namespace CppSharp.Passes
if (expansions.Any(e => e.Text == Prefix + "_IGNORE_FILE"))
{
unit.IsGenerated = false;
unit.ExplicityIgnored = true;
}

11
src/Generator/Passes/CheckOperatorsOverloads.cs

@ -47,7 +47,7 @@ namespace CppSharp.Passes @@ -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))
{
@ -116,7 +116,8 @@ namespace CppSharp.Passes @@ -116,7 +116,8 @@ namespace CppSharp.Passes
property.Parameters.AddRange(@operator.Parameters);
@class.Properties.Add(property);
@operator.IsGenerated = false;
@operator.GenerationKind = GenerationKind.Internal;
}
static void HandleMissingOperatorOverloadPair(Class @class, CXXOperatorKind op1,
@ -129,7 +130,7 @@ namespace CppSharp.Passes @@ -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 @@ -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;

4
src/Generator/Passes/CheckStaticClass.cs

@ -63,10 +63,10 @@ namespace CppSharp.Passes @@ -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;
}

7
src/Generator/Passes/CleanUnitPass.cs

@ -13,8 +13,8 @@ namespace CppSharp.Passes @@ -13,8 +13,8 @@ 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.
@ -53,7 +53,8 @@ namespace CppSharp.Passes @@ -53,7 +53,8 @@ namespace CppSharp.Passes
return includePath.Replace('\\', '/');
}
bool IsTranslationGenerated(TranslationUnit translationUnit)
bool IsExternalDeclaration(TranslationUnit translationUnit)
{
if (DriverOptions.NoGenIncludeDirs == null)
return false;

2
src/Generator/Passes/FunctionToInstanceMethodPass.cs

@ -18,7 +18,7 @@ namespace CppSharp.Passes @@ -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.

2
src/Generator/Passes/FunctionToStaticMethodPass.cs

@ -14,7 +14,7 @@ namespace CppSharp.Passes @@ -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);

2
src/Generator/Passes/GenerateInlinesCodePass.cs

@ -81,7 +81,7 @@ namespace CppSharp.Passes @@ -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"))

6
src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs

@ -70,7 +70,7 @@ namespace CppSharp.Passes @@ -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 @@ -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;
}
}

4
src/Generator/Passes/GetterSetterToPropertyPass.cs

@ -95,7 +95,7 @@ namespace CppSharp.Passes @@ -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);
@ -112,7 +112,7 @@ namespace CppSharp.Passes @@ -112,7 +112,7 @@ namespace CppSharp.Passes
prop.Access = method.Access;
// Ignore the original method now that we know it is a setter.
method.IsGenerated = false;
method.GenerationKind = GenerationKind.Internal;
Driver.Diagnostics.Debug("Setter created: {0}::{1}", @class.Name, name);

2
src/Generator/Passes/MoveFunctionToClassPass.cs

@ -13,7 +13,7 @@ namespace CppSharp.Passes @@ -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);

2
src/Generator/Passes/MoveOperatorToClassPass.cs

@ -12,7 +12,7 @@ namespace CppSharp.Passes @@ -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;

8
src/Generator/Passes/MultipleInheritancePass.cs

@ -68,12 +68,12 @@ namespace CppSharp.Passes @@ -68,12 +68,12 @@ namespace CppSharp.Passes
@interface.Methods.AddRange(
from m in @base.Methods
where !m.IsConstructor && !m.IsDestructor && !m.IsStatic && !m.Ignore && !m.IsOperator
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);
@ -113,7 +113,7 @@ namespace CppSharp.Passes @@ -113,7 +113,7 @@ namespace CppSharp.Passes
IsOverride = false
};
var rootBaseMethod = @class.GetRootBaseMethod(method, true);
if (rootBaseMethod != null && !rootBaseMethod.Ignore)
if (rootBaseMethod != null && rootBaseMethod.IsDeclared)
impl.ExplicitInterfaceImpl = @interface;
@class.Methods.Add(impl);
}
@ -127,7 +127,7 @@ namespace CppSharp.Passes @@ -127,7 +127,7 @@ namespace CppSharp.Passes
{
var impl = new Property(property) { Namespace = @class };
var rootBaseProperty = @class.GetRootBaseProperty(property, true);
if (rootBaseProperty != null && !rootBaseProperty.Ignore)
if (rootBaseProperty != null && rootBaseProperty.IsDeclared)
impl.ExplicitInterfaceImpl = @interface;
@class.Properties.Add(impl);
}

6
src/Generator/Passes/ResolveIncompleteDeclsPass.cs

@ -9,7 +9,7 @@ namespace CppSharp.Passes @@ -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 @@ -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 @@ -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);
}

Loading…
Cancel
Save