32 spdlog::debug(
"Create Injection from function {}.", FS->getNameAsString());
37 toDo.
return_type = FS->getReturnType().getAsString(pp);
39 FS->printNestedNameSpecifier(OS, pp);
42 std::vector<clang::ParmVarDecl*> parms(FS->parameters().begin(), FS->parameters().end());
44 if(
const clang::FunctionTemplateSpecializationInfo* TSI = FS->getTemplateSpecializationInfo()) {
45 std::vector<clang::ParmVarDecl*> nonresolved_parms(TSI->getTemplate()->getTemplatedDecl()->parameters().begin(),
46 TSI->getTemplate()->getTemplatedDecl()->parameters().end());
54 spdlog::debug(
"Create Injection from member function {}.", MFS->getNameAsString());
57 const clang::CXXConstructorDecl* ConstructorCheck = llvm::dyn_cast<clang::CXXConstructorDecl>(MFS);
62 MFS->getParent()->printNestedNameSpecifier(OS, pp);
65 toDo.
class_name = MFS->getParent()->getNameAsString();
66 if(
const clang::ClassTemplateSpecializationDecl* CTS = llvm::dyn_cast<clang::ClassTemplateSpecializationDecl>(MFS->getParent())) {
67 auto targs = &CTS->getTemplateArgs();
69 for(std::size_t i = 0; i < targs->size(); ++i) {
74 if(
const clang::FunctionTemplateSpecializationInfo* TSI = MFS->getTemplateSpecializationInfo()) {
75 auto* node = TSI->getTemplate()->getTemplatedDecl();
76 if(
auto* DFT = node->getDescribedFunctionTemplate()) {
77 if(
auto* MT = DFT->getInstantiatedFromMemberTemplate()) {
78 if(
auto* TMFS = MT->getTemplatedDecl()) {
79 std::vector<clang::ParmVarDecl*> nonresolved_parms(TMFS->parameters().begin(), TMFS->parameters().end());
85 if(
const clang::MemberSpecializationInfo* MSI = MFS->getMemberSpecializationInfo()) {
86 if(
const clang::CXXMethodDecl* TMFS = llvm::dyn_cast<const clang::CXXMethodDecl>(MSI->getInstantiatedFrom())) {
87 std::vector<clang::ParmVarDecl*> nonresolved_parms(TMFS->parameters().begin(), TMFS->parameters().end());