Browse Source

Added renaming of variables.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/401/head
Dimitar Dobrev 11 years ago
parent
commit
3d72c2fca4
  1. 3
      src/AST/ASTVisitor.cs
  2. 6
      src/Generator/Passes/CleanInvalidDeclNamesPass.cs
  3. 16
      src/Generator/Passes/RenamePass.cs
  4. 6
      tests/Basic/Basic.Tests.cs
  5. 1
      tests/Basic/Basic.h
  6. 6
      tests/CSharpTemp/CSharpTemp.Tests.cs
  7. 2
      tests/CSharpTemp/CSharpTemp.cs
  8. 2
      tests/CSharpTemp/CSharpTemp.h

3
src/AST/ASTVisitor.cs

@ -346,6 +346,9 @@ namespace CppSharp.AST @@ -346,6 +346,9 @@ namespace CppSharp.AST
public virtual bool VisitVariableDecl(Variable variable)
{
if (!VisitDeclaration(variable))
return false;
return variable.Type.Visit(this, variable.QualifiedType.Qualifiers);
}

6
src/Generator/Passes/CleanInvalidDeclNamesPass.cs

@ -123,12 +123,6 @@ namespace CppSharp.Passes @@ -123,12 +123,6 @@ namespace CppSharp.Passes
return base.VisitTypedefDecl(typedef);
}
public override bool VisitVariableDecl(Variable variable)
{
variable.Name = CheckName(variable.Name);
return base.VisitVariableDecl(variable);
}
private static void CheckEnumName(Enumeration @enum)
{
// If we still do not have a valid name, then try to guess one

16
src/Generator/Passes/RenamePass.cs

@ -55,6 +55,7 @@ namespace CppSharp.Passes @@ -55,6 +55,7 @@ namespace CppSharp.Passes
if (decl is Event) return true;
if (decl is TypedefDecl) return true;
if (decl is Namespace && !(decl is TranslationUnit)) return true;
if (decl is Variable) return true;
return false;
}
@ -213,6 +214,14 @@ namespace CppSharp.Passes @@ -213,6 +214,14 @@ namespace CppSharp.Passes
return base.VisitEvent(@event);
}
public override bool VisitVariableDecl(Variable variable)
{
if (!Targets.HasFlag(RenameTargets.Variable))
return false;
return base.VisitVariableDecl(variable);
}
}
[Flags]
@ -228,7 +237,8 @@ namespace CppSharp.Passes @@ -228,7 +237,8 @@ namespace CppSharp.Passes
Event = 1 << 7,
Property = 1 << 8,
Delegate = 1 << 9,
Any = Function | Method | Parameter | Class | Field | Enum | EnumItem | Event | Property | Delegate,
Variable = 1 << 10,
Any = Function | Method | Parameter | Class | Field | Enum | EnumItem | Event | Property | Delegate | Variable
}
/// <summary>
@ -311,6 +321,10 @@ namespace CppSharp.Passes @@ -311,6 +321,10 @@ namespace CppSharp.Passes
/// <returns>string</returns>
static string ConvertCaseString(string phrase, RenameCasePattern pattern)
{
// check if it's been renamed to avoid a keyword
if (phrase.StartsWith("@"))
phrase = phrase.Substring(1);
var splittedPhrase = phrase.Split(' ', '-', '.');
var sb = new StringBuilder();

6
tests/Basic/Basic.Tests.cs

@ -483,5 +483,11 @@ public class BasicTests : GeneratorTestFixture @@ -483,5 +483,11 @@ public class BasicTests : GeneratorTestFixture
Assert.IsTrue(differentConstOverloads == new DifferentConstOverloads());
Assert.IsFalse(differentConstOverloads == 5);
}
[Test]
public void TestRenamingVariableNamedAfterKeyword()
{
Assert.AreEqual(10, Foo.@unsafe);
}
}

1
tests/Basic/Basic.h

@ -33,6 +33,7 @@ public: @@ -33,6 +33,7 @@ public:
IgnoredType ignoredType;
int fixedArray[3];
void* ptr;
static const int unsafe = 10;
const char* GetANSI();
// TODO: VC++ does not support char16

6
tests/CSharpTemp/CSharpTemp.Tests.cs

@ -182,4 +182,10 @@ public class CSharpTempTests : GeneratorTestFixture @@ -182,4 +182,10 @@ public class CSharpTempTests : GeneratorTestFixture
Assert.AreEqual(10, structWithPrivateFields.SimplePrivateField);
Assert.AreEqual(5, structWithPrivateFields.ComplexPrivateField.A);
}
[Test]
public void TestRenamingVariable()
{
Assert.AreEqual(5, Foo.Rename);
}
}

2
tests/CSharpTemp/CSharpTemp.cs

@ -95,7 +95,7 @@ namespace CppSharp.Tests @@ -95,7 +95,7 @@ namespace CppSharp.Tests
public override void Postprocess(Driver driver, ASTContext ctx)
{
new CaseRenamePass(
RenameTargets.Function | RenameTargets.Method | RenameTargets.Property | RenameTargets.Delegate,
RenameTargets.Function | RenameTargets.Method | RenameTargets.Property | RenameTargets.Delegate | RenameTargets.Variable,
RenameCasePattern.UpperCamelCase).VisitLibrary(driver.ASTContext);
}

2
tests/CSharpTemp/CSharpTemp.h

@ -10,7 +10,7 @@ public: @@ -10,7 +10,7 @@ public:
int& operator[](int i);
int A;
static int null;
static const int rename = 5;
protected:
int P;

Loading…
Cancel
Save