"""utils fonctions non windows-related""" import ctypes def fixedpropety(f): cache_name = "_" + f.__name__ def prop(self): try: return getattr(self, cache_name) except AttributeError: setattr(self, cache_name, f(self)) return getattr(self, cache_name) return property(prop, doc=f.__doc__) def swallow_ctypes_copy(ctypes_object): new_copy = type(ctypes_object)() ctypes.memmove(ctypes.byref(new_copy), ctypes.byref(ctypes_object), ctypes.sizeof(new_copy)) return new_copy