Update of /cvsroot/pure-data/externals/grill/absattr In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3374
Modified Files: absattr.cpp Log Message: use new ToSys* methods a few fixes (printout and initialization) attempt fix for bug #143.
Index: absattr.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/absattr/absattr.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** absattr.cpp 2 Nov 2006 19:03:52 -0000 1.5 --- absattr.cpp 20 Jan 2007 14:26:45 -0000 1.6 *************** *** 3,7 **** absattr - patcher attributes
! Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. --- 3,7 ---- absattr - patcher attributes
! Copyright (c) 2002-2007 Thomas Grill (gr@grrrr.org) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. *************** *** 9,13 **** */
! #define VERSION "0.2.0"
#include <flext.h> --- 9,13 ---- */
! #define VERSION "0.2.1"
#include <flext.h> *************** *** 45,50 ****
// add to loadbang registry ! Objects &o = loadbangs[parent].obj; ! o.insert(this); }
--- 45,56 ----
// add to loadbang registry ! Loadbangs::iterator it = loadbangs.find(parent); ! if(it != loadbangs.end()) ! it->second.obj.insert(this); ! else { ! Loadbang &lb = loadbangs[parent]; ! lb.lasttime = -1; ! lb.obj.insert(this); ! } }
*************** *** 67,71 **** } else ! error("%s - not found in loadbang registry"); }
--- 73,77 ---- } else ! error("%s - not found in loadbang registry (parent=%i)",thisName(),parent); }
*************** *** 125,149 **** virtual void CbLoadbang() { ! // all loadbangs have the same logical time ! double time = GetTime();
! Loadbangs::iterator it = loadbangs.find(parent); ! if(it != loadbangs.end()) { ! Loadbang &lb = it->second; ! // found ! if(lb.lasttime < time) { ! // bang all objects with the same parent in the prioritized order ! for(Objects::iterator oit = lb.obj.begin(); oit != lb.obj.end(); ++oit) { ! absattr *o = *oit; ! FLEXT_ASSERT(o); ! if(o->loadbang) o->m_bang(); ! }
! // set timestamp ! lb.lasttime = time; } } - else - error("%s - not found in database"); }
--- 131,163 ---- virtual void CbLoadbang() { ! if(parent) { ! // we are a sub-abstraction, sharing a parent with others
! // all loadbangs have the same logical time ! double time = GetTime();
! Loadbangs::iterator it = loadbangs.find(parent); ! if(it != loadbangs.end()) { ! Loadbang &lb = it->second; ! // found ! if(lb.lasttime < time) { ! // bang all objects with the same parent in the prioritized order ! for(Objects::iterator oit = lb.obj.begin(); oit != lb.obj.end(); ++oit) { ! absattr *o = *oit; ! FLEXT_ASSERT(o); ! if(o->loadbang) o->m_bang(); ! } ! ! // set timestamp ! lb.lasttime = time; ! } } + else + error("%s - not found in database",thisName()); + } + else { + // loadbang only this + if(loadbang) m_bang(); } }
*************** *** 250,253 **** --- 264,269 ---- static void Setup(t_classid cl) { + post("absattr " VERSION ", (C)2006-2007 Thomas Grill"); + sym_attributes = MakeSymbol("attributes"); sym_loadbang = MakeSymbol("loadbang");