Mercurial > hg > cdb
comparison buffer.h @ 0:2cb46628feec
from cdb-0.75 per http://cr.yp.to/cdb.html,
retrieved 2025-01-03,
contents appear to have been create on 2000-02-19
| author | Henry S. Thompson <ht@inf.ed.ac.uk> |
|---|---|
| date | Wed, 29 Jan 2025 10:50:34 +0000 |
| parents | |
| children | 3bfef1f22a97 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:2cb46628feec |
|---|---|
| 1 #ifndef BUFFER_H | |
| 2 #define BUFFER_H | |
| 3 | |
| 4 typedef struct buffer { | |
| 5 char *x; | |
| 6 unsigned int p; | |
| 7 unsigned int n; | |
| 8 int fd; | |
| 9 int (*op)(); | |
| 10 } buffer; | |
| 11 | |
| 12 #define BUFFER_INIT(op,fd,buf,len) { (buf), 0, (len), (fd), (op) } | |
| 13 #define BUFFER_INSIZE 8192 | |
| 14 #define BUFFER_OUTSIZE 8192 | |
| 15 | |
| 16 extern void buffer_init(buffer *,int (*)(),int,char *,unsigned int); | |
| 17 | |
| 18 extern int buffer_flush(buffer *); | |
| 19 extern int buffer_put(buffer *,char *,unsigned int); | |
| 20 extern int buffer_putalign(buffer *,char *,unsigned int); | |
| 21 extern int buffer_putflush(buffer *,char *,unsigned int); | |
| 22 extern int buffer_puts(buffer *,char *); | |
| 23 extern int buffer_putsalign(buffer *,char *); | |
| 24 extern int buffer_putsflush(buffer *,char *); | |
| 25 | |
| 26 #define buffer_PUTC(s,c) \ | |
| 27 ( ((s)->n != (s)->p) \ | |
| 28 ? ( (s)->x[(s)->p++] = (c), 0 ) \ | |
| 29 : buffer_put((s),&(c),1) \ | |
| 30 ) | |
| 31 | |
| 32 extern int buffer_get(buffer *,char *,unsigned int); | |
| 33 extern int buffer_bget(buffer *,char *,unsigned int); | |
| 34 extern int buffer_feed(buffer *); | |
| 35 | |
| 36 extern char *buffer_peek(buffer *); | |
| 37 extern void buffer_seek(buffer *,unsigned int); | |
| 38 | |
| 39 #define buffer_PEEK(s) ( (s)->x + (s)->n ) | |
| 40 #define buffer_SEEK(s,len) ( ( (s)->p -= (len) ) , ( (s)->n += (len) ) ) | |
| 41 | |
| 42 #define buffer_GETC(s,c) \ | |
| 43 ( ((s)->p > 0) \ | |
| 44 ? ( *(c) = (s)->x[(s)->n], buffer_SEEK((s),1), 1 ) \ | |
| 45 : buffer_get((s),(c),1) \ | |
| 46 ) | |
| 47 | |
| 48 extern int buffer_copy(buffer *,buffer *); | |
| 49 | |
| 50 extern buffer *buffer_0; | |
| 51 extern buffer *buffer_0small; | |
| 52 extern buffer *buffer_1; | |
| 53 extern buffer *buffer_1small; | |
| 54 extern buffer *buffer_2; | |
| 55 | |
| 56 #endif |
