replace hash.c; speedup/cleanup from Chris Torek
[unix-history] / usr / src / usr.bin / make / buf.h
index 5940a03..14e5bba 100644 (file)
@@ -9,7 +9,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)buf.h       5.3 (Berkeley) %G%
+ *     @(#)buf.h       5.4 (Berkeley) %G%
  */
 
 /*-
  */
 
 /*-
 
 #include    "sprite.h"
 
 
 #include    "sprite.h"
 
-typedef struct Buffer *Buffer;
 typedef unsigned char Byte;
 
 typedef unsigned char Byte;
 
+typedef struct Buffer {
+    int            size;       /* Current size of the buffer */
+    int     left;      /* Space left (== size - (inPtr - buffer)) */
+    Byte    *buffer;   /* The buffer itself */
+    Byte    *inPtr;    /* Place to write to */
+    Byte    *outPtr;   /* Place to read from */
+} *Buffer;
+
 Buffer           Buf_Init();       /* Initialize a buffer */
 void             Buf_Destroy();    /* Destroy a buffer */
 Buffer           Buf_Init();       /* Initialize a buffer */
 void             Buf_Destroy();    /* Destroy a buffer */
-void             Buf_AddByte();    /* Add a single byte to a buffer */
 void             Buf_AddBytes();   /* Add a range of bytes to a buffer */
 int              Buf_GetByte();    /* Get a byte from a buffer */
 int              Buf_GetBytes();   /* Get multiple bytes */
 void             Buf_AddBytes();   /* Add a range of bytes to a buffer */
 int              Buf_GetByte();    /* Get a byte from a buffer */
 int              Buf_GetBytes();   /* Get multiple bytes */
@@ -37,6 +43,13 @@ Byte           *Buf_GetAll();    /* Get them all */
 void             Buf_Discard();    /* Throw away some of the bytes */
 int              Buf_Size();       /* See how many are there */
 
 void             Buf_Discard();    /* Throw away some of the bytes */
 int              Buf_Size();       /* See how many are there */
 
+/* Buf_AddByte adds a single byte to a buffer. */
+#define        Buf_AddByte(bp, byte) \
+       (--(bp)->left <= 0 ? Buf_OvAddByte(bp, byte) : \
+               (void)(*(bp)->inPtr++ = (byte), *(bp)->inPtr = 0))
+
+void   Buf_OvAddByte();                /* adds a byte when buffer overflows */
+
 #define BUF_ERROR 256
 
 #endif _BUF_H
 #define BUF_ERROR 256
 
 #endif _BUF_H