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