func (c Cursor) OverloadedDecl(index uint32) Cursor {
	return Cursor{C.clang_getOverloadedDecl(c.c, C.uint(index))}
}
/*
Retrieve a cursor for one of the overloaded declarations referenced
by a CXCursor_OverloadedDeclRef cursor.

Parameter cursor The cursor whose overloaded declarations are being queried.

Parameter index The zero-based index into the set of overloaded declarations in
the cursor.

Returns A cursor representing the declaration referenced by the given
cursor at the specified index. If the cursor does not have an
associated set of overloaded declarations, or if the index is out of bounds,
returns clang_getNullCursor();
package clang
import "C"
import (
	"reflect"
	"unsafe"
)
type Cursor struct {
	c C.CXCursor
}
func (c Cursor) ParsedComment() Comment {
	return Comment{C.clang_Cursor_getParsedComment(c.c)}
}
func NewNullCursor() Cursor {
	return Cursor{C.clang_getNullCursor()}
}
func (c Cursor) Equal(c2 Cursor) bool {
	o := C.clang_equalCursors(c.c, c2.c)
	return o != C.uint(0)
}
func (c Cursor) IsNull() bool {
	o := C.clang_Cursor_isNull(c.c)
	return o != C.int(0)
}
func (c Cursor) HashCursor() uint32 {
	return uint32(C.clang_hashCursor(c.c))
}
func (c Cursor) Kind() CursorKind {
	return CursorKind(C.clang_getCursorKind(c.c))
}
func (c Cursor) HasAttrs() bool {
	o := C.clang_Cursor_hasAttrs(c.c)
	return o != C.uint(0)
}
func (c Cursor) Linkage() LinkageKind {
	return LinkageKind(C.clang_getCursorLinkage(c.c))
}
func (c Cursor) Visibility() VisibilityKind {
	return VisibilityKind(C.clang_getCursorVisibility(c.c))
}
func (c Cursor) Availability() AvailabilityKind {
	return AvailabilityKind(C.clang_getCursorAvailability(c.c))
}
func (c Cursor) Language() LanguageKind {
	return LanguageKind(C.clang_getCursorLanguage(c.c))
}
func (c Cursor) TranslationUnit() TranslationUnit {
	return TranslationUnit{C.clang_Cursor_getTranslationUnit(c.c)}
}
func (c Cursor) SemanticParent() Cursor {
	return Cursor{C.clang_getCursorSemanticParent(c.c)}
}
func (c Cursor) LexicalParent() Cursor {
	return Cursor{C.clang_getCursorLexicalParent(c.c)}
}
func (c Cursor) OverriddenCursors() []Cursor {
	var cp_overridden *C.CXCursor
	var overridden []Cursor
	var numOverridden C.uint
	C.clang_getOverriddenCursors(c.c, &cp_overridden, &numOverridden)
	gos_overridden := (*reflect.SliceHeader)(unsafe.Pointer(&overridden))
	gos_overridden.Cap = int(numOverridden)
	gos_overridden.Len = int(numOverridden)
	gos_overridden.Data = uintptr(unsafe.Pointer(cp_overridden))
	return overridden
}
func Dispose(overridden []Cursor) {
	gos_overridden := (*reflect.SliceHeader)(unsafe.Pointer(&overridden))
	cp_overridden := (*C.CXCursor)(unsafe.Pointer(gos_overridden.Data))
	C.clang_disposeOverriddenCursors(cp_overridden)
}
func (c Cursor) IncludedFile() File {
	return File{C.clang_getIncludedFile(c.c)}
}
func (c Cursor) Location() SourceLocation {
	return SourceLocation{C.clang_getCursorLocation(c.c)}
}
func (c Cursor) Extent() SourceRange {
	return SourceRange{C.clang_getCursorExtent(c.c)}
}
func (c Cursor) Type() Type {
	return Type{C.clang_getCursorType(c.c)}
}
func (c Cursor) TypedefDeclUnderlyingType() Type {
	return Type{C.clang_getTypedefDeclUnderlyingType(c.c)}
}
func (c Cursor) EnumDeclIntegerType() Type {
	return Type{C.clang_getEnumDeclIntegerType(c.c)}
}
func (c Cursor) EnumConstantDeclValue() int64 {
	return int64(C.clang_getEnumConstantDeclValue(c.c))
}
func (c Cursor) EnumConstantDeclUnsignedValue() uint64 {
	return uint64(C.clang_getEnumConstantDeclUnsignedValue(c.c))
}
func (c Cursor) FieldDeclBitWidth() int32 {
	return int32(C.clang_getFieldDeclBitWidth(c.c))
}
func (c Cursor) NumArguments() int32 {
	return int32(C.clang_Cursor_getNumArguments(c.c))
}
func (c Cursor) Argument(i uint32) Cursor {
	return Cursor{C.clang_Cursor_getArgument(c.c, C.uint(i))}
}
func (c Cursor) NumTemplateArguments() int32 {
	return int32(C.clang_Cursor_getNumTemplateArguments(c.c))
}
func (c Cursor) TemplateArgumentKind(i uint32) TemplateArgumentKind {
	return TemplateArgumentKind(C.clang_Cursor_getTemplateArgumentKind(c.c, C.uint(i)))
}
func (c Cursor) TemplateArgumentType(i uint32) Type {
	return Type{C.clang_Cursor_getTemplateArgumentType(c.c, C.uint(i))}
}
func (c Cursor) TemplateArgumentValue(i uint32) int64 {
	return int64(C.clang_Cursor_getTemplateArgumentValue(c.c, C.uint(i)))
}
func (c Cursor) TemplateArgumentUnsignedValue(i uint32) uint64 {
	return uint64(C.clang_Cursor_getTemplateArgumentUnsignedValue(c.c, C.uint(i)))
}
func (c Cursor) IsMacroFunctionLike() bool {
	o := C.clang_Cursor_isMacroFunctionLike(c.c)
	return o != C.uint(0)
}
func (c Cursor) IsMacroBuiltin() bool {
	o := C.clang_Cursor_isMacroBuiltin(c.c)
	return o != C.uint(0)
}
func (c Cursor) IsFunctionInlined() bool {
	o := C.clang_Cursor_isFunctionInlined(c.c)
	return o != C.uint(0)
}
func (c Cursor) DeclObjCTypeEncoding() string {
	o := cxstring{C.clang_getDeclObjCTypeEncoding(c.c)}
	defer o.Dispose()
	return o.String()
}
func (c Cursor) ResultType() Type {
	return Type{C.clang_getCursorResultType(c.c)}
}
func (c Cursor) OffsetOfField() int64 {
	return int64(C.clang_Cursor_getOffsetOfField(c.c))
}
func (c Cursor) IsAnonymous() bool {
	o := C.clang_Cursor_isAnonymous(c.c)
	return o != C.uint(0)
}
func (c Cursor) IsBitField() bool {
	o := C.clang_Cursor_isBitField(c.c)
	return o != C.uint(0)
}
func (c Cursor) IsVirtualBase() bool {
	o := C.clang_isVirtualBase(c.c)
	return o != C.uint(0)
}
func (c Cursor) AccessSpecifier() AccessSpecifier {
	return AccessSpecifier(C.clang_getCXXAccessSpecifier(c.c))
}
func (c Cursor) StorageClass() StorageClass {
	return StorageClass(C.clang_Cursor_getStorageClass(c.c))
}
func (c Cursor) NumOverloadedDecls() uint32 {
	return uint32(C.clang_getNumOverloadedDecls(c.c))
}