Files
Arquivotheca.AIX-4.1.3/bldenv/make/buf.h
seta75D d6fe8fe829 Init
2021-10-11 22:19:34 -03:00

133 lines
4.4 KiB
C

/* @(#)33 1.3 src/bldenv/make/buf.h, bldprocess, bos412, GOLDA411a 1/19/94 16:26:28
*
* COMPONENT_NAME: BLDPROCESS
*
* FUNCTIONS: Buf_AddByte
* Buf_GetBase
* Buf_Size
*
* ORIGINS: 27,71
*
* This module contains IBM CONFIDENTIAL code. -- (IBM
* Confidential Restricted when combined with the aggregated
* modules for this product)
* SOURCE MATERIALS
*
* (C) COPYRIGHT International Business Machines Corp. 1994
* All Rights Reserved
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*/
/*
* @OSF_FREE_COPYRIGHT@
* COPYRIGHT NOTICE
* Copyright (c) 1992, 1991, 1990
* Open Software Foundation, Inc.
*
* Permission is hereby granted to use, copy, modify and freely distribute
* the software in this file and its documentation for any purpose without
* fee, provided that the above copyright notice appears in all copies and
* that both the copyright notice and this permission notice appear in
* supporting documentation. Further, provided that the name of Open
* Software Foundation, Inc. ("OSF") not be used in advertising or
* publicity pertaining to distribution of the software without prior
* written permission from OSF. OSF makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
/*
* HISTORY
* $Log: buf.h,v $
* Revision 1.2.2.3 1992/12/03 19:04:58 damon
* ODE 2.2 CR 346. Expanded copyright
* [1992/12/03 18:34:55 damon]
*
* Revision 1.2.2.2 1992/09/24 19:23:29 gm
* CR286: Major improvements to make internals.
* [1992/09/24 17:53:36 gm]
*
* Revision 1.2 1991/12/05 20:42:08 devrcs
* Changes for Reno make
* [91/03/22 15:42:20 mckeen]
*
* $EndLog$
*/
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
* Copyright (c) 1988, 1989 by Adam de Boor
* Copyright (c) 1989 by Berkeley Softworks
* All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Adam de Boor.
*
* Redistribution and use in source and binary forms are permitted provided
* that: (1) source distributions retain this entire copyright notice and
* comment, and (2) distributions including binaries display the following
* acknowledgement: ``This product includes software developed by the
* University of California, Berkeley and its contributors'' in the
* documentation or other materials provided with the distribution and in
* all advertising materials mentioning features or use of this software.
* Neither the name of the University nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* @(#)buf.h 5.4 (Berkeley) 12/28/90
*/
/*-
* buf.h --
* Header for users of the buf library.
*/
#ifndef _BUF_H
#define _BUF_H
#include "sprite.h"
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(int); /* Initialize a buffer */
void Buf_Destroy(Buffer); /* Destroy a buffer */
void Buf_OvAddByte(Buffer, int);
/* Add a byte to a buffer */
void Buf_AddBytes(Buffer, int, Byte *);
/* Add a range of bytes to a buffer */
int Buf_GetByte(Buffer); /* Get a byte from a buffer */
int Buf_GetBytes(Buffer, int, Byte *);
/* Get multiple bytes */
void Buf_UngetByte(Buffer, int);
/* Push a byte back into the buffer */
void Buf_UngetBytes(Buffer, int, Byte *);
/* Push many bytes back into the buf */
void Buf_Discard(Buffer, int);
/* Throw away some of the bytes */
/* Buf_AddByte adds a single byte to a buffer. */
#define Buf_AddByte(bp, byte) { \
if (--(bp)->left <= 0) \
Buf_OvAddByte(bp, byte); \
else { \
*(bp)->inPtr++ = (byte); \
*(bp)->inPtr = 0; \
} \
}
#define Buf_Size(bp) ((bp)->inPtr - (bp)->outPtr)
#define Buf_GetBase(bp) ((bp)->outPtr)
#define BUF_ERROR 256
#endif /* _BUF_H */