////////////////////////////////////////////////////////////////////////////////
// Do not modify!
// Generated by codergen
////////////////////////////////////////////////////////////////////////////////

package adb

import (
	"fmt"

	"android.googlesource.com/platform/tools/gpu/binary/schema"
)

var ConstantValues schema.Constants

const _DeviceState_name = "offlinedeviceunauthorized"

var _DeviceState_map = map[DeviceState]string{}

func init() {
	_DeviceState_map[0] = _DeviceState_name[0:7]
	_DeviceState_map[1] = _DeviceState_name[7:13]
	_DeviceState_map[2] = _DeviceState_name[13:25]

	ConstantValues = append(ConstantValues, schema.ConstantSet{
		Type: &schema.Primitive{Name: "DeviceState", Method: schema.Int32},
		Entries: []schema.Constant{
			{Name: _DeviceState_name[0:7], Value: int32(0)},
			{Name: _DeviceState_name[7:13], Value: int32(1)},
			{Name: _DeviceState_name[13:25], Value: int32(2)},
		},
	})
}

func (v DeviceState) String() string {
	if s, ok := _DeviceState_map[v]; ok {
		return s
	}
	return fmt.Sprintf("DeviceState(%d)", v)
}

func (v *DeviceState) Parse(s string) error {
	for k, t := range _DeviceState_map {
		if s == t {
			*v = k
			return nil
		}
	}
	return fmt.Errorf("%s not in DeviceState", s)
}
