Lines Matching defs:rs

28 #define NOTIFY(rs,r,rsrv,endrsrv,cur,out,n) \
36 if ((c = rsnotify(rs, RS_WRITE, r, &out, rs->disc)) < 0) \
44 RESERVE(rs,f,rsrv,endrsrv,cur,out.datalen); \
54 #define RESERVE(rs,f,rsrv,endrsrv,cur,w) \
67 #define WRITE(rs,to,fr,len,t) { \
73 int rswrite(Rs_t* rs, Sfio_t* f, int type)
75 int rswrite(rs, f, type)
76 Rs_t* rs; /* sorting context */
90 if(type == RS_OTEXT && (rs->events & RS_READ))
93 if((n = rsnotify(rs,RS_READ,&usr,(Void_t*)0,rs->disc))<0)
95 if(n == RS_INSERT && rsprocess(rs, usr.data, usr.datalen) < 0)
99 if(GETLOCAL(rs,local))
100 { rsrv = rs->rsrv; endrsrv = rs->endrsrv; cur = rs->cur;
101 r = rs->sorted;
105 if(!(r = rslist(rs)) )
115 head = (rs->type&RS_DSAMELEN) ? -1 : (rs->disc->data & ~0xff) ? 0 : sizeof(ssize_t);
117 head = (rs->type&RS_DSAMELEN) ? -1 : sizeof(ssize_t);
121 { u = (rs->events & RS_WRITE) != 0;
122 if((rs->type&RS_UNIQ) && (rs->events & RS_SUMMARY))
127 if((c = RSNOTIFY(rs,RS_SUMMARY,r,0,rs->disc)) < 0)
140 RESERVE(rs,f,rsrv,endrsrv,cur,w);
142 NOTIFY(rs,r,rsrv,endrsrv,cur,out,n);
144 WRITE(rs,cur,r->data,w,d);
147 else if(local || (rs->type&RS_UNIQ) )
151 RESERVE(rs,f,rsrv,endrsrv,cur,w);
153 NOTIFY(rs,r,rsrv,endrsrv,cur,out,n);
155 WRITE(rs,cur,r->data,w,d);
161 { RESERVE(rs,f,rsrv,endrsrv,cur,w);
163 NOTIFY(rs,r,rsrv,endrsrv,cur,out,n);
165 WRITE(rs,cur,r->data,w,d);
173 RESERVE(rs,f,rsrv,endrsrv,cur,w);
175 NOTIFY(rs,r,rsrv,endrsrv,cur,out,n);
177 WRITE(rs,cur,r->data,w,d);
180 RESERVE(rs,f,rsrv,endrsrv,cur,w);
182 NOTIFY(rs,e,rsrv,endrsrv,cur,out,n);
184 WRITE(rs,cur,e->data,w,d);
191 { RESERVE(rs,f,rsrv,endrsrv,cur,w);
193 NOTIFY(rs,r,rsrv,endrsrv,cur,out,n);
195 WRITE(rs,cur,r->data,w,d);
197 { RESERVE(rs,f,rsrv,endrsrv,cur,w);
199 NOTIFY(rs,e,rsrv,endrsrv,cur,out,n);
201 WRITE(rs,cur,e->data,w,d);
209 if(n > 0 && (rs->type&RS_DATA) )
213 else if(rs->type&RS_UNIQ)
220 { RESERVE(rs,f,rsrv,endrsrv,cur,sizeof(ssize_t));
221 WRITE(rs,cur,(uchar*)(&n),sizeof(ssize_t),d);
224 if((rs->type&RS_UNIQ) && (rs->events & RS_SUMMARY))
229 if((c = RSNOTIFY(rs,RS_SUMMARY,r,0,rs->disc)) < 0)
242 RESERVE(rs,f,rsrv,endrsrv,cur,w);
244 WRITE(rs,cur,(uchar*)(&n),sizeof(ssize_t),d);
245 WRITE(rs,cur,r->data,n,d);
251 RESERVE(rs,f,rsrv,endrsrv,cur,w);
253 WRITE(rs,cur,(uchar*)(&n),sizeof(ssize_t),d);
254 WRITE(rs,cur,r->data,n,d);
260 { RESERVE(rs,f,rsrv,endrsrv,cur,w);
261 WRITE(rs,cur,r->data,w,d);
270 n = (rs->type&RS_DATA) ? -w : w;
279 RESERVE(rs,f,rsrv,endrsrv,cur,w);
280 WRITE(rs,cur,(uchar*)(&n),sizeof(ssize_t),d);
282 WRITE(rs,cur,(uchar*)(&r->datalen),sizeof(ssize_t),d);
283 WRITE(rs,cur,r->data,r->datalen,d);
294 RESERVE(rs,f,rsrv,endrsrv,cur,w);
296 WRITE(rs,cur,(uchar*)(&n),sizeof(ssize_t),d);
297 WRITE(rs,cur,o->data,n,d);
303 { RESERVE(rs,f,rsrv,endrsrv,cur,w);
304 WRITE(rs,cur,o->data,w,d);
311 { rs->rsrv = rsrv; rs->endrsrv = endrsrv; rs->cur = cur;
316 rsclear(rs);