Browse Source

Merge pull request #178 from ddobrev/master

Fixed the renaming pass to consider forward declarations and function type defs
pull/179/head
João Matos 12 years ago
parent
commit
da46d15b25
  1. 6
      src/Generator/Passes/RenamePass.cs
  2. 3
      tests/CSharpTemp/CSharpTemp.h

6
src/Generator/Passes/RenamePass.cs

@ -85,11 +85,15 @@ namespace CppSharp.Passes
private static bool AreThereConflicts(Declaration decl, string newName) private static bool AreThereConflicts(Declaration decl, string newName)
{ {
var declarations = new List<Declaration>(); var declarations = new List<Declaration>();
declarations.AddRange(decl.Namespace.Classes); declarations.AddRange(decl.Namespace.Classes.Where(c => !c.IsIncomplete));
declarations.AddRange(decl.Namespace.Enums); declarations.AddRange(decl.Namespace.Enums);
declarations.AddRange(decl.Namespace.Events); declarations.AddRange(decl.Namespace.Events);
declarations.AddRange(decl.Namespace.Functions); declarations.AddRange(decl.Namespace.Functions);
declarations.AddRange(decl.Namespace.Variables); declarations.AddRange(decl.Namespace.Variables);
declarations.AddRange(from typedefDecl in decl.Namespace.Typedefs
let pointerType = typedefDecl.Type.Desugar() as PointerType
where pointerType != null && pointerType.Pointee is FunctionType
select typedefDecl);
var result = declarations.Any(d => d != decl && d.Name == newName); var result = declarations.Any(d => d != decl && d.Name == newName);
if (result) if (result)

3
tests/CSharpTemp/CSharpTemp.h

@ -51,6 +51,9 @@ public:
int takesQux(const Qux& qux); int takesQux(const Qux& qux);
Qux returnQux(); Qux returnQux();
typedef bool (*FunctionTypedef)(const void *);
FunctionTypedef functionTypedef;
}; };
struct QArrayData struct QArrayData

Loading…
Cancel
Save