From a4dfeb94be7174d17c0a642634fe2b8aa26d95f6 Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Sun, 7 Aug 2016 21:56:36 +0300 Subject: [PATCH] Moved the marking of supported template specialisations to a pass. This allows custom passes to add other specialisations to support. Signed-off-by: Dimitar Dobrev --- src/AST/ClassExtensions.cs | 26 ---- .../i686-apple-darwin12.4.0/Std-templates.cpp | 98 ++++++++++++- .../CSharp/i686-apple-darwin12.4.0/Std.cs | 56 +++++++- .../i686-pc-win32-msvc/Std-templates.cpp | 92 ++++++++++++- .../Bindings/CSharp/i686-pc-win32-msvc/Std.cs | 129 ++++++++++-------- .../Std-templates.cpp | 98 ++++++++++++- .../CSharp/x86_64-apple-darwin12.4.0/Std.cs | 56 +++++++- .../Std-templates.cpp | 59 +++++++- .../CSharp/x86_64-linux-gnu-cxx11abi/Std.cs | 29 +++- .../CSharp/x86_64-linux-gnu/Std-templates.cpp | 59 +++++++- .../Bindings/CSharp/x86_64-linux-gnu/Std.cs | 38 +++++- .../x86_64-pc-win32-msvc/Std-templates.cpp | 92 ++++++++++++- .../CSharp/x86_64-pc-win32-msvc/Std.cs | 129 ++++++++++-------- src/Generator/Driver.cs | 2 + .../Generators/CLI/CLITypeReferences.cs | 3 +- .../Generators/CSharp/CSharpSources.cs | 57 +++++--- src/Generator/Generators/Template.cs | 4 +- src/Generator/Passes/CheckIgnoredDecls.cs | 12 +- .../Passes/GenerateTemplatesCodePass.cs | 3 +- .../GetterSetterToPropertyAdvancedPass.cs | 2 +- .../Passes/IgnoreSystemDeclarationsPass.cs | 30 +--- ...pportedClassTemplateSpecializationsPass.cs | 63 +++++++++ src/Generator/Types/Std/Stdlib.cs | 9 +- src/Generator/Types/Types.cs | 2 +- 24 files changed, 928 insertions(+), 220 deletions(-) create mode 100644 src/Generator/Passes/MarkSupportedClassTemplateSpecializationsPass.cs diff --git a/src/AST/ClassExtensions.cs b/src/AST/ClassExtensions.cs index b4eaa9fc..25a868a7 100644 --- a/src/AST/ClassExtensions.cs +++ b/src/AST/ClassExtensions.cs @@ -203,31 +203,5 @@ namespace CppSharp.AST { return units.Where(u => u.IsGenerated && (u.HasDeclarations || u.IsSystemHeader) && u.IsValid); } - - public static bool IsSupportedStdSpecialization(this ClassTemplateSpecialization specialization) - { - return IsSupportedStdType(specialization) && - specialization.Arguments[0].Type.Type.IsPrimitiveType(PrimitiveType.Char); - } - - public static bool IsSupportedStdType(this Declaration declaration) - { - return declaration.Namespace != null && - declaration.TranslationUnit.IsSystemHeader && - IsNameSpaceStd(declaration.Namespace) && - supportedStdTypes.Contains(declaration.OriginalName); - } - - private static bool IsNameSpaceStd(DeclarationContext declarationContext) - { - if (declarationContext == null) - return false; - var @namespace = declarationContext as Namespace; - if (@namespace != null && @namespace.IsInline) - return IsNameSpaceStd(declarationContext.Namespace); - return declarationContext.OriginalName == "std"; - } - - private static string[] supportedStdTypes = { "basic_string", "allocator" }; } } \ No newline at end of file diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std-templates.cpp b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std-templates.cpp index 205042ac..5ad43ee5 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std-templates.cpp +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std-templates.cpp @@ -1,4 +1,100 @@ #include template class __declspec(dllexport) std::allocator; -template class __declspec(dllexport) std::basic_string, std::allocator>; \ No newline at end of file +template class __declspec(dllexport) std::basic_string, std::allocator>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>, CppSharp::CppParser::AST::Declaration*>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>>>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__nat>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__nat>>; +template class __declspec(dllexport) std::__type_list, std::__nat>; +template class __declspec(dllexport) std::__type_list>>; +template class __declspec(dllexport) std::__type_list>; +template class __declspec(dllexport) std::__type_list; +template class __declspec(dllexport) std::__type_list>>; +template class __declspec(dllexport) std::__type_list>; +template class __declspec(dllexport) std::__type_list; +template class __declspec(dllexport) std::__tuple_types<>; +template class __declspec(dllexport) std::allocator; +template class __declspec(dllexport) std::allocator; +template class __declspec(dllexport) std::allocator; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer, std::allocator>, std::allocator, std::allocator>>&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::placeholders::__ph<>; \ No newline at end of file diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std.cs index 12db17d3..ff9942d2 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std.cs @@ -6432,6 +6432,15 @@ namespace std } } + + public unsafe partial class rebind + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } namespace allocator_traits { [StructLayout(LayoutKind.Explicit, Size = 0)] @@ -10573,7 +10582,7 @@ namespace std namespace __tree_end_node { [StructLayout(LayoutKind.Explicit, Size = 4)] - public unsafe partial struct Internal_Ptr + public unsafe partial struct Internalc__N_std_N___1_S___tree_end_node_____N_std_N___1_S___tree_node_base___v { [FieldOffset(0)] public global::System.IntPtr __left_; @@ -10887,6 +10896,51 @@ namespace std } } + + public unsafe partial class __long + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial class __short + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial struct __ulx + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial class __raw + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial class __rep + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } namespace __basic_string_common { [StructLayout(LayoutKind.Explicit, Size = 0)] diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std-templates.cpp b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std-templates.cpp index 205042ac..6af880cd 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std-templates.cpp +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std-templates.cpp @@ -1,4 +1,94 @@ #include template class __declspec(dllexport) std::allocator; -template class __declspec(dllexport) std::basic_string, std::allocator>; \ No newline at end of file +template class __declspec(dllexport) std::basic_string, std::allocator>; +template class __declspec(dllexport) std::_Identity; +template class __declspec(dllexport) std::_Identity>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>, CppSharp::CppParser::AST::Declaration*>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::less; +template class __declspec(dllexport) std::_Forced; +template class __declspec(dllexport) std::_Lex_compare_optimize; +template class __declspec(dllexport) std::_String_iter_types; +template class __declspec(dllexport) std::_String_iter_types; +template class __declspec(dllexport) std::_String_iter_types; +template class __declspec(dllexport) std::_String_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types, std::allocator>, unsigned int, int, std::basic_string, std::allocator>*, const std::basic_string, std::allocator>*, std::basic_string, std::allocator>&, const std::basic_string, std::allocator>&>; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Tree_iter_types, std::allocator>, CppSharp::CppParser::AST::Declaration*>, unsigned int, int, std::pair, std::allocator>, CppSharp::CppParser::AST::Declaration*>*, const std::pair, std::allocator>, CppSharp::CppParser::AST::Declaration*>*, std::pair, std::allocator>, CppSharp::CppParser::AST::Declaration*>&, const std::pair, std::allocator>, CppSharp::CppParser::AST::Declaration*>&, std::_Tree_node, std::allocator>, CppSharp::CppParser::AST::Declaration*>, void*>*>; \ No newline at end of file diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std.cs index 68ff0777..2085886f 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std.cs @@ -4317,7 +4317,7 @@ namespace std namespace _Yarn { [StructLayout(LayoutKind.Explicit, Size = 8)] - public unsafe partial struct Internal_char + public unsafe partial struct Internalc__N_std_S__Yarn__C { [FieldOffset(0)] public global::System.IntPtr _Myptr; @@ -4327,7 +4327,7 @@ namespace std } [StructLayout(LayoutKind.Explicit, Size = 8)] - public unsafe partial struct Internal_wchar_t + public unsafe partial struct Internalc__N_std_S__Yarn__W { [FieldOffset(0)] public global::System.IntPtr _Myptr; @@ -4340,301 +4340,301 @@ namespace std namespace _Compressed_pair { [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_char_std__String_val_std__Simple_types_char + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__C___N_std_S__String_val____N_std_S__Simple_types__C_Vb1 { [FieldOffset(0)] internal global::std._String_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_wchar_t_std__String_val_std__Simple_types_wchar_t + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__W___N_std_S__String_val____N_std_S__Simple_types__W_Vb1 { [FieldOffset(0)] internal global::std._String_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_char16_t_std__String_val_std__Simple_types_char16_t + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__q___N_std_S__String_val____N_std_S__Simple_types__q_Vb1 { [FieldOffset(0)] internal global::std._String_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_char32_t_std__String_val_std__Simple_types_char32_t + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__w___N_std_S__String_val____N_std_S__Simple_types__w_Vb1 { [FieldOffset(0)] internal global::std._String_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_PreprocessedEntityPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_PreprocessedEntityPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_PreprocessedEntity___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_BlockContentCommentPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_BlockContentCommentPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_BlockContentComment___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_ParameterPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_ParameterPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Parameter___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_DeclarationPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_DeclarationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_FunctionTemplateSpecializationPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_FunctionTemplateSpecializationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_FunctionTemplateSpecialization___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_TemplateArgument_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_TemplateArgument + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_TemplateArgument___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_FunctionPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_FunctionPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Function___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_TemplatePtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_TemplatePtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Template___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_TypedefDeclPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_TypedefDeclPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_TypedefDecl___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_TypeAliasPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_TypeAliasPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_TypeAlias___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_VariablePtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_VariablePtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Variable___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_FriendPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_FriendPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Friend___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 8)] - public unsafe partial struct Internal_std_less_std_basic_string_char_std_char_traits_char_std_allocator_char_std__Compressed_pair_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S_less____N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C___N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1S1_____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S8__Vb1_Vb1 { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr _Myval2; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S3__Vb1 _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 8)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S3__Vb1 { [FieldOffset(0)] internal global::std._Tree_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_BaseClassSpecifierPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_BaseClassSpecifierPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_BaseClassSpecifier___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_FieldPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_FieldPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Field___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_MethodPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_MethodPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Method___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_AccessSpecifierDeclPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_AccessSpecifierDeclPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_AccessSpecifierDecl___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_VTableComponent_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_VTableComponent + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_VTableComponent___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_VFTableInfo_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_VFTableInfo + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_VFTableInfo___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_LayoutField_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_LayoutField + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_LayoutField___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_LayoutBase_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_LayoutBase + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_LayoutBase___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_ClassPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_ClassPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Class___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_Enumeration_ItemPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_Enumeration_ItemPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Enumeration_S_Item___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_EnumerationPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_EnumerationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Enumeration___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_NamespacePtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_NamespacePtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Namespace___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_std_basic_string_char_std_char_traits_char_std_allocator_char_std__Vector_val_std__Simple_types_std_basic_string_char_std_char_traits_char_std_allocator_char + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_ClassTemplateSpecializationPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_ClassTemplateSpecializationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_ClassTemplateSpecialization___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_ExpressionPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_ExpressionPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Expression___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_VarTemplateSpecializationPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_VarTemplateSpecializationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_VarTemplateSpecialization___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_MacroDefinitionPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_MacroDefinitionPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_MacroDefinition___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_TranslationUnitPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_TranslationUnitPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_TranslationUnit___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_InlineContentCommentPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_InlineContentCommentPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_InlineContentComment___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_BlockCommandComment_Argument_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_BlockCommandComment_Argument + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_BlockCommandComment_S_Argument___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_unsigned_int_std__Vector_val_std__Simple_types_unsigned_int + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__i___N_std_S__Vector_val____N_std_S__Simple_types__i_Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_VerbatimBlockLineCommentPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_VerbatimBlockLineCommentPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_VerbatimBlockLineComment___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_InlineCommandComment_Argument_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_InlineCommandComment_Argument + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_InlineCommandComment_S_Argument___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_HTMLStartTagComment_Attribute_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_HTMLStartTagComment_Attribute + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_HTMLStartTagComment_S_Attribute___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 12)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_ParserDiagnostic_std__Vector_val_std__Simple_types_CppSharp_CppParser_ParserDiagnostic + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_S_ParserDiagnostic___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; @@ -4888,6 +4888,15 @@ namespace std } } + + public unsafe partial class rebind + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } namespace _Wrap_alloc { [StructLayout(LayoutKind.Explicit, Size = 0)] @@ -5969,7 +5978,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std__Wrap_alloc_std_allocator_char_std__String_val_std__Simple_types_char _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__C___N_std_S__String_val____N_std_S__Simple_types__C_Vb1 _Mypair; [SuppressUnmanagedCodeSecurity] [DllImport("Std-templates", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -6048,7 +6057,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std__Wrap_alloc_std_allocator_char_std__String_val_std__Simple_types_char _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__C___N_std_S__String_val____N_std_S__Simple_types__C_Vb1 _Mypair; } } @@ -6238,7 +6247,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_PreprocessedEntityPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_PreprocessedEntityPtr _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_PreprocessedEntity___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 _Mypair; } } @@ -6248,7 +6257,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_PreprocessedEntityPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_PreprocessedEntityPtr _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_PreprocessedEntity___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 _Mypair; } } } @@ -6341,7 +6350,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std_less_std_basic_string_char_std_char_traits_char_std_allocator_char_std__Compressed_pair_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S_less____N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C___N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1S1_____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S8__Vb1_Vb1 _Mypair; } } @@ -6351,7 +6360,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std_less_std_basic_string_char_std_char_traits_char_std_allocator_char_std__Compressed_pair_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S_less____N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C___N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1S1_____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S8__Vb1_Vb1 _Mypair; } @@ -6399,7 +6408,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std_less_std_basic_string_char_std_char_traits_char_std_allocator_char_std__Compressed_pair_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S_less____N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C___N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1S1_____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S8__Vb1_Vb1 _Mypair; } } } @@ -6722,22 +6731,22 @@ namespace std internal global::std._Lockit.Internal _Lock; [FieldOffset(4)] - internal global::std._Yarn.Internal_char _Days; + internal global::std._Yarn.Internalc__N_std_S__Yarn__C _Days; [FieldOffset(12)] - internal global::std._Yarn.Internal_char _Months; + internal global::std._Yarn.Internalc__N_std_S__Yarn__C _Months; [FieldOffset(20)] - internal global::std._Yarn.Internal_wchar_t _W_Days; + internal global::std._Yarn.Internalc__N_std_S__Yarn__W _W_Days; [FieldOffset(28)] - internal global::std._Yarn.Internal_wchar_t _W_Months; + internal global::std._Yarn.Internalc__N_std_S__Yarn__W _W_Months; [FieldOffset(36)] - internal global::std._Yarn.Internal_char _Oldlocname; + internal global::std._Yarn.Internalc__N_std_S__Yarn__C _Oldlocname; [FieldOffset(44)] - internal global::std._Yarn.Internal_char _Newlocname; + internal global::std._Yarn.Internalc__N_std_S__Yarn__C _Newlocname; } } } @@ -6864,7 +6873,7 @@ namespace std public byte _Xparent; [FieldOffset(24)] - internal global::std._Yarn.Internal_char _Name; + internal global::std._Yarn.Internalc__N_std_S__Yarn__C _Name; } } diff --git a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std-templates.cpp b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std-templates.cpp index 205042ac..5ad43ee5 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std-templates.cpp +++ b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std-templates.cpp @@ -1,4 +1,100 @@ #include template class __declspec(dllexport) std::allocator; -template class __declspec(dllexport) std::basic_string, std::allocator>; \ No newline at end of file +template class __declspec(dllexport) std::basic_string, std::allocator>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>, CppSharp::CppParser::AST::Declaration*>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>>>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__type_list, std::__nat>>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__type_list, std::__nat>>>; +template class __declspec(dllexport) std::__type_list, std::__type_list, std::__nat>>; +template class __declspec(dllexport) std::__type_list, std::__nat>; +template class __declspec(dllexport) std::__type_list>>; +template class __declspec(dllexport) std::__type_list>; +template class __declspec(dllexport) std::__type_list; +template class __declspec(dllexport) std::__type_list>>; +template class __declspec(dllexport) std::__type_list>; +template class __declspec(dllexport) std::__type_list; +template class __declspec(dllexport) std::__tuple_types<>; +template class __declspec(dllexport) std::allocator; +template class __declspec(dllexport) std::allocator; +template class __declspec(dllexport) std::allocator; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer, std::allocator>, std::allocator, std::allocator>>&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::__split_buffer&>; +template class __declspec(dllexport) std::placeholders::__ph<>; \ No newline at end of file diff --git a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std.cs b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std.cs index 8a3622a6..52e5386c 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std.cs @@ -8544,6 +8544,15 @@ namespace std } } + + public unsafe partial class rebind + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } namespace allocator_traits { [StructLayout(LayoutKind.Explicit, Size = 0)] @@ -12685,7 +12694,7 @@ namespace std namespace __tree_end_node { [StructLayout(LayoutKind.Explicit, Size = 8)] - public unsafe partial struct Internal_Ptr + public unsafe partial struct Internalc__N_std_N___1_S___tree_end_node_____N_std_N___1_S___tree_node_base___v { [FieldOffset(0)] public global::System.IntPtr __left_; @@ -13035,6 +13044,51 @@ namespace std } } + + public unsafe partial class __long + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial class __short + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial struct __ulx + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial class __raw + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial class __rep + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } namespace __basic_string_common { [StructLayout(LayoutKind.Explicit, Size = 0)] diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std-templates.cpp b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std-templates.cpp index a36cddfd..c359eac6 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std-templates.cpp +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std-templates.cpp @@ -1,4 +1,61 @@ #include template class __declspec(dllexport) std::basic_string, std::allocator>; -template class __declspec(dllexport) std::allocator; \ No newline at end of file +template class __declspec(dllexport) __gnu_cxx::__add_unsigned; +template class __declspec(dllexport) __gnu_cxx::__add_unsigned; +template class __declspec(dllexport) __gnu_cxx::__remove_unsigned; +template class __declspec(dllexport) __gnu_cxx::__remove_unsigned; +template class __declspec(dllexport) std::make_unsigned; +template class __declspec(dllexport) std::make_signed; +template class __declspec(dllexport) std::allocator; +template class __declspec(dllexport) std::allocator; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>, CppSharp::CppParser::AST::Declaration*>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::_Select1st, std::allocator>, CppSharp::CppParser::AST::Declaration*>>; +template class __declspec(dllexport) std::char_traits; +template class __declspec(dllexport) std::char_traits; +template class __declspec(dllexport) std::char_traits; +template class __declspec(dllexport) std::char_traits; +template class __declspec(dllexport) std::ctype; +template class __declspec(dllexport) std::ctype; +template class __declspec(dllexport) std::codecvt; +template class __declspec(dllexport) std::codecvt; \ No newline at end of file diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs index 07456de6..c97ec35e 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs @@ -290,7 +290,7 @@ namespace std namespace pair { [StructLayout(LayoutKind.Explicit, Size = 16)] - public unsafe partial struct Internal_Ptr + public unsafe partial struct Internalc__N_std_S_pair_____N_std_S__Rb_tree_node_base_S0_ { [FieldOffset(0)] public global::System.IntPtr first; @@ -658,6 +658,15 @@ namespace std Marshal.FreeHGlobal(__Instance); } } + + + public unsafe partial class rebind + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + } } namespace __gnu_cxx @@ -3168,6 +3177,24 @@ namespace std return Marshal.PtrToStringAnsi(__ret); } } + + + public unsafe partial class _Alloc_hider + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial struct _ + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + } } } diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std-templates.cpp b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std-templates.cpp index a36cddfd..c359eac6 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std-templates.cpp +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std-templates.cpp @@ -1,4 +1,61 @@ #include template class __declspec(dllexport) std::basic_string, std::allocator>; -template class __declspec(dllexport) std::allocator; \ No newline at end of file +template class __declspec(dllexport) __gnu_cxx::__add_unsigned; +template class __declspec(dllexport) __gnu_cxx::__add_unsigned; +template class __declspec(dllexport) __gnu_cxx::__remove_unsigned; +template class __declspec(dllexport) __gnu_cxx::__remove_unsigned; +template class __declspec(dllexport) std::make_unsigned; +template class __declspec(dllexport) std::make_signed; +template class __declspec(dllexport) std::allocator; +template class __declspec(dllexport) std::allocator; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>, CppSharp::CppParser::AST::Declaration*>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::_Select1st, std::allocator>, CppSharp::CppParser::AST::Declaration*>>; +template class __declspec(dllexport) std::char_traits; +template class __declspec(dllexport) std::char_traits; +template class __declspec(dllexport) std::char_traits; +template class __declspec(dllexport) std::char_traits; +template class __declspec(dllexport) std::ctype; +template class __declspec(dllexport) std::ctype; +template class __declspec(dllexport) std::codecvt; +template class __declspec(dllexport) std::codecvt; \ No newline at end of file diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std.cs index 32abd7c4..4278e2bd 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std.cs @@ -290,7 +290,7 @@ namespace std namespace pair { [StructLayout(LayoutKind.Explicit, Size = 16)] - public unsafe partial struct Internal_Ptr + public unsafe partial struct Internalc__N_std_S_pair_____N_std_S__Rb_tree_node_base_S0_ { [FieldOffset(0)] public global::System.IntPtr first; @@ -658,6 +658,15 @@ namespace std Marshal.FreeHGlobal(__Instance); } } + + + public unsafe partial class rebind + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + } } namespace __gnu_cxx @@ -3120,6 +3129,33 @@ namespace std return Marshal.PtrToStringAnsi(__ret); } } + + + public unsafe partial class _Rep_base + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial class _Rep + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } + + public unsafe partial class _Alloc_hider + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + } } namespace __gnu_cxx diff --git a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std-templates.cpp b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std-templates.cpp index 205042ac..982d9440 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std-templates.cpp +++ b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std-templates.cpp @@ -1,4 +1,94 @@ #include template class __declspec(dllexport) std::allocator; -template class __declspec(dllexport) std::basic_string, std::allocator>; \ No newline at end of file +template class __declspec(dllexport) std::basic_string, std::allocator>; +template class __declspec(dllexport) std::_Identity; +template class __declspec(dllexport) std::_Identity>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>, CppSharp::CppParser::AST::Declaration*>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list, std::allocator>>; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::initializer_list; +template class __declspec(dllexport) std::less; +template class __declspec(dllexport) std::_Forced; +template class __declspec(dllexport) std::_Lex_compare_optimize; +template class __declspec(dllexport) std::_String_iter_types; +template class __declspec(dllexport) std::_String_iter_types; +template class __declspec(dllexport) std::_String_iter_types; +template class __declspec(dllexport) std::_String_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types, std::allocator>, unsigned long long, long long, std::basic_string, std::allocator>*, const std::basic_string, std::allocator>*, std::basic_string, std::allocator>&, const std::basic_string, std::allocator>&>; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Vec_iter_types; +template class __declspec(dllexport) std::_Tree_iter_types, std::allocator>, CppSharp::CppParser::AST::Declaration*>, unsigned long long, long long, std::pair, std::allocator>, CppSharp::CppParser::AST::Declaration*>*, const std::pair, std::allocator>, CppSharp::CppParser::AST::Declaration*>*, std::pair, std::allocator>, CppSharp::CppParser::AST::Declaration*>&, const std::pair, std::allocator>, CppSharp::CppParser::AST::Declaration*>&, std::_Tree_node, std::allocator>, CppSharp::CppParser::AST::Declaration*>, void*>*>; \ No newline at end of file diff --git a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std.cs b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std.cs index 82624282..f01eb157 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std.cs @@ -4317,7 +4317,7 @@ namespace std namespace _Yarn { [StructLayout(LayoutKind.Explicit, Size = 16)] - public unsafe partial struct Internal_char + public unsafe partial struct Internalc__N_std_S__Yarn__C { [FieldOffset(0)] public global::System.IntPtr _Myptr; @@ -4327,7 +4327,7 @@ namespace std } [StructLayout(LayoutKind.Explicit, Size = 16)] - public unsafe partial struct Internal_wchar_t + public unsafe partial struct Internalc__N_std_S__Yarn__W { [FieldOffset(0)] public global::System.IntPtr _Myptr; @@ -4340,301 +4340,301 @@ namespace std namespace _Compressed_pair { [StructLayout(LayoutKind.Explicit, Size = 32)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_char_std__String_val_std__Simple_types_char + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__C___N_std_S__String_val____N_std_S__Simple_types__C_Vb1 { [FieldOffset(0)] internal global::std._String_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 32)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_wchar_t_std__String_val_std__Simple_types_wchar_t + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__W___N_std_S__String_val____N_std_S__Simple_types__W_Vb1 { [FieldOffset(0)] internal global::std._String_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 32)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_char16_t_std__String_val_std__Simple_types_char16_t + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__q___N_std_S__String_val____N_std_S__Simple_types__q_Vb1 { [FieldOffset(0)] internal global::std._String_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 32)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_char32_t_std__String_val_std__Simple_types_char32_t + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__w___N_std_S__String_val____N_std_S__Simple_types__w_Vb1 { [FieldOffset(0)] internal global::std._String_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_PreprocessedEntityPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_PreprocessedEntityPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_PreprocessedEntity___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_BlockContentCommentPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_BlockContentCommentPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_BlockContentComment___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_ParameterPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_ParameterPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Parameter___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_DeclarationPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_DeclarationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Declaration___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_FunctionTemplateSpecializationPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_FunctionTemplateSpecializationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_FunctionTemplateSpecialization___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_TemplateArgument_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_TemplateArgument + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_TemplateArgument___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_FunctionPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_FunctionPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Function___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_TemplatePtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_TemplatePtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Template___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_TypedefDeclPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_TypedefDeclPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_TypedefDecl___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_TypeAliasPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_TypeAliasPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_TypeAlias___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_VariablePtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_VariablePtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Variable___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_FriendPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_FriendPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Friend___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 16)] - public unsafe partial struct Internal_std_less_std_basic_string_char_std_char_traits_char_std_allocator_char_std__Compressed_pair_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S_less____N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C___N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1S1_____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S8__Vb1_Vb1 { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr _Myval2; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S3__Vb1 _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 16)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S3__Vb1 { [FieldOffset(0)] internal global::std._Tree_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_BaseClassSpecifierPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_BaseClassSpecifierPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_BaseClassSpecifier___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_FieldPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_FieldPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Field___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_MethodPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_MethodPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Method___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_AccessSpecifierDeclPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_AccessSpecifierDeclPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_AccessSpecifierDecl___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_VTableComponent_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_VTableComponent + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_VTableComponent___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_VFTableInfo_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_VFTableInfo + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_VFTableInfo___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_LayoutField_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_LayoutField + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_LayoutField___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_LayoutBase_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_LayoutBase + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_LayoutBase___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_ClassPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_ClassPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Class___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_Enumeration_ItemPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_Enumeration_ItemPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Enumeration_S_Item___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_EnumerationPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_EnumerationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Enumeration___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_NamespacePtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_NamespacePtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Namespace___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_std_basic_string_char_std_char_traits_char_std_allocator_char_std__Vector_val_std__Simple_types_std_basic_string_char_std_char_traits_char_std_allocator_char + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_ClassTemplateSpecializationPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_ClassTemplateSpecializationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_ClassTemplateSpecialization___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_ExpressionPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_ExpressionPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_Expression___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_VarTemplateSpecializationPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_VarTemplateSpecializationPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_VarTemplateSpecialization___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_MacroDefinitionPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_MacroDefinitionPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_MacroDefinition___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_TranslationUnitPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_TranslationUnitPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_TranslationUnit___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_InlineContentCommentPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_InlineContentCommentPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_InlineContentComment___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_BlockCommandComment_Argument_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_BlockCommandComment_Argument + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_BlockCommandComment_S_Argument___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_unsigned_int_std__Vector_val_std__Simple_types_unsigned_int + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__i___N_std_S__Vector_val____N_std_S__Simple_types__i_Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_VerbatimBlockLineCommentPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_VerbatimBlockLineCommentPtr + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_VerbatimBlockLineComment___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_InlineCommandComment_Argument_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_InlineCommandComment_Argument + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_InlineCommandComment_S_Argument___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_HTMLStartTagComment_Attribute_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_HTMLStartTagComment_Attribute + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_N_AST_S_HTMLStartTagComment_S_Attribute___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; } [StructLayout(LayoutKind.Explicit, Size = 24)] - public unsafe partial struct Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_ParserDiagnostic_std__Vector_val_std__Simple_types_CppSharp_CppParser_ParserDiagnostic + public unsafe partial struct Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_CppSharp_N_CppParser_S_ParserDiagnostic___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 { [FieldOffset(0)] internal global::std._Vector_val.Internal _Myval2; @@ -4888,6 +4888,15 @@ namespace std } } + + public unsafe partial class rebind + { + [StructLayout(LayoutKind.Explicit, Size = 0)] + public partial struct Internal + { + } + + } namespace _Wrap_alloc { [StructLayout(LayoutKind.Explicit, Size = 0)] @@ -6006,7 +6015,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std__Wrap_alloc_std_allocator_char_std__String_val_std__Simple_types_char _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__C___N_std_S__String_val____N_std_S__Simple_types__C_Vb1 _Mypair; [SuppressUnmanagedCodeSecurity] [DllImport("Std-templates", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -6085,7 +6094,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std__Wrap_alloc_std_allocator_char_std__String_val_std__Simple_types_char _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator__C___N_std_S__String_val____N_std_S__Simple_types__C_Vb1 _Mypair; } } @@ -6275,7 +6284,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_PreprocessedEntityPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_PreprocessedEntityPtr _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_PreprocessedEntity___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 _Mypair; } } @@ -6285,7 +6294,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std__Wrap_alloc_std_allocator_CppSharp_CppParser_AST_PreprocessedEntityPtr_std__Vector_val_std__Simple_types_CppSharp_CppParser_AST_PreprocessedEntityPtr _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator_____N_CppSharp_N_CppParser_N_AST_S_PreprocessedEntity___N_std_S__Vector_val____N_std_S__Simple_types__S2__Vb1 _Mypair; } } } @@ -6378,7 +6387,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std_less_std_basic_string_char_std_char_traits_char_std_allocator_char_std__Compressed_pair_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S_less____N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C___N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1S1_____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S8__Vb1_Vb1 _Mypair; } } @@ -6388,7 +6397,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std_less_std_basic_string_char_std_char_traits_char_std_allocator_char_std__Compressed_pair_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S_less____N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C___N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1S1_____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S8__Vb1_Vb1 _Mypair; } @@ -6436,7 +6445,7 @@ namespace std public unsafe partial struct Internal { [FieldOffset(0)] - internal global::std._Compressed_pair.Internal_std_less_std_basic_string_char_std_char_traits_char_std_allocator_char_std__Compressed_pair_std__Wrap_alloc_std_allocator_std__Tree_node_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr_voidPtr_std__Tree_val_std__Tree_simple_types_std_pair_std_basic_string_char_std_char_traits_char_std_allocator_char_CppSharp_CppParser_AST_DeclarationPtr _Mypair; + internal global::std._Compressed_pair.Internalc__N_std_S__Compressed_pair____N_std_S_less____N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C___N_std_S__Compressed_pair____N_std_S__Wrap_alloc____N_std_S_allocator____N_std_S__Tree_node____N_std_S_pair__1S1_____N_CppSharp_N_CppParser_N_AST_S_Declaration__v___N_std_S__Tree_val____N_std_S__Tree_simple_types__S8__Vb1_Vb1 _Mypair; } } } @@ -6759,22 +6768,22 @@ namespace std internal global::std._Lockit.Internal _Lock; [FieldOffset(8)] - internal global::std._Yarn.Internal_char _Days; + internal global::std._Yarn.Internalc__N_std_S__Yarn__C _Days; [FieldOffset(24)] - internal global::std._Yarn.Internal_char _Months; + internal global::std._Yarn.Internalc__N_std_S__Yarn__C _Months; [FieldOffset(40)] - internal global::std._Yarn.Internal_wchar_t _W_Days; + internal global::std._Yarn.Internalc__N_std_S__Yarn__W _W_Days; [FieldOffset(56)] - internal global::std._Yarn.Internal_wchar_t _W_Months; + internal global::std._Yarn.Internalc__N_std_S__Yarn__W _W_Months; [FieldOffset(72)] - internal global::std._Yarn.Internal_char _Oldlocname; + internal global::std._Yarn.Internalc__N_std_S__Yarn__C _Oldlocname; [FieldOffset(88)] - internal global::std._Yarn.Internal_char _Newlocname; + internal global::std._Yarn.Internalc__N_std_S__Yarn__C _Newlocname; } } } @@ -6901,7 +6910,7 @@ namespace std public byte _Xparent; [FieldOffset(40)] - internal global::std._Yarn.Internal_char _Name; + internal global::std._Yarn.Internalc__N_std_S__Yarn__C _Name; } } diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index 86e6d28c..897c8cbd 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -299,6 +299,8 @@ namespace CppSharp { TranslationUnitPasses.AddPass(new SortDeclarationsPass()); TranslationUnitPasses.AddPass(new ResolveIncompleteDeclsPass()); + if (Options.IsCSharpGenerator) + TranslationUnitPasses.AddPass(new MarkSupportedSpecializationsPass()); TranslationUnitPasses.AddPass(new IgnoreSystemDeclarationsPass()); TranslationUnitPasses.AddPass(new CheckIgnoredDeclsPass()); diff --git a/src/Generator/Generators/CLI/CLITypeReferences.cs b/src/Generator/Generators/CLI/CLITypeReferences.cs index 47e9d4ad..639c942c 100644 --- a/src/Generator/Generators/CLI/CLITypeReferences.cs +++ b/src/Generator/Generators/CLI/CLITypeReferences.cs @@ -177,7 +177,8 @@ namespace CppSharp.Generators.CLI public override bool VisitDeclaration(Declaration decl) { - return decl.IsDeclared; + return decl.IsDeclared && + (decl.Namespace == null || !decl.TranslationUnit.IsSystemHeader); } public override bool VisitClassDecl(Class @class) diff --git a/src/Generator/Generators/CSharp/CSharpSources.cs b/src/Generator/Generators/CSharp/CSharpSources.cs index b9b41307..6773b69e 100644 --- a/src/Generator/Generators/CSharp/CSharpSources.cs +++ b/src/Generator/Generators/CSharp/CSharpSources.cs @@ -236,14 +236,7 @@ namespace CppSharp.Generators.CSharp GenerateClass(@class); continue; } - if (@class.IsSupportedStdType()) - { - var specialization = @class.Specializations.SingleOrDefault( - ClassExtensions.IsSupportedStdSpecialization); - if (specialization != null) - GenerateClass(specialization); - } - else if (!(@class.Namespace is Class)) + if (!(@class.Namespace is Class)) GenerateClassTemplateSpecializationInternal(@class); } @@ -307,22 +300,43 @@ namespace CppSharp.Generators.CSharp if (classTemplate.Specializations.Count == 0) return; - IList specializations; + bool generateClass = false; + List specializations; if (classTemplate.Fields.Any( f => f.Type.Desugar() is TemplateParameterType)) specializations = classTemplate.Specializations; else - specializations = new[] { classTemplate.Specializations[0] }; + { + specializations = new List(); + var specialization = classTemplate.Specializations.FirstOrDefault(s => !s.Ignore); + if (specialization == null) + { + specializations.Add(classTemplate.Specializations[0]); + } + else + { + specializations.Add(specialization); + generateClass = true; + } + } - PushBlock(CSharpBlockKind.Namespace); - WriteLine("namespace {0}{1}", - classTemplate.OriginalNamespace is Class ? - classTemplate.OriginalNamespace.Name + '_' : string.Empty, - classTemplate.Name); - WriteStartBraceIndent(); + if (!generateClass) + { + PushBlock(CSharpBlockKind.Namespace); + WriteLine("namespace {0}{1}", + classTemplate.OriginalNamespace is Class ? + classTemplate.OriginalNamespace.Name + '_' : string.Empty, + classTemplate.Name); + WriteStartBraceIndent(); + } foreach (var specialization in specializations) - GenerateClassInternals(specialization); + { + if (specialization.Ignore) + GenerateClassInternals(specialization); + else + GenerateClass(specialization); + } foreach (var nestedClass in classTemplate.Classes) { @@ -334,8 +348,11 @@ namespace CppSharp.Generators.CSharp WriteCloseBraceIndent(); } - WriteCloseBraceIndent(); - PopBlock(NewLineKind.BeforeNextBlock); + if (!generateClass) + { + WriteCloseBraceIndent(); + PopBlock(NewLineKind.BeforeNextBlock); + } } public void GenerateDeclarationCommon(Declaration decl) @@ -2563,7 +2580,7 @@ namespace CppSharp.Generators.CSharp var templateSpecialization = function.Namespace as ClassTemplateSpecialization; string @namespace = templateSpecialization != null && - !templateSpecialization.IsSupportedStdType() ? + templateSpecialization.Ignore ? (templateSpecialization.Namespace.OriginalName + '.') : string.Empty; var functionName = string.Format("{0}Internal.{1}", @namespace, diff --git a/src/Generator/Generators/Template.cs b/src/Generator/Generators/Template.cs index d43e40cc..b2a0255b 100644 --- a/src/Generator/Generators/Template.cs +++ b/src/Generator/Generators/Template.cs @@ -309,8 +309,8 @@ namespace CppSharp.Generators public string Generate() { - if (Options.IsCSharpGenerator && Options.CompileCode) - return RootBlock.GenerateUnformatted(Options).ToString(); + //if (Options.IsCSharpGenerator && Options.CompileCode) + // return RootBlock.GenerateUnformatted(Options).ToString(); return RootBlock.Generate(Options); } diff --git a/src/Generator/Passes/CheckIgnoredDecls.cs b/src/Generator/Passes/CheckIgnoredDecls.cs index 3d10954a..425a779b 100644 --- a/src/Generator/Passes/CheckIgnoredDecls.cs +++ b/src/Generator/Passes/CheckIgnoredDecls.cs @@ -1,4 +1,5 @@ -using CppSharp.AST; +using System.Linq; +using CppSharp.AST; using CppSharp.AST.Extensions; using CppSharp.Types; @@ -33,16 +34,13 @@ namespace CppSharp.Passes return true; } - public override bool VisitClassTemplateDecl(ClassTemplate template) + public override bool VisitClassDecl(Class @class) { - if (!base.VisitClassTemplateDecl(template)) - return false; - - if (!Driver.Options.IsCLIGenerator && template.TranslationUnit.IsSystemHeader) + if (!base.VisitClassDecl(@class) || !@class.IsDependent) return false; // templates are not supported yet - foreach (var specialization in template.Specializations) + foreach (var specialization in @class.Specializations.Where(s => !s.IsExplicitlyGenerated)) specialization.ExplicitlyIgnore(); return true; diff --git a/src/Generator/Passes/GenerateTemplatesCodePass.cs b/src/Generator/Passes/GenerateTemplatesCodePass.cs index dad17730..4be888a7 100644 --- a/src/Generator/Passes/GenerateTemplatesCodePass.cs +++ b/src/Generator/Passes/GenerateTemplatesCodePass.cs @@ -3,7 +3,6 @@ using System.IO; using System.Linq; using System.Text; using CppSharp.AST; -using CppSharp.Types; namespace CppSharp.Passes { @@ -20,7 +19,7 @@ namespace CppSharp.Passes { if (!specialization.IsDependent && (!specialization.TranslationUnit.IsSystemHeader || - specialization.IsSupportedStdSpecialization())) + !specialization.Ignore)) { var cppTypePrinter = new CppTypePrinter { diff --git a/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs b/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs index e1a28a07..628a2ba5 100644 --- a/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs +++ b/src/Generator/Passes/GetterSetterToPropertyAdvancedPass.cs @@ -330,7 +330,7 @@ namespace CppSharp.Passes public override bool VisitClassDecl(Class @class) { - if (VisitDeclarationContext(@class) && !@class.IsSupportedStdType()) + if (VisitDeclarationContext(@class)) { if (Options.VisitClassBases) foreach (var baseClass in @class.Bases) diff --git a/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs b/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs index 8659686b..a1fb3e13 100644 --- a/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs +++ b/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs @@ -41,15 +41,8 @@ namespace CppSharp.Passes if (!@class.TranslationUnit.IsSystemHeader) return false; - if (!@class.IsSupportedStdType()) - { - + if (!@class.IsExplicitlyGenerated) @class.ExplicitlyIgnore(); - if (@class.IsDependent) - foreach (var specialization in @class.Specializations) - specialization.ExplicitlyIgnore(); - return false; - } if (!@class.IsDependent) return false; @@ -58,10 +51,8 @@ namespace CppSharp.Passes switch (@class.Name) { case "basic_string": - foreach (var specialization in @class.Specializations.Where( - s => s.IsSupportedStdSpecialization())) + foreach (var specialization in @class.Specializations.Where(s => !s.Ignore)) { - MarkForGeneration(specialization); foreach (var method in specialization.Methods.Where(m => m.OriginalName != "c_str")) method.ExplicitlyIgnore(); var l = specialization.Methods.Where(m => m.IsConstructor && m.Parameters.Count == 2).ToList(); @@ -74,13 +65,9 @@ namespace CppSharp.Passes } break; case "allocator": - foreach (var specialization in @class.Specializations.Where( - s => s.IsSupportedStdSpecialization())) - { - MarkForGeneration(specialization); + foreach (var specialization in @class.Specializations.Where(s => !s.Ignore)) foreach (var method in specialization.Methods.Where(m => !m.IsConstructor || m.Parameters.Any())) method.ExplicitlyIgnore(); - } break; } return true; @@ -118,16 +105,5 @@ namespace CppSharp.Passes return true; } - - private static void MarkForGeneration(ClassTemplateSpecialization specialization) - { - specialization.GenerationKind = GenerationKind.Generate; - Declaration declaration = specialization.TemplatedDecl.TemplatedDecl; - while (declaration != null) - { - declaration.GenerationKind = GenerationKind.Generate; - declaration = declaration.Namespace; - } - } } } diff --git a/src/Generator/Passes/MarkSupportedClassTemplateSpecializationsPass.cs b/src/Generator/Passes/MarkSupportedClassTemplateSpecializationsPass.cs new file mode 100644 index 00000000..1479ebe1 --- /dev/null +++ b/src/Generator/Passes/MarkSupportedClassTemplateSpecializationsPass.cs @@ -0,0 +1,63 @@ +using System.Linq; +using CppSharp.AST; +using CppSharp.AST.Extensions; + +namespace CppSharp.Passes +{ + public class MarkSupportedSpecializationsPass : TranslationUnitPass + { + public override bool VisitClassDecl(Class @class) + { + if (!base.VisitClassDecl(@class) || !@class.IsDependent) + return false; + + foreach (var specialization in @class.Specializations) + { + if (IsSupportedStdSpecialization(specialization)) + { + MarkForGeneration(specialization); + @class.GenerationKind = GenerationKind.Generate; + } + } + + return true; + } + + private static bool IsSupportedStdSpecialization(ClassTemplateSpecialization specialization) + { + return IsSupportedStdType(specialization) && + specialization.Arguments[0].Type.Type.IsPrimitiveType(PrimitiveType.Char); + } + + private static bool IsSupportedStdType(Declaration declaration) + { + return declaration.Namespace != null && + declaration.TranslationUnit.IsSystemHeader && + IsNameSpaceStd(declaration.Namespace) && + supportedStdTypes.Contains(declaration.OriginalName); + } + + private static bool IsNameSpaceStd(DeclarationContext declarationContext) + { + if (declarationContext == null) + return false; + var @namespace = declarationContext as Namespace; + if (@namespace != null && @namespace.IsInline) + return IsNameSpaceStd(declarationContext.Namespace); + return declarationContext.OriginalName == "std"; + } + + private static void MarkForGeneration(ClassTemplateSpecialization specialization) + { + specialization.GenerationKind = GenerationKind.Generate; + Declaration declaration = specialization.TemplatedDecl.TemplatedDecl; + while (declaration != null) + { + declaration.GenerationKind = GenerationKind.Generate; + declaration = declaration.Namespace; + } + } + + private static string[] supportedStdTypes = { "basic_string", "allocator" }; + } +} diff --git a/src/Generator/Types/Std/Stdlib.cs b/src/Generator/Types/Std/Stdlib.cs index 911b626d..79e6fecf 100644 --- a/src/Generator/Types/Std/Stdlib.cs +++ b/src/Generator/Types/Std/Stdlib.cs @@ -67,7 +67,7 @@ namespace CppSharp.Types.Std ctx.Return.Write("*({0}*) ", basicString.Visit(typePrinter)); typePrinter.PopContext(); var allocator = ctx.Driver.ASTContext.FindClass("allocator", false, true).First( - a => a.IsSupportedStdType()); + a => a.IsDependent); if (type.IsPointer() || (type.IsReference() && ctx.Declaration is Field)) { ctx.Return.Write("new {0}({1}, new {2}()).{3}", @@ -93,7 +93,9 @@ namespace CppSharp.Types.Std { var type = ctx.ReturnType.Type; ClassTemplateSpecialization basicString = GetBasicString(type); - var c_str = basicString.Methods.First(m => m.OriginalName == "c_str"); + Declaration c_str = basicString.Methods.FirstOrDefault(m => m.OriginalName == "c_str"); + if (c_str == null) + c_str = basicString.Properties.First(p => p.OriginalName == "c_str"); var typePrinter = new CSharpTypePrinter(ctx.Driver); if (type.IsPointer() || ctx.Declaration is Field) { @@ -108,7 +110,8 @@ namespace CppSharp.Types.Std varBasicString, basicString.Visit(typePrinter), Helpers.CreateInstanceIdentifier, ctx.ReturnVarName); ctx.SupportBefore.WriteStartBraceIndent(); - ctx.Return.Write("{0}.{1}()", varBasicString, c_str.Name); + ctx.Return.Write("{0}.{1}{2}", varBasicString, c_str.Name, + c_str is Method ? "()" : string.Empty); ctx.HasCodeBlock = true; } } diff --git a/src/Generator/Types/Types.cs b/src/Generator/Types/Types.cs index 20c47f17..ebca0796 100644 --- a/src/Generator/Types/Types.cs +++ b/src/Generator/Types/Types.cs @@ -118,7 +118,7 @@ namespace CppSharp } var specialization = template.GetClassTemplateSpecialization(); - if (specialization == null || !specialization.IsSupportedStdType()) + if (specialization == null || specialization.Ignore) Ignore(); return base.VisitTemplateSpecializationType(template, quals); }