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

package states

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[ObjectReady-82]
	_ = x[ObjectTainted-84]
	_ = x[ObjectPlanned-80]
}

const (
	_ObjectStatus_name_0 = "ObjectPlanned"
	_ObjectStatus_name_1 = "ObjectReady"
	_ObjectStatus_name_2 = "ObjectTainted"
)

func (i ObjectStatus) String() string {
	switch {
	case i == 80:
		return _ObjectStatus_name_0
	case i == 82:
		return _ObjectStatus_name_1
	case i == 84:
		return _ObjectStatus_name_2
	default:
		return "ObjectStatus(" + strconv.FormatInt(int64(i), 10) + ")"
	}
}
