Dimitar Dobrev
06410eddbc
Stored specializations in the templated class itself because ClassTemplate is not a complete declaration.
...
ClassTemplate in Clang does not actually represent a complete declaration. For example, let's see the implementation of clang::ClassTemplateDecl::isThisDeclarationADefinition:
bool isThisDeclarationADefinition() const {
return getTemplatedDecl()->isThisDeclarationADefinition();
}
(http://clang.llvm.org/doxygen/DeclTemplate_8h_source.html#l01995 at the time of this commit)
The above shows that class templates do not have definitions, instead, their "definitions" are those of the real templates classes.
In addition let's see ClassTemplateDecl::getCanonicalDecl():
const ClassTemplateDecl *getCanonicalDecl() const {
return cast<ClassTemplateDecl>(
RedeclarableTemplateDecl::getCanonicalDecl());
}
(http://clang.llvm.org/doxygen/DeclTemplate_8h_source.html#l02023 at the time of this commit)
In turn RedeclarableTemplateDecl::getCanonicalDecl() is defined as:
RedeclarableTemplateDecl *getCanonicalDecl() override {
return getFirstDecl();
}
where getFirstDecl() returns just that - the first encountered declaration which might as well be a forward one.
This means that the only complete declaration ClassTemplateDecl can point to is the template class itself,
and the latter is therefore our only choice if we want to have a full list of all specializations of that template class.
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
e57ea530e1
Avoided naming conflicts between methods of different specialisations of a template.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
010e35abc0
Fixed a crash when generating any C# bindings on Windows.
...
It was a regression from the dropping of the C# option for a single generated source file.
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
62beaddf63
Fixed the printing of class template specializations.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
8bda1cc049
Fixed C# generation by ignoring templates pointing to incomplete declarations.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
9b51e30643
Fixed the option for output name-spaces to allow eliminating them.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
e0234089b5
Fixed uncompilable C# code when having a function pointer with an enum pointer as a parameter.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
4d7c7a5ae7
Fixed uncompilable code when a free function is names after its header.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
00441bb300
Fixed the generated code when specialising types represented the same way in C#.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
3eb259f151
Fixed the generated code when having long doubles in the origin.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
b5b0d92059
Fixed the generation of C# internals for templates specialising nested system types.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
4ca34405dc
Fixed the wrapping of virtual members when changing access in overrides.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
002565971f
Ignored all system declarations until we can properly support them.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
6abdb764e6
Completed the exposing of type aliases in our AST.
...
Fixes https://github.com/mono/CppSharp/issues/670 .
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Joao Matos
7f75246215
Added support for C++11 type alias template declarations.
...
Partial fix for https://github.com/mono/CppSharp/issues/664 .
9 years ago
Dimitar Dobrev
517b1a5ccd
Saved the offsets per base in the layout of a record.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
c4c2ef21ce
Filled in all missing v-table pointers in record layouts.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
e2b8f44565
Properly fixed the offsets of fields in all possible cases.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
c1ee47d755
Changed the matching of explicitly patched virtual functions to use qualified names.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
b3d46e38d7
Made wrappers of private classes public because of access by dependencies.
...
The correct way to fix this is, for C#, by using InternalsVisibleToAttribute.
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
6dadab3796
Fixed the generated code when a default argument uses a constant.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
0a7b396842
Fixed the generated code when the C++ parameters are named "arg1", "arg2", etc.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
bbb8aeb4af
Fixed the fully qualified names to include "global::" in the C# end.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
41c030a7ee
Cleared empty name-spaces up in the C# end.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
cdc51afc0e
Extended the parser and AST to handle template template parameters.
...
For more details see the Clang documentation ( http://clang.llvm.org/doxygen/classclang_1_1TemplateTemplateParmDecl.html ).
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
546c32d4a7
Generated internals for template specialisations from dependent libraries.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
e50e9416d9
Handled internals of nested template specialisations.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
26d908b2f3
Decreased the number of needed template internals in the C# end.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
eb748db73b
Handled nested template specialisations with fields of the place-holder type.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
3718d36854
Removed the internals of partial template specialisations - not supported yet.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
a10f034c9b
Fixed the C#-printing of template specilisations with bool.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
dc84c9b765
Added an option to parse all headers at once - much faster.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
b41dc261ed
Added support for directly wrapping entire sets of interdependent libraries.
...
It's realised by using modules. Users now have to define one module for each library they want wrapped while setting the driver up.
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Joao Matos
f35ec1b693
Implemented CLITypePrinter.VisitTemplateParameterSubstitutionType.
...
Should fix https://github.com/mono/CppSharp/issues/651 .
9 years ago
Joao Matos
60f5bc31e9
Added <auto-generated> XML documentation tag to the generated file preamble.
...
Closes https://github.com/mono/CppSharp/issues/648 .
9 years ago
Dimitar Dobrev
bd3c921731
Simplified the printing of template internals.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
0d5c4539a2
Generated internals of types nested in templates.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
5f679576e0
Fixed the generated code when a template has a base type.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
2403d7d3a3
Replaced the useless internals of templates with the internals of their specialisations.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
e4200f4690
Fixed the wrapping of template parameters in the parser.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
2294fe56fb
Fixed the layouts of ignored dynamic types by generating their v-table pointers.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
336dbe8ff8
Marshalled fields with a pointer type as IntPtr.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
6fd6649bb5
P/Invoked OS X frameworks instead of just libs when applicable.
9 years ago
Joao Matos
c5c4a538c4
Implemented CLI delegate marshaling of function pointer types.
9 years ago
Dimitar Dobrev
11fc1f5097
Checked whether block comments actually have paragraphs.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
10 years ago
Dimitar Dobrev
0e344b4b8a
Tested generation of C# comments at run-time.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
10 years ago
Dimitar Dobrev
6e23f910a9
Added support for "param" elements in code comments in the C# end.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
10 years ago
Dimitar Dobrev
1f105e53a8
Added support for "return" elements in code comments in the C# end.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
10 years ago
Dimitar Dobrev
1d3e821093
Fixed #453 - incorrect comment generation.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
10 years ago
Dimitar Dobrev
38f1707474
Fixed #638 - incompilable generated C# code when a function takes a protected enum.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
10 years ago