Dimitar Dobrev
9b90f1c77b
Generate valid C# for nested in external specializations
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
aab63d0aa3
Generate valid C# for unresolvable base templates
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
69e766be5d
Generate valid C# for classes with dependent fields nested in templates with independent fields
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
a69f6d1d6d
Generate valid C++ for specialisations with void
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
5552f2b484
Generate valid C# for pure functions returning or taking dependent pointers
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
ad6557792f
Simplify handling of initialisation of variables
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
132ed7e25b
Generate valid C# for variables which use float
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
ac5001ddca
Generate valid C# for variables with > 1 arg
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
5e328da9e7
Fix C# layouts for classes with nameless unions
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
5a21a7facd
Generate valid C# for copy ctors with extra args
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
50cba5552c
Generate valid C# for destructors of templates with dependent fields
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
09190268bc
Generate valid C# for internal fields of type external specialization
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
c8c415b977
Generate valid C# for static object-typed fields
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
2da9e49fe8
Instantiate specialized classes nested in templates
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
f97ad43ce4
Generate valid C# for base types with public fields of const char*
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
42f38ec99e
Generate valid C# for constants in namespaceless modules
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
50feab050f
Free returned by value instances, not object ones
...
This was a dangerous bug by as the object remained in a deleted state to be used later.
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
2fdd0822d2
Generate valid C# for setters returning Booleans
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
8803ede83d
Place returns as needed without an extra block
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
6a0bdc1ba6
Delete the C++ copy when returning by value ( #1623 )
...
Fixes https://github.com/mono/CppSharp/issues/1600 .
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Albert Szilvasy
24b02e4d86
Fix incorrect dtor call for non-owned instances ( #1615 )
...
* Introduce failing test for disposing bug
* Dispose(bool, bool) really shouldn't be public. Clients should call Dipose() instead.
Derived classes may need to call Dispose(bool, bool) so lets make it internal protected.
4 years ago
Albert Szilvasy
a178108c06
Fix for Visual Studio 2019 16.10 ( #1614 )
4 years ago
Dimitar Dobrev
5c58a5993e
Generate valid C# for public fields of typedef-ed primitive pointer
...
Fixes https://github.com/mono/CppSharp/issues/1611 .
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Dimitar Dobrev
954a0cf941
Resolve names matching those of system functions
...
Fixes https://github.com/mono/CppSharp/issues/1602 .
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
4 years ago
Joe Hull
748b7b5d03
Add a mechanism to selectively initialize allocated unmanaged memory in the default constructor.
...
* feature: Add a mechanism to selectively initialize unmanaged memory in the default constructor. (C# Only at this point).
* Use the global:: prefix when calling InitBlock
4 years ago
Joe Hull
b3a7cd0261
Much improved support for marshaling const char* to string
...
* Changed support for marshaling "const char *"s as strings so that:
1) CppSharp.Types.Std.CSharpMarshalToNative generates setters that allocate unmanaged memory for the native bytes rather than an unpinned pointer into managed memory. Also set a null termination char.
2) Add tracking for when unmanaged memory is allocated for "const char *" strings. Free it when reassigned or dispsoed.
3) Added explicit support for Encoding.Default for ANSI support.
4) Allow setting a string value to null.
* Added test to prove that the unpinned ptr to managed memory approach wasn't working, and that the new approach appears to work.
* Change CSharpSources.GenerateDisposeMethods to free unmanaged memory held by IntPtr's corresponding to "const char *" strings.
* Changed copy constructor to deep-copy owned string refs to avoid ref counting.
* Update CSharpSources.GenerateFieldGetter to treat Char16 and Char32 the same as WideChar to avoid compilation errors on the generated sources if char32_t or char16_t are used.
* Added tests.
* Workaround for mac C++ compilation issue.
4 years ago
Joe Hull
d135ffdb86
bug: Repaired broken alignment padding generation for structs with embedded arrays of structs. Added a test for this case.
4 years ago
josetr
8ec03edd3b
Flush `Module.ExternalClassTemplateSpecializations` to avoid emitting the same specialization in multiple files
5 years ago
Dimitar Dobrev
7bc0db7ae6
Don't wrap trivial constructors and destructors
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
5 years ago
josetr
42dda6b12f
Fix generation of SequentialLayout structures ( #1499 )
5 years ago
josetr
20dbda0405
Fix CS0162 warning about unreachable code ( #1492 )
5 years ago
josetr
838c2c5930
Fix CS0109 warnings about new keyword not being required. ( #1493 )
5 years ago
josetr
2e80565bb2
Fix warnings about unnecessary using directives. ( #1489 )
5 years ago
josetr
cb7e35dfa1
Avoid generating an interface with a Dispose method if we already inherit from IDisposable. ( #1486 )
5 years ago
Dimitar Dobrev
341fadc655
Always use the mangled names as reported by Clang
...
The names in the binaries themselves are sometimes different than those Clang reports. However, it seems that the reported ones are the actually correct for invocation. For example, the name passed to dlsym() (for variables) must not be prepended with an underscore (https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/dlsym.3.html ). Another example, again on macOS, is with extern C functions which sometimes also receive an _ at the front.
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
5 years ago
josetr
bd69624a7d
Remove dummy variable and use discards instead available since C# 7.0 ( #1478 )
5 years ago
josetr
7791cf6996
Fallback to LayoutKind.Explicit when a custom alignment is specified. ( #1476 )
5 years ago
josetr
051ebb82b3
Remove `Layout.GetSize()` method as it's no longer relevant ( #1474 )
5 years ago
josetr
0d32121eee
Fix the generation of sequential layouts
5 years ago
josetr
5912c236ec
VTable: improve codegen & make it thread safe ( #1469 )
5 years ago
josetr
52140cb78b
Create VTables class to cache delegates pointing to native virtual methods ( #1468 )
5 years ago
josetr
eac78c6caf
Improve generation of C# ( #1466 )
5 years ago
josetr
b9cf8f160a
Reduce calls to ConcurrentDictionary to improve performance ( #1464 )
5 years ago
Dimitar Dobrev
75bca17907
Update LLVM to obtain working lld ( #1462 )
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
5 years ago
josetr
69a501b91c
Load symbols at startup to avoid very expensive ResolveSymbol calls everywhere ( #1447 )
...
* Load symbols at startup to avoid very expensive ResolveSymbol calls everywhere
5 years ago
josetr
6496bf8dae
Basic support for static constexpr variables ( #1435 )
...
Basic support for static constexpr variables
5 years ago
josetr
397811dc3c
Fix wrong marshalling for static member arrays ( #1428 )
...
* Fix wrong marshalling for static member arrays
5 years ago
Dimitar Dobrev
9f3fc25889
Improve the name of a generating method
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
5 years ago
Dimitar Dobrev
b5ca0635be
Check symbols in tests
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
5 years ago
Dimitar Dobrev
07763331e2
Move libraries to a new class for linking options
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
5 years ago