def describe_schema_list(schema): d = [] clks = ['time', 'bar beat', 'song beat', 'bar'] for c in schema: if logic.is_pred_arity(c, 'u', 2): clk = clks[c.args[0] - 1] val = c.args[1] d.append('until %s %g' % (clk, val)) if logic.is_pred_arity(c, 'l', 2): clk = clks[c.args[0] - 1] val = c.args[1] d.append('at %s %g' % (clk, val)) if logic.is_pred_arity(c, 'm', 3): clk = clks[c.args[0] - 1] mod = c.args[1] rem = c.args[2] d.append('every %g %s' % (mod, clk)) if logic.is_pred_arity(c, 'z', 4): clk = clks[c.args[0] - 1] mod = c.args[1] rem1 = c.args[2] rem2 = c.args[3] d.append('every %g %s' % (mod, clk)) return ' '.join(d)
def make_filter(self, stream, slot): if logic.is_pred_arity(stream, 'conn', 4, 4): if stream.args[0] is not None: using = int(stream.args[0]) else: using = 0 if self.__auto_slot: using = using | (slot << 8) if stream.args[1] is not None: tgt = int(stream.args[1]) else: tgt = 0 id = stream.args[2] path = stream.args[3] if path is not None: return (id, piw.signal_dsc_filter(using, tgt, path)) else: return (id, piw.signal_cnc_filter(using, tgt)) print 'cop out of', stream return ('', piw.null_filter())
def concrete_objects(arg): """ Extract all the objects of a concrete argument as a list. With the singular constraint the single object will be returned as a list """ return [o.args[0] for o in arg if logic.is_pred_arity(o,'cnc',1) ]
def verb2_19_unconnect_from(self, subject, t, f): """ connect([un],global_unconnect_from,role(None,[concrete]),role(from,[concrete,singular])) """ f = self.database.to_database_id(action.concrete_object(f)) for o in action.concrete_objects(t): t2 = self.database.to_database_id(o) print 'un connect', t2, 'from', f tproxy = self.database.find_item(t2) objs = self.database.search_any_key( 'W', T('unconnect_from_list', t2, f, V('W'))) for (s, m) in objs: sproxy = self.database.find_item(s) cnxs = logic.parse_clauselist(sproxy.get_master()) for cnx in cnxs: if logic.is_pred_arity(cnx, 'conn', 5) and self.database.to_database_id( cnx.args[2]) == m: print 'disconnect', cnx, 'from', s yield interpreter.RpcAdapter( sproxy.invoke_rpc('disconnect', logic.render_term(cnx))) yield async .Coroutine.success()
def find_conn(aproxy, id): r = [] for cnx in cnxs: if logic.is_pred_arity(cnx, 'conn', 5) and cnx.args[2] == id: r.append(logic.render_term(cnx)) return r
def apply_schema(event, schema): event.event_clear() for c in schema.args[1]: if logic.is_pred_arity(c, 'u', 2): event.upper_bound(int(c.args[0]), float(c.args[1])) if logic.is_pred_arity(c, 'l', 2): event.lower_bound(int(c.args[0]), float(c.args[1])) if logic.is_pred_arity(c, 'm', 3): event.modulo(int(c.args[0]), int(c.args[1]), float(c.args[2])) if logic.is_pred_arity(c, 'z', 4): event.zone(int(c.args[0]), int(c.args[1]), float(c.args[2]), float(c.args[3]))
def __add_connection(self, src, delegate): iid = (max(self.__connection_iids) + 1 if self.__connection_iids else 1) (a, f) = self.make_filter(src, iid) if not paths.valid_id(a): return None self.__connection_iids.add(iid) hint = None if logic.is_pred_arity(src, 'conn', 5, 5): hint = src.args[4] s = PlumberSlot( iid, src, hint, self.create_plumber(PlumberConfig(a, f, iid, hint), self.__clock)) if hint == 'ctl': self.__cconnections = self.__cconnections + 1 else: self.__dconnections = self.__dconnections + 1 return s
def make_ctl_filter(self, stream, slot): if logic.is_pred_arity(stream, 'ctl', 2, 2): id = stream.args[0] path = stream.args[1] if path is not None: return (id, piw.signal_dsc_filter(slot, 0, path)) else: return (id, piw.signal_cnc_filter(slot, 0)) print 'cop out of', stream return ('', piw.null_filter())
def get_master_control(self, id, mid): proxy = self.__database.find_item(id) if (not proxy == None): master = proxy.get_master() terms = logic.parse_termlist(master or '') for t in terms: if logic.is_pred_arity(t, 'conn', 5, 5): # print '******',t.args[3] if t.args[2] == mid: #print 'ctrl for',id,'=',t.args[4] if (not t.args[4] == None): return t.args[4] return ''
def concrete_ids(self): return tuple([ o.args[0] for o in self.__objects if logic.is_pred_arity(o, 'cnc', 1) ])
def is_composite(obj): return logic.is_pred_arity(obj,'cmp',1)
def is_concrete(obj): return logic.is_pred_arity(obj,'cnc',1)
def is_virtual(obj): return logic.is_pred_arity(obj,'virtual',1)
def is_descriptor(obj): return logic.is_pred_arity(obj,'dsc',2)
def is_ideal(obj): return logic.is_pred_arity(obj,'ideal',2)