Joao Matos
9a33c4afe7
Added support for C++11 variable templates and specializations.
9 years ago
Joao Matos
218f3537b9
Re-generated the parser bindings.
9 years ago
Joao Matos
deb6b8e560
Added VisitFunctionTemplateSpecializationDecl visitor implementations.
9 years ago
Joao Matos
8f8648eec1
Refactored common template handling code in native AST.
9 years ago
Joao Matos
8d16e46c38
Clean up template declarations visiting behavior.
9 years ago
Joao Matos
9c56b56b68
Rename CLITextTemplate to CLITemplate.
9 years ago
Joao Matos
9028987ab9
Update readme as we now support std::string in C#.
9 years ago
Joao Matos
573dc623f8
Renamed class names to match file renames.
9 years ago
Joao Matos
f6355ab0f9
Renamed some files.
9 years ago
Joao Matos
3f33124287
Re-factored Clang builtin include directory build script code.
9 years ago
João Matos
d03dc8013a
Remove workarounds due to improper handling of Clang builtin include dirs.
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
Joao Matos
100b87f15b
Link with LLVMCoverage since it's required by recent builds.
9 years ago
Joao Matos
b7e9052cac
Switch to Visual Studio 2015 on AppVeyor.
9 years ago
Joao Matos
42b590462d
Update 7-Zip packaging step to use maximum compression level.
9 years ago
Joao Matos
1899c36959
Auto-detect 7-Zip Windows path in LLVM packaging scripts.
9 years ago
João Matos
e12588edbb
Merge pull request #681 from loofbon/vs2015_clang3.8.1
...
Changes for VS2015 and Clang 3.8.1
9 years ago
Joao Matos
60921b1154
Switch to LLVM/Clang Github Git mirrors as they're more reliable.
9 years ago
João Matos
4e369664e4
Update to a more recent LLVM and Clang builds.
9 years ago
João Matos
0d6724f09c
Copy Clang builtin headers when packaging the LLVM CI packages.
9 years ago
João Matos
1893c61537
Update provision scripts to use CMake 3.6.1 and download the package on Linux.
9 years ago
Nathan Loofbourrow
77480b5774
Update for VS link
9 years ago
Nathan Loofbourrow
d168496cbf
Changes to match clang 3.8.1 API changes
9 years ago
Dimitar Dobrev
b77d2ccdde
Ensured the system module only contains units from the current run.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
91c0a38296
Improved the searching for type maps to work with typedefs and selected mapped template specialisations.
...
This makes it possible to map the exact specialisation of basic_string which corresponds to std::string.
This helps when std::string is used as a placeholder (std::vector<std::string>) since it's then finally resolved to the specialisation and not the typedef.
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
87fe62721c
Deleted the redundant and incomplete manual attempts for marshalling std types.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
0837094d76
Fixed the generated C# code when a default arg with an ignored expression is preceded by another default arg.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
dd3a9e1673
Fixed the Linux build by explicitly including a system header.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
9d940c8f51
Removed default parameters when they use ignored declarations.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
6a0069f9c2
Fixed invalid C# code when wrapping a constant of type std::string.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
João Matos
af109207bd
Fixed CMake path on OSX when building LLVM.
9 years ago
João Matos
d4b1b091c6
Update provisioning to CMake 3.6.0.
9 years ago
Dimitar Dobrev
5fa6fcca19
Fixed the system module linking itself when auto-compiling.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
4df66454b1
Enabled cleaning up in type maps and used it to dispose of used std::string objects.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
22c15789c5
Changed the searching for declarations to only return relevant ones and to work for variables.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
4b82838b54
Extended the C# end with support for free constants and fixed their printing.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
c1be105d46
Added marshalling of fixed char arrays.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
0ea801f7b9
Fixed the generated code when a default parameter of type char or wide char is assigned an int.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
32122a1bba
Properly handled enumeration items in default values of parameters.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
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
Dimitar Dobrev
95b592cab6
Regenerated the C# parser bindings to a single file per target.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
f8863f941b
Extracted the logic for getting wrapped units.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago
Dimitar Dobrev
7f93b4a5bd
Marked incomplete declarations even if their completions cannot be found.
...
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
cc2a283c7f
Fixed the completion of templates.
...
Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
9 years ago