func (sl SourceLocation) ExpansionLocation() (File, uint32, uint32, uint32) {
	var file File
	var line C.uint
	var column C.uint
	var offset C.uint
	C.clang_getExpansionLocation(sl.c, &file.c, &line, &column, &offset)
	return file, uint32(line), uint32(column), uint32(offset)
}
/*
Retrieve the file, line, column, and offset represented by
the given source location.

If the location refers into a macro expansion, retrieves the
location of the macro expansion.

Parameter location the location within a source file that will be decomposed
into its parts.

Parameter file [out] if non-NULL, will be set to the file to which the given
source location points.

Parameter line [out] if non-NULL, will be set to the line to which the given
source location points.

Parameter column [out] if non-NULL, will be set to the column to which the given
source location points.

Parameter offset [out] if non-NULL, will be set to the offset into the
buffer to which the given source location points.
package clang
import "C"
type SourceLocation struct {
	c C.CXSourceLocation
}
func NewNullLocation() SourceLocation {
	return SourceLocation{C.clang_getNullLocation()}
}
func (sl SourceLocation) Equal(sl2 SourceLocation) bool {
	o := C.clang_equalLocations(sl.c, sl2.c)
	return o != C.uint(0)
}
func (sl SourceLocation) IsInSystemHeader() bool {
	o := C.clang_Location_isInSystemHeader(sl.c)
	return o != C.int(0)
}
func (sl SourceLocation) IsFromMainFile() bool {
	o := C.clang_Location_isFromMainFile(sl.c)
	return o != C.int(0)
}
func (sl SourceLocation) Range(end SourceLocation) SourceRange {
	return SourceRange{C.clang_getRange(sl.c, end.c)}
}