def slot_value(env, fact, slot): data = clips.data.DataObject(env) slot = slot if slot is not None else ffi.NULL implied = lib.implied_deftemplate(lib.EnvFactDeftemplate(env, fact)) if not implied and slot == ffi.NULL: raise ValueError() if bool(lib.EnvGetFactSlot(env, fact, slot, data.byref)): return data.value
def new_fact(env, fact): if lib.implied_deftemplate(lib.EnvFactDeftemplate(env, fact)): return ImpliedFact(env, fact) else: return TemplateFact(env, fact)
def template(self): """The associated Template.""" return Template(self._env, lib.EnvFactDeftemplate(self._env, self._fact))