@@ -26,10 +26,38 @@ using namespace clang::cxstring;
26
26
using namespace clang ::cxtu;
27
27
using namespace clang ::cxtype;
28
28
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
+
29
57
CX_TemplateArgument MakeCXTemplateArgument (const TemplateArgument* TA, CXTranslationUnit TU, bool needsDispose = false ) {
30
58
if (TA) {
31
59
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 };
33
61
}
34
62
35
63
return { };
0 commit comments