xref: /openbsd-src/usr.sbin/npppd/common/bytebuf.h (revision 7a7bab9d0fc77be5441ab2f8918cffbfaff97012)
1*7a7bab9dSyasuoka /*	$OpenBSD: bytebuf.h,v 1.3 2012/05/08 13:15:11 yasuoka Exp $ */
20fbf3537Syasuoka /*-
30fbf3537Syasuoka  * Copyright (c) 2009 Internet Initiative Japan Inc.
40fbf3537Syasuoka  * All rights reserved.
50fbf3537Syasuoka  *
60fbf3537Syasuoka  * Redistribution and use in source and binary forms, with or without
70fbf3537Syasuoka  * modification, are permitted provided that the following conditions
80fbf3537Syasuoka  * are met:
90fbf3537Syasuoka  * 1. Redistributions of source code must retain the above copyright
100fbf3537Syasuoka  *    notice, this list of conditions and the following disclaimer.
110fbf3537Syasuoka  * 2. Redistributions in binary form must reproduce the above copyright
120fbf3537Syasuoka  *    notice, this list of conditions and the following disclaimer in the
130fbf3537Syasuoka  *    documentation and/or other materials provided with the distribution.
140fbf3537Syasuoka  *
150fbf3537Syasuoka  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
160fbf3537Syasuoka  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
170fbf3537Syasuoka  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
180fbf3537Syasuoka  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
190fbf3537Syasuoka  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
200fbf3537Syasuoka  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
210fbf3537Syasuoka  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
220fbf3537Syasuoka  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
230fbf3537Syasuoka  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
240fbf3537Syasuoka  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
250fbf3537Syasuoka  * SUCH DAMAGE.
260fbf3537Syasuoka  */
270fbf3537Syasuoka #ifndef	BYTEBUF_H
280fbf3537Syasuoka #define	BYTEBUF_H 1
290fbf3537Syasuoka 
30*7a7bab9dSyasuoka /* $Id: bytebuf.h,v 1.3 2012/05/08 13:15:11 yasuoka Exp $ */
310fbf3537Syasuoka 
320fbf3537Syasuoka typedef struct _bytebuffer bytebuffer;
330fbf3537Syasuoka 
340fbf3537Syasuoka extern const void * BYTEBUFFER_PUT_DIRECT;
350fbf3537Syasuoka extern void * BYTEBUFFER_GET_DIRECT;
360fbf3537Syasuoka 
370fbf3537Syasuoka #ifdef __cplusplus
380fbf3537Syasuoka extern "C" {
390fbf3537Syasuoka #endif
400fbf3537Syasuoka 
410fbf3537Syasuoka bytebuffer   *bytebuffer_create (size_t);
420fbf3537Syasuoka bytebuffer   *bytebuffer_wrap (void *, size_t);
430fbf3537Syasuoka void         *bytebuffer_unwrap (bytebuffer *);
440fbf3537Syasuoka int          bytebuffer_realloc (bytebuffer *, size_t);
450fbf3537Syasuoka void         bytebuffer_compact (bytebuffer *);
460fbf3537Syasuoka void         *bytebuffer_put (bytebuffer *, const void *, size_t);
470fbf3537Syasuoka void         *bytebuffer_get (bytebuffer *, void *, size_t);
480fbf3537Syasuoka int          bytebuffer_position (bytebuffer *);
490fbf3537Syasuoka int          bytebuffer_limit (bytebuffer *);
500fbf3537Syasuoka int          bytebuffer_capacity (bytebuffer *);
510fbf3537Syasuoka void         *bytebuffer_pointer (bytebuffer *);
520fbf3537Syasuoka size_t        bytebuffer_remaining (bytebuffer *);
530fbf3537Syasuoka int          bytebuffer_has_remaining (bytebuffer *);
540fbf3537Syasuoka void         bytebuffer_flip (bytebuffer *);
550fbf3537Syasuoka void         bytebuffer_rewind (bytebuffer *);
560fbf3537Syasuoka void         bytebuffer_clear (bytebuffer *);
570fbf3537Syasuoka void         bytebuffer_destroy (bytebuffer *);
580fbf3537Syasuoka void         bytebuffer_mark (bytebuffer *);
590fbf3537Syasuoka void         bytebuffer_reset (bytebuffer *);
600fbf3537Syasuoka 
610fbf3537Syasuoka #ifdef __cplusplus
620fbf3537Syasuoka }
630fbf3537Syasuoka #endif
640fbf3537Syasuoka 
650fbf3537Syasuoka #endif	/* !BYTEBUF_H */
66