from Attr import Attr
from types import StringType, IntType


class EnumAttr(Attr):

	def __init__(self, dict):
		Attr.__init__(self, dict)
		# We expect than an 'Enums' key holds the enumeration values
		enums = self['Enums']
		enums = enums.split(',')
		enums = [enum.strip() for enum in enums]
		self._enums = enums
		set = {}
		i = 0
		for enum in self._enums:
			set[enum] = i
			i += 1
		self._enumSet = set

	def enums(self):
		"""
		Returns a sequence of the enum values in their string form.
		"""
		return self._enums

	def hasEnum(self, value):
		if isinstance(value, StringType):
			return self._enumSet.has_key(value)
		else:
			return value>=0 and value<len(self._enums)

	def intValueForString(self, s):
		return self._enumSet[s]
