Source code for entities.helpers

# ../entities/helpers.py

"""Provides helper functions to convert from one type to another."""

# =============================================================================
# >> IMPORTS
# =============================================================================
# Source.Python Imports
#   Core
from core.cache import CachedProperty


# =============================================================================
# >> FORWARD IMPORTS
# =============================================================================
# Source.Python Imports
#   Entities
from _entities._helpers import baseentity_from_basehandle
from _entities._helpers import baseentity_from_edict
from _entities._helpers import baseentity_from_index
from _entities._helpers import baseentity_from_inthandle
from _entities._helpers import baseentity_from_pointer
from _entities._helpers import basehandle_from_baseentity
from _entities._helpers import basehandle_from_edict
from _entities._helpers import basehandle_from_index
from _entities._helpers import basehandle_from_inthandle
from _entities._helpers import basehandle_from_pointer
from _entities._helpers import edict_from_baseentity
from _entities._helpers import edict_from_basehandle
from _entities._helpers import edict_from_index
from _entities._helpers import edict_from_inthandle
from _entities._helpers import edict_from_pointer
from _entities._helpers import find_output_name
from _entities._helpers import index_from_baseentity
from _entities._helpers import index_from_basehandle
from _entities._helpers import index_from_edict
from _entities._helpers import index_from_inthandle
from _entities._helpers import index_from_pointer
from _entities._helpers import inthandle_from_baseentity
from _entities._helpers import inthandle_from_basehandle
from _entities._helpers import inthandle_from_edict
from _entities._helpers import inthandle_from_index
from _entities._helpers import inthandle_from_pointer
from _entities._helpers import pointer_from_baseentity
from _entities._helpers import pointer_from_basehandle
from _entities._helpers import pointer_from_edict
from _entities._helpers import pointer_from_index
from _entities._helpers import pointer_from_inthandle
#   Memory
from memory.manager import MemberFunction


# =============================================================================
# >> ALL DECLARATION
# =============================================================================
__all__ = ('baseentity_from_basehandle',
           'baseentity_from_edict',
           'baseentity_from_index',
           'baseentity_from_inthandle',
           'baseentity_from_pointer',
           'basehandle_from_baseentity',
           'basehandle_from_edict',
           'basehandle_from_index',
           'basehandle_from_inthandle',
           'basehandle_from_pointer',
           'edict_from_baseentity',
           'edict_from_basehandle',
           'edict_from_index',
           'edict_from_inthandle',
           'edict_from_pointer',
           'find_output_name',
           'index_from_baseentity',
           'index_from_basehandle',
           'index_from_edict',
           'index_from_inthandle',
           'index_from_pointer',
           'inthandle_from_baseentity',
           'inthandle_from_basehandle',
           'inthandle_from_edict',
           'inthandle_from_index',
           'inthandle_from_pointer',
           'pointer_from_baseentity',
           'pointer_from_basehandle',
           'pointer_from_edict',
           'pointer_from_index',
           'pointer_from_inthandle',
           'EntityMemFuncWrapper',
           'wrap_entity_mem_func',
           )


# =============================================================================
# >> CLASSES
# =============================================================================
[docs]class EntityMemFuncWrapper(MemberFunction):
[docs] def __init__(self, wrapped_self, wrapper): func = wrapped_self.__getattr__(wrapper.__name__) super().__init__(func._manager, func._type_name, func, func._this) self.wrapper = wrapper self.wrapped_self = wrapped_self
def __call__(self, *args, **kwargs): return super().__call__( *self.wrapper(self.wrapped_self, *args, **kwargs))
[docs] def call_trampoline(self, *args, **kwargs): return super().call_trampoline( *self.wrapper(self.wrapped_self, *args, **kwargs))
[docs] def skip_hooks(self, *args, **kwargs): return super().skip_hooks( *self.wrapper(self.wrapped_self, *args, **kwargs))
# ============================================================================= # >> FUNCTIONS # =============================================================================
[docs]def wrap_entity_mem_func(wrapper): """A decorator to wrap an entity memory function.""" return CachedProperty( lambda self: EntityMemFuncWrapper(self, wrapper), doc=wrapper.__doc__ )