Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16701
Modified Files: Tag: desiredata kernel.c Log Message: some more t_hash changes
Index: kernel.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/kernel.c,v retrieving revision 1.1.2.73 retrieving revision 1.1.2.74 diff -C2 -d -r1.1.2.73 -r1.1.2.74 *** kernel.c 30 Jul 2007 19:56:29 -0000 1.1.2.73 --- kernel.c 30 Jul 2007 20:11:22 -0000 1.1.2.74 *************** *** 1,3 **** ! /* Copyright 2006-2007 Mathieu Bouchard. * Copyright (c) 1997-2006 Miller Puckette. * For information on usage and redistribution, and for a DISCLAIMER OF ALL --- 1,4 ---- ! /* $Id$ ! * Copyright 2006-2007 Mathieu Bouchard. * Copyright (c) 1997-2006 Miller Puckette. * For information on usage and redistribution, and for a DISCLAIMER OF ALL *************** *** 107,123 ****
t_class *hash_class; - t_hash::t_hash(long capa_) { capa = capa_; n=0; i=0; ! tab = (t_hashentry **)malloc(capa*sizeof(void*)); for (long j=0; j<capa; j++) tab[j]=0; } ! ! t_hash::~t_hash() { ! free(tab); ! } ! void t_hash::start() {i=0; m_next=0;} int t_hash::next(hashkey *kp, hashvalue *vp) { --- 108,119 ----
t_class *hash_class; t_hash::t_hash(long capa_) { capa = capa_; n=0; i=0; ! tab = new t_hashentry *[capa]; for (long j=0; j<capa; j++) tab[j]=0; } ! t_hash::~t_hash() {delete[] tab;} void t_hash::start() {i=0; m_next=0;} int t_hash::next(hashkey *kp, hashvalue *vp) { *************** *** 131,140 **** return 0; } - long t_hash::hash(hashkey k) { long h = ((long)k*0x54321) & 0x7FFFFFFF; return h%capa; } - int t_hash::exists(hashkey k) { long h = hash(k); --- 127,134 ---- *************** *** 147,156 **** return 0; } - void t_hash::set(hashkey k, hashvalue v) { long h = hash(k); t_hashentry *nu; for (t_hashentry *e=tab[h]; e; e=e->next) {if (e->k==k) {e->v=v; return;}} ! nu = (t_hashentry *)malloc(sizeof(t_hashentry)); n++; nu->k=k; --- 141,149 ---- return 0; } void t_hash::set(hashkey k, hashvalue v) { long h = hash(k); t_hashentry *nu; for (t_hashentry *e=tab[h]; e; e=e->next) {if (e->k==k) {e->v=v; return;}} ! nu = new t_hashentry; n++; nu->k=k; *************** *** 159,163 **** tab[h] = nu; } - hashvalue t_hash::del(hashkey k) { long h = hash(k); --- 152,155 ---- *************** *** 166,170 **** hashvalue v=(*ep)->v; t_hashentry *next=(*ep)->next; ! free(*ep); n--; *ep = next; return v; --- 158,162 ---- hashvalue v=(*ep)->v; t_hashentry *next=(*ep)->next; ! delete *ep; n--; *ep = next; return v;