Browse Source

Fixed code generation for global functions (and added a test).

pull/224/head
triton 12 years ago
parent
commit
ee6baa38dd
  1. 10
      src/Generator/Generators/CLI/CLITextTemplate.cs
  2. 2
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs
  3. 7
      tests/Basic/Basic.Tests.cs
  4. 6
      tests/Basic/Basic.h

10
src/Generator/Generators/CLI/CLITextTemplate.cs

@ -81,9 +81,15 @@ namespace CppSharp.Generators.CLI
public string QualifiedIdentifier(Declaration decl) public string QualifiedIdentifier(Declaration decl)
{ {
var ids = new List<string>();
if (Options.GenerateLibraryNamespace) if (Options.GenerateLibraryNamespace)
return string.Format("{0}::{1}", Options.OutputNamespace, decl.QualifiedName); ids.Add(Options.OutputNamespace);
return string.Format("{0}", decl.QualifiedName);
if (!string.IsNullOrWhiteSpace(decl.QualifiedName))
ids.Add(decl.QualifiedName);
return string.Join("::", ids);
} }
public string GetMethodName(Method method) public string GetMethodName(Method method)

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

@ -231,7 +231,7 @@ namespace CppSharp.Generators.CSharp
if (context.HasFunctions) if (context.HasFunctions)
{ {
PushBlock(CSharpBlockKind.Functions); PushBlock(CSharpBlockKind.Functions);
WriteLine("public unsafe partial class {0}{1}", Options.OutputNamespace, WriteLine("public unsafe partial class {0}",
TranslationUnit.FileNameWithoutExtension); TranslationUnit.FileNameWithoutExtension);
WriteStartBraceIndent(); WriteStartBraceIndent();

7
tests/Basic/Basic.Tests.cs

@ -234,5 +234,12 @@ public class BasicTests : GeneratorTestFixture
Assert.AreEqual(2, (int)@class); Assert.AreEqual(2, (int)@class);
Assert.AreEqual(3, (short)@class); Assert.AreEqual(3, (short)@class);
} }
[Test]
public void TestFunctions()
{
var ret = Basic.basic.Function();
Assert.That(ret, Is.EqualTo(5));
}
} }

6
tests/Basic/Basic.h

@ -334,3 +334,9 @@ public:
operator int() { return 2; } operator int() { return 2; }
operator short() { return 3; } operator short() { return 3; }
}; };
// Tests global static function generation
DLL_API int Function()
{
return 5;
}

Loading…
Cancel
Save