// Code generated by "stringer -type=Class"; DO NOT EDIT.

package dwarf

import "strconv"

func _() {
	// An "invalid array index" compiler error signifies that the constant values have changed.
	// Re-run the stringer command to generate them again.
	var x [1]struct{}
	_ = x[ClassUnknown-0]
	_ = x[ClassAddress-1]
	_ = x[ClassBlock-2]
	_ = x[ClassConstant-3]
	_ = x[ClassExprLoc-4]
	_ = x[ClassFlag-5]
	_ = x[ClassLinePtr-6]
	_ = x[ClassLocListPtr-7]
	_ = x[ClassMacPtr-8]
	_ = x[ClassRangeListPtr-9]
	_ = x[ClassReference-10]
	_ = x[ClassReferenceSig-11]
	_ = x[ClassString-12]
	_ = x[ClassReferenceAlt-13]
	_ = x[ClassStringAlt-14]
	_ = x[ClassAddrPtr-15]
	_ = x[ClassLocList-16]
	_ = x[ClassRngList-17]
	_ = x[ClassRngListsPtr-18]
	_ = x[ClassStrOffsetsPtr-19]
}

const _Class_name = "ClassUnknownClassAddressClassBlockClassConstantClassExprLocClassFlagClassLinePtrClassLocListPtrClassMacPtrClassRangeListPtrClassReferenceClassReferenceSigClassStringClassReferenceAltClassStringAltClassAddrPtrClassLocListClassRngListClassRngListsPtrClassStrOffsetsPtr"

var _Class_index = [...]uint16{0, 12, 24, 34, 47, 59, 68, 80, 95, 106, 123, 137, 154, 165, 182, 196, 208, 220, 232, 248, 266}

func (i Class) String() string {
	if i < 0 || i >= Class(len(_Class_index)-1) {
		return "Class(" + strconv.FormatInt(int64(i), 10) + ")"
	}
	return _Class_name[_Class_index[i]:_Class_index[i+1]]
}
