@@ -26,10 +26,38 @@ using namespace clang::cxstring;
2626using namespace clang ::cxtu;
2727using namespace clang ::cxtype;
2828
29+ CXTemplateArgumentKind ConvertTemplateArgumentKind (TemplateArgument::ArgKind kind) {
30+ switch (kind) {
31+ case TemplateArgument::Null:
32+ return CXTemplateArgumentKind_Null;
33+ case TemplateArgument::Type:
34+ return CXTemplateArgumentKind_Type;
35+ case TemplateArgument::Declaration:
36+ return CXTemplateArgumentKind_Declaration;
37+ case TemplateArgument::NullPtr:
38+ return CXTemplateArgumentKind_NullPtr;
39+ case TemplateArgument::Integral:
40+ return CXTemplateArgumentKind_Integral;
41+ case TemplateArgument::StructuralValue:
42+ // Does not exist in CXTemplateArgumentKind
43+ return CXTemplateArgumentKind_Invalid;
44+ case TemplateArgument::Template:
45+ return CXTemplateArgumentKind_Template;
46+ case TemplateArgument::TemplateExpansion:
47+ return CXTemplateArgumentKind_TemplateExpansion;
48+ case TemplateArgument::Expression:
49+ return CXTemplateArgumentKind_Expression;
50+ case TemplateArgument::Pack:
51+ return CXTemplateArgumentKind_Pack;
52+ default :
53+ return CXTemplateArgumentKind_Invalid;
54+ }
55+ }
56+
2957CX_TemplateArgument MakeCXTemplateArgument (const TemplateArgument* TA, CXTranslationUnit TU, bool needsDispose = false ) {
3058 if (TA) {
3159 assert (TU && " Invalid arguments!" );
32- return { static_cast <CXTemplateArgumentKind> (TA->getKind ()), (needsDispose ? 1 : 0 ), TA, TU };
60+ return { ConvertTemplateArgumentKind (TA->getKind ()), (needsDispose ? 1 : 0 ), TA, TU };
3361 }
3462
3563 return { };
0 commit comments