Lines Matching defs:rs

29 #define RSALLOC(rs,r)	((r = rs->free) ? ((rs->free = r->right),r) : (r = rsalloc(rs)) )
30 #define RSFREE(rs,r) (r->right = rs->free, rs->free = r)
33 static Rsobj_t* rsalloc(Rs_t* rs)
35 static Rsobj_t* rsalloc(rs)
36 Rs_t* rs;
41 if(!(rs->free = r = (Rsobj_t*)vmalloc(rs->vm,RS_ALLOC*sizeof(Rsobj_t))) )
47 r = rs->free;
48 rs->free = r->right;
53 ssize_t rsprocess(Rs_t* rs, Void_t* argdata, ssize_t s_data)
55 ssize_t rsprocess(rs, argdata, s_data)
56 Rs_t* rs; /* Rs_t sort context */
64 reg ssize_t dsamelen = rs->disc->type&RS_DSAMELEN;
65 reg ssize_t d = rs->disc->data;
66 int (*insertf)_ARG_((Rs_t*, Rsobj_t*)) = rs->meth->insertf;
67 Rsdefkey_f defkeyf = rs->disc->defkeyf;
68 ssize_t key = rs->disc->key;
69 ssize_t keylen = rs->disc->keylen;
80 if((c_max = rs->c_max) <= 0)
83 if((rs->type&RS_SORTED) )
84 { if(rs->sorted)
86 rs->type &= ~RS_SORTED;
90 rs->count = 0;
110 if((rs->c_size += s_loop) > c_max && (r = (*rs->meth->listf)(rs)) )
113 list = (Rsobj_t**)vmresize(rs->vm, rs->list,
114 (rs->n_list+1)*sizeof(Rsobj_t*),
118 else rs->list = list;
119 rs->list[rs->n_list] = r;
120 rs->n_list += 1;
121 rs->c_size = s_loop;
128 { if(!RSALLOC(rs,r))
135 if(rs->events & RS_READ)
136 { if((n = rsnotify(rs,RS_READ,r,(Void_t*)0,rs->disc))<0)
139 { RSFREE(rs, r);
143 { if(!(endd = (uchar*)vmalloc(rs->vm,r->datalen)) || !(r->data = (uchar*)memcpy(endd, r->data, r->datalen)))
148 if((*insertf)(rs,r) < 0)
150 rs->count += 1;
180 if(!RSALLOC(rs,r))
196 rs->meth->type != RS_MTVERIFY)
201 if(vmresize(rs->vm,m_key,n,0) )
204 { vmresize(rs->vm,m_key,
210 { if(!(m_key = (uchar*)vmalloc(rs->vm,k)) )
217 k = (*defkeyf)(rs,r->data,r->datalen,c_key,s_key,rs->disc);
223 if(rs->meth->type == RS_MTVERIFY)
233 if(r->data != data || !(rs->events & RS_READ))
235 if((n = rsnotify(rs,RS_READ,r,(Void_t*)0,rs->disc))<0)
242 RSFREE(rs, r);
245 if (!(endd = (uchar*)vmalloc(rs->vm,r->datalen)) || !(r->data = (uchar*)memcpy(endd, r->data, r->datalen)))
249 if((*insertf)(rs,r) < 0)
251 rs->count += 1;
259 rs->c_size -= s_loop;
264 if(rs->meth->type == RS_MTVERIFY)
265 { (*rs->meth->listf)(rs);
266 rs->c_size = 0;
270 vmresize(rs->vm,m_key,c_key-m_key,0);