Dimitar Dobrev
b8f54de73e
Parsed function bodies.
8 years ago
Dimitar Dobrev
329d350f9d
Added the specialisation info, if any, along with its arguments, to functions.
8 years ago
Dimitar Dobrev
8d322ad53e
Properly handled signed chars in the AST.
8 years ago
Dimitar Dobrev
cef847825a
Exposed constant expressions, friendships and exception specifications of functions in our AST.
8 years ago
Dimitar Dobrev
dbb3182b44
Fixed all warnings in our C++ part.
8 years ago
Dimitar Dobrev
ef69bf1b95
Made the case-renaming pass non-optional for Mono/.NET generators.
8 years ago
Dimitar Dobrev
fc1d75363a
Regenerated the parser bindings after making internals internal.
9 years ago
Joao Matos
1371f89957
Convert CheckMacroPass to be a default pass.
9 years ago
Dimitar Dobrev
60f5da9ced
Fixed memory leaks when reading template parameters.
9 years ago
Dimitar Dobrev
a8815b84e2
Fixed the generated C# when a parameter is s typedef of a primitive pointer.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
5af5b2093f
Extended the AST with the template parameters being substituted.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Joao Matos
2be56cbf0d
Clean up a bunch of build warnings.
9 years ago
Joao Matos
f3663c636b
Force the pre-C++11 ABI when compiling the parser library on Linux platforms.
...
Hopefully fixes a long-standing compatibility issue caused by the C++11 ABI switch on GCC5.
Fixes https://github.com/mono/CppSharp/issues/655 .
9 years ago
Dimitar Dobrev
c010a0d9a9
Restored the STD allocator in the OS X parser bindings.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
cd8cfdd01d
Added a pass for stripping unused STD types.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Joao Matos
4c1f51f609
Get rid of generated conflicting classes in parser bindings.
9 years ago
Dimitar Dobrev
b2a872f431
Merged the passes for properties and made the result non-optional.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
56c1fab63b
Fixed a bug causing a class layout to have the class as its own base.
...
Fixes https://github.com/mono/CppSharp/issues/702 .
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
db942dc06c
Wrapped the reference qualifier of functions.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Joao Matos
d349134180
Reworked parser bindings build scripts to be more easily re-usable.
9 years ago
Dimitar Dobrev
5d8ecf32d7
Extended the AST with the GCC vector type ("__attribute__").
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
0a5c73dc48
Added explicit GNU versions to the language options of the parser.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
749c2b17ec
Renamed ParserOptions to CppParserOptions and ParserOptions2 to ParserOptions.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Joao Matos
e8064e3f4e
Minor build fixes.
9 years ago
Joao Matos
a77bc2a91f
Separate parser options from driver options.
...
This will break API compatibility, you will have to update your options setup code.
9 years ago
Joao Matos
5dac663926
Remove unneeded dependency on our own Premake helpers.
9 years ago
Joao Matos
4bc75c1e19
Remove Bootstrap project from the build.
9 years ago
Joao Matos
b0c539197e
Extract ParserGen build project to its own file.
9 years ago
Joao Matos
77c871c794
Update build files to Premake5.
9 years ago
Dimitar Dobrev
a4dfeb94be
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 <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
deea8d8cda
Removed functions made ambiguous by different qualifiers on the same type in their parameter.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
d419cb7156
Added all system fields to the internal layouts used in the C# generator.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
1dd73afda6
Fixed a crash when checking specialisations of std::vector.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
7d67f4b023
Added unary transformations and other fixes to restore the full build with all tests.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
397d82b2a1
Fixed the generated C# when having a field of type char*.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Joao Matos
b7689b2d60
Added support for missing basic Clang built-in types.
9 years ago
Joao Matos
4b1309f5be
Added support for C++14 variable templates and specializations.
9 years ago
Joao Matos
53409db5ca
Re-generated the parser bindings.
9 years ago
Joao Matos
12312bff14
Refactored common template handling code in native AST.
9 years ago
Dimitar Dobrev
d41609eafb
Marked incomplete class template specialisations and ignored them later.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
7b78053f93
Added compatibility with a little newer Clang.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Joao Matos
3f33124287
Re-factored Clang builtin include directory build script code.
9 years ago
João Matos
e5a667afc3
Copy the bundled Clang builtin include files folder to the build folder.
9 years ago
Joao Matos
ab3660cc02
Skip walking implicit C++ records.
9 years ago
Nathan Loofbourrow
d168496cbf
Changes to match clang 3.8.1 API changes
9 years ago
Dimitar Dobrev
3cd024cccf
Added marshalling of std::string to the C# end.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
fc87fb6ee9
Added the desugared type, if any, of DependentNameType, to the AST.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
7986747373
Added dependent template specialization types to the AST.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
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
eaef452d52
Stopped ignoring system declarations so that they can be properly parsed.
...
We need this because of the upcoming support for system types, such as std::string or std::vector.
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago