Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25918
Modified Files: Tag: desiredata desire.c Log Message: maintain a std::map in parallel to boxes->list
Index: desire.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v retrieving revision 1.1.2.217.2.220 retrieving revision 1.1.2.217.2.221 diff -C2 -d -r1.1.2.217.2.220 -r1.1.2.217.2.221 *** desire.c 18 Aug 2007 02:26:25 -0000 1.1.2.217.2.220 --- desire.c 18 Aug 2007 02:59:39 -0000 1.1.2.217.2.221 *************** *** 80,91 ****
struct t_boxes : t_gobj { private: t_gobj *list; ! std::map<int,t_gobj *> future_use; public: t_boxes() : list(0) {} size_t size() { size_t n=0; boxes_each(g,this) n++; return n; } --- 80,94 ----
struct t_boxes : t_gobj { + typedef std::pair<int,t_gobj *> KV; private: t_gobj *list; ! std::map<int,t_gobj *> map; public: + void invariant () {size();} t_boxes() : list(0) {} size_t size() { size_t n=0; boxes_each(g,this) n++; + //post("map size=%d list size=%d",map.size(),n); return n; } *************** *** 98,109 **** } t_gobj *next(t_gobj *x) {return x->g_next;} ! void add(t_gobj *x) { /* will rely on x->index in the future */ t_gobj *r = last(); if (r) r->g_next = x; else list = x; x->g_next = 0; } void remove_by_value(t_gobj *x) { if (list == x) list = x->next(); else boxes_each(g,this) if (g->next() == x) {g->g_next = x->next(); break;} } }; --- 101,115 ---- } t_gobj *next(t_gobj *x) {return x->g_next;} ! void add(t_gobj *x) { /* the key is x->index, the value is x */ t_gobj *r = last(); if (r) r->g_next = x; else list = x; x->g_next = 0; + map.insert(KV(x->dix->index,x)); + invariant(); } void remove_by_value(t_gobj *x) { if (list == x) list = x->next(); else boxes_each(g,this) if (g->next() == x) {g->g_next = x->next(); break;} + invariant(); } }; *************** *** 2025,2029 **** void canvas_add(t_canvas *x, t_gobj *y) { gobj_setcanvas(y,x); - y->g_next = 0; y->dix->index = x->next_o_index++; x->boxes->add(y); --- 2031,2034 ----