def _delete(self, skip_free=False): if not self.__o: return if self._del and skip_free: ffi.gc(self.__o, None) self.__o = None self.__owner = None self.__references = None
def log(self): yield from sq_iterator( ffi.gc( lib.sq_mapping_log(self.context().ref(), self.ref()), lib.sq_log_iter_free), lib.sq_log_iter_next, lambda x: Log(x, context=self.context()))
def log(cls, ctx): yield from sq_iterator( ffi.gc( lib.sq_store_server_log(ctx.ref()), lib.sq_log_iter_free), lib.sq_log_iter_next, lambda x: Log(x, context=ctx))
def ref_replace(self, new, owner=None, references=None): old = self.ref_consume() if self._del and owner == None: # There is a destructor and We own the referenced object # new. self.__o = ffi.gc(new, self._del) else: self.__o = new self.__owner = owner self.__references = references return old
def list_keys(cls, ctx): def next_fn(i): fpp = ffi.new("pgp_fingerprint_t[1]") key = lib.sq_key_iter_next(i, fpp) if key == ffi.NULL: return ffi.NULL else: return (Fingerprint(fpp[0], ctx), Key(key, ctx)) yield from sq_iterator( ffi.gc(lib.sq_store_list_keys(ctx.ref()), lib.sq_key_iter_free), next_fn)
def iter(self): def next_fn(i): labelp = ffi.new("char *[1]") fpp = ffi.new("pgp_fingerprint_t[1]") binding = lib.sq_binding_iter_next(i, labelp, fpp) if binding == ffi.NULL: return ffi.NULL else: return (_str(labelp[0]), Fingerprint(fpp[0], self.context()), Binding(binding, self.context())) yield from sq_iterator( ffi.gc(lib.sq_mapping_iter(self.context().ref(), self.ref()), lib.sq_binding_iter_free), next_fn)
def log(self): yield from sq_iterator( ffi.gc(lib.sq_key_log(self.context().ref(), self.ref()), lib.sq_log_iter_free), lib.sq_log_iter_next)
def __init__(self, o): self.__o = ffi.gc(o, lib.pgp_error_free) super(SQError, self).__init__(sq_str(lib.pgp_error_to_string(self.__o)))