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))