func (c Cursor) CXXField_IsMutable() bool {
	o := C.clang_CXXField_isMutable(c.c)
	return o != C.uint(0)
}
Determine if a C++ field is declared 'mutable'.
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))
}
func (c Cursor) OverloadedDecl(index uint32) Cursor {
	return Cursor{C.clang_getOverloadedDecl(c.c, C.uint(index))}
}
func (c Cursor) IBOutletCollectionType() Type {
	return Type{C.clang_getIBOutletCollectionType(c.c)}
}
func (c Cursor) USR() string {
	o := cxstring{C.clang_getCursorUSR(c.c)}
	defer o.Dispose()
	return o.String()
}
func (c Cursor) Spelling() string {
	o := cxstring{C.clang_getCursorSpelling(c.c)}
	defer o.Dispose()
	return o.String()
}
func (c Cursor) SpellingNameRange(pieceIndex uint32, options uint32) SourceRange {
	return SourceRange{C.clang_Cursor_getSpellingNameRange(c.c, C.uint(pieceIndex), C.uint(options))}
}
func (c Cursor) DisplayName() string {
	o := cxstring{C.clang_getCursorDisplayName(c.c)}
	defer o.Dispose()
	return o.String()
}
func (c Cursor) Referenced() Cursor {
	return Cursor{C.clang_getCursorReferenced(c.c)}
}
func (c Cursor) Definition() Cursor {
	return Cursor{C.clang_getCursorDefinition(c.c)}
}
func (c Cursor) IsCursorDefinition() bool {
	o := C.clang_isCursorDefinition(c.c)
	return o != C.uint(0)
}
func (c Cursor) CanonicalCursor() Cursor {
	return Cursor{C.clang_getCanonicalCursor(c.c)}
}
func (c Cursor) SelectorIndex() int32 {
	return int32(C.clang_Cursor_getObjCSelectorIndex(c.c))
}
func (c Cursor) IsDynamicCall() bool {
	o := C.clang_Cursor_isDynamicCall(c.c)
	return o != C.int(0)
}
func (c Cursor) ReceiverType() Type {
	return Type{C.clang_Cursor_getReceiverType(c.c)}
}
func (c Cursor) PropertyAttributes(reserved uint32) uint32 {
	return uint32(C.clang_Cursor_getObjCPropertyAttributes(c.c, C.uint(reserved)))
}
func (c Cursor) DeclQualifiers() uint32 {
	return uint32(C.clang_Cursor_getObjCDeclQualifiers(c.c))
}
func (c Cursor) IsObjCOptional() bool {
	o := C.clang_Cursor_isObjCOptional(c.c)
	return o != C.uint(0)
}
func (c Cursor) IsVariadic() bool {
	o := C.clang_Cursor_isVariadic(c.c)
	return o != C.uint(0)
}
func (c Cursor) CommentRange() SourceRange {
	return SourceRange{C.clang_Cursor_getCommentRange(c.c)}
}
func (c Cursor) RawCommentText() string {
	o := cxstring{C.clang_Cursor_getRawCommentText(c.c)}
	defer o.Dispose()
	return o.String()
}
func (c Cursor) BriefCommentText() string {
	o := cxstring{C.clang_Cursor_getBriefCommentText(c.c)}
	defer o.Dispose()
	return o.String()
}
func (c Cursor) Mangling() string {
	o := cxstring{C.clang_Cursor_getMangling(c.c)}
	defer o.Dispose()
	return o.String()
}
func (c Cursor) Manglings() *StringSet {
	o := C.clang_Cursor_getCXXManglings(c.c)
	var gop_o *StringSet
	if o != nil {
		gop_o = &StringSet{*o}
	}
	return gop_o
}
func (c Cursor) Module() Module {
	return Module{C.clang_Cursor_getModule(c.c)}
}
func (c Cursor) CXXConstructor_IsConvertingConstructor() bool {
	o := C.clang_CXXConstructor_isConvertingConstructor(c.c)
	return o != C.uint(0)
}
func (c Cursor) CXXConstructor_IsCopyConstructor() bool {
	o := C.clang_CXXConstructor_isCopyConstructor(c.c)
	return o != C.uint(0)
}
func (c Cursor) CXXConstructor_IsDefaultConstructor() bool {
	o := C.clang_CXXConstructor_isDefaultConstructor(c.c)
	return o != C.uint(0)
}
func (c Cursor) CXXConstructor_IsMoveConstructor() bool {
	o := C.clang_CXXConstructor_isMoveConstructor(c.c)
	return o != C.uint(0)
}