From b23c1f97f2ef86868b68b7d129bd99b44b505549 Mon Sep 17 00:00:00 2001 From: triton Date: Wed, 8 Jan 2014 18:14:38 +0000 Subject: [PATCH] Fixed binding problem with string vector in NativeLibrary. Re-generated the bindings. --- src/CppParser/AST.h | 7 ++++++- src/CppParser/Bindings/CLI/AST.cpp | 1 + src/CppParser/Bindings/CSharp/AST.cs | 12 ++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/CppParser/AST.h b/src/CppParser/AST.h index f0ed4d07..9566a150 100644 --- a/src/CppParser/AST.h +++ b/src/CppParser/AST.h @@ -25,6 +25,11 @@ type get##name (unsigned i) { return name[i]; } \ unsigned get##name##Count () { return name.size(); } +#define VECTOR_STRING(name) \ + std::vector name; \ + const char* get##name (unsigned i) { return name[i].c_str(); } \ + unsigned get##name##Count () { return name.size(); } + #define STRING(name) \ std::string name; \ const char* get##name() { return name.c_str(); } \ @@ -614,7 +619,7 @@ struct CS_API TranslationUnit : public Namespace struct CS_API NativeLibrary { STRING(FileName) - VECTOR(std::string, Symbols) + VECTOR_STRING(Symbols) }; struct CS_API ASTContext diff --git a/src/CppParser/Bindings/CLI/AST.cpp b/src/CppParser/Bindings/CLI/AST.cpp index a9efa616..8a6bc0f5 100644 --- a/src/CppParser/Bindings/CLI/AST.cpp +++ b/src/CppParser/Bindings/CLI/AST.cpp @@ -2501,6 +2501,7 @@ CppSharp::Parser::AST::NativeLibrary::NativeLibrary(System::IntPtr native) System::String^ CppSharp::Parser::AST::NativeLibrary::getSymbols(unsigned int i) { auto __ret = ((::CppSharp::CppParser::AST::NativeLibrary*)NativePtr)->getSymbols(i); + if (__ret == nullptr) return nullptr; return clix::marshalString(__ret); } diff --git a/src/CppParser/Bindings/CSharp/AST.cs b/src/CppParser/Bindings/CSharp/AST.cs index ee154e05..e1e9e08f 100644 --- a/src/CppParser/Bindings/CSharp/AST.cs +++ b/src/CppParser/Bindings/CSharp/AST.cs @@ -5820,6 +5820,11 @@ namespace CppSharp EntryPoint="??0NativeLibrary@AST@CppParser@CppSharp@@QAE@ABU0123@@Z")] internal static extern global::System.IntPtr NativeLibrary_2(global::System.IntPtr instance, global::System.IntPtr _0); + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?getSymbols@NativeLibrary@AST@CppParser@CppSharp@@QAEPBDI@Z")] + internal static extern global::System.IntPtr getSymbols_0(global::System.IntPtr instance, uint i); + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="?getFileName@NativeLibrary@AST@CppParser@CppSharp@@QAEPBDXZ")] @@ -5883,6 +5888,13 @@ namespace CppSharp Marshal.FreeHGlobal(__Instance); } + public string getSymbols(uint i) + { + var __ret = Internal.getSymbols_0(__Instance, i); + if (__ret == global::System.IntPtr.Zero) return null; + return Marshal.PtrToStringAnsi(__ret); + } + public string FileName { get