MODULE = Clang PACKAGE = Clang::Cursor
CursorKind
kind(self)
Cursor self
CODE:
RETVAL = clang_getCursorKind(*self);
OUTPUT: RETVAL
Type
type(self)
Cursor self
CODE:
CXType *retval = malloc(sizeof(CXType));
CXType type = clang_getCursorType(*self);
*retval = type;
RETVAL = retval;
OUTPUT: RETVAL
SV *
spelling(self)
Cursor self
CODE:
CXString spelling = clang_getCursorSpelling(*self);
RETVAL = newSVpv(clang_getCString(spelling), 0);
OUTPUT: RETVAL
int
num_arguments(self)
Cursor self
CODE:
int num_arguments = clang_Cursor_getNumArguments(*self);
RETVAL = num_arguments;
OUTPUT: RETVAL
SV *
displayname(self)
Cursor self
CODE:
CXString dname = clang_getCursorDisplayName(*self);
RETVAL = newSVpv(clang_getCString(dname), 0);
OUTPUT: RETVAL
AV *
children(self)
Cursor self
CODE:
AV *children = newAV();
clang_visitChildren(*self, visitor, children);
RETVAL = children;
OUTPUT: RETVAL
SV *
is_pure_virtual(self)
Cursor self
CODE:
RETVAL = clang_CXXMethod_isPureVirtual(*self) ? &PL_sv_yes : &PL_sv_no;
OUTPUT: RETVAL
SV *
is_virtual(self)
Cursor self
CODE:
RETVAL = clang_CXXMethod_isVirtual(*self) ? &PL_sv_yes : &PL_sv_no;
OUTPUT: RETVAL
void
location(self)
Cursor self
INIT:
CXFile file;
const char *filename;
unsigned int line, line_end, col, col_end, offset;
PPCODE:
CXSourceLocation loc = clang_getCursorLocation(*self);
CXSourceRange range = clang_getCursorExtent(*self);
CXSourceLocation end = clang_getRangeEnd(range);
clang_getSpellingLocation(loc, &file, &line, &col, NULL);
clang_getSpellingLocation(end, NULL, &line_end, &col_end, NULL);
filename = clang_getCString(clang_getFileName(file));
if (filename != NULL)
mXPUSHp(filename, strlen(filename));
else
mXPUSHp("", 0);
mXPUSHi(line);
mXPUSHi(col);
mXPUSHi(line_end);
mXPUSHi(col_end);
SV *
access_specifier(self)
Cursor self
CODE:
enum CX_CXXAccessSpecifier access =
clang_getCXXAccessSpecifier(*self);
const char *accessStr = 0;
switch (access) {
case CX_CXXInvalidAccessSpecifier:
accessStr = "invalid";
break;
case CX_CXXPublic:
accessStr = "public";
break;
case CX_CXXProtected:
accessStr = "protected";
break;
case CX_CXXPrivate:
accessStr = "private";
break;
}
RETVAL = newSVpv(accessStr, 0);
OUTPUT: RETVAL
void
DESTROY(self)
Cursor self
CODE:
free(self);