Source code for AutoArchive._mainf._core._interface_accessor

# _interface_accessor.py
#
# Project: AutoArchive
# License: GNU GPLv3
#
# Copyright (C) 2003 - 2011 Róbert Čerňanský



""":class:`_InterfaceAccessor` class."""



__all__ = ["_InterfaceAccessor"]



# {{{ INCLUDES

from .. import *

# }}} INCLUDES



# {{{ CLASSES

[docs]class _InterfaceAccessor(IInterfaceAccessor): ":class:`.IInterfaceAccessor` implementation." def __init__(self): # holds component interfaces in dictionary of type dict<type{IComponentInterface}: IComponentInterface> self.__interfaces = {}
[docs] def getComponentInterface(self, interfaceType): "See: :meth:`.IInterfaceAccessor.getComponentInterface()`." self.__checkInterfaceType(interfaceType) return self.__interfaces[interfaceType]
[docs] def registerComponentInterface(self, interfaceType, instance): "See: :meth:`.IInterfaceAccessor.registerComponentInterface()`." self.__checkInterfaceType(interfaceType) if not isinstance(instance, IComponentInterface): raise TypeError("interfaceType") if interfaceType in self.__interfaces: raise KeyError(str.format("Interface {} already registered.", interfaceType)) self.__interfaces[interfaceType] = instance
[docs] def unregisterComponentInterface(self, interfaceType): "See: :meth:`.IInterfaceAccessor.unregisterComponentInterface()`." self.__checkInterfaceType(interfaceType) del self.__interfaces[interfaceType]
@staticmethod def __checkInterfaceType(interfaceType): if not issubclass(interfaceType, IComponentInterface): raise TypeError("interfaceType") # }}} CLASSES