Source code for vmware.vapi.bindings.enum
"""
Bindings data classes
"""
__author__ = 'VMware, Inc.'
__copyright__ = 'Copyright (c) 2015-2016 VMware, Inc. All rights reserved.'
import six
# Disabling the pylint complaint about badly implemented container
# as we don't need __setitem__, __delitem__ and __getitem__
[docs]class Enum(six.text_type): # pylint: disable=R0924
"""
Representation of IDL Enum in python language bindings
"""
_binding_type = None
_values = []
@classmethod
def _set_binding_type(cls, binding_type):
"""
Set the underlying BindingType for this VapiStruct.
:type binding_type: :class:`vmware.vapi.data.value.BindingType`
:param binding_type: BindingType for this VapiStruct
"""
cls._binding_type = binding_type
@classmethod
[docs] def get_binding_type(cls):
"""
Returns the corresponding BindingType for the VapiStruct class
:rtype: :class:`vmware.vapi.data.value.BindingType` or ``None``
:return: BindingType for this VapiStruct
"""
return cls._binding_type
@classmethod
[docs] def get_values(cls):
"""
Returns the list of all the possible enum values
:rtype: :class:`list` of :class:`vmware.vapi.bindings.enum.Enum`
:return: List of all possible enum values
"""
return cls._values
@classmethod
def _set_values(cls, values):
"""
Set the list of the enum values and assign them to respective class
attributes
:type :class:`list` of :class:`vmware.vapi.bindings.enum.Enum`
:param List of all possible enum values
"""
cls._values = list(values)
for val in cls._values:
setattr(cls, val, val)
[docs] def is_unknown(self):
"""
Returns whether the enum value stored is one of the known values or not
:rtype: :class:`bool`
:return: True if the enum value is not known
"""
return not (self in self._values)
def __repr__(self):
class_name = self.__class__.__name__
return '%s(string=%s)' % (class_name, six.text_type.__repr__(self))