Mercurial > hg > index.fcgi > gift-gnutella > gift-gnutella-0.0.11-1pba
annotate src/io/io_buf.h @ 0:d39e1d0d75b6
initial add
author | paulo@hit-nxdomain.opendns.com |
---|---|
date | Sat, 20 Feb 2010 21:18:28 -0800 |
parents | |
children |
rev | line source |
---|---|
paulo@0 | 1 /* |
paulo@0 | 2 * $Id: io_buf.h,v 1.2 2003/09/17 17:44:11 hipnod Exp $ |
paulo@0 | 3 * |
paulo@0 | 4 * Copyright (C) 2003 giFT project (gift.sourceforge.net) |
paulo@0 | 5 * |
paulo@0 | 6 * This program is free software; you can redistribute it and/or modify it |
paulo@0 | 7 * under the terms of the GNU General Public License as published by the |
paulo@0 | 8 * Free Software Foundation; either version 2, or (at your option) any |
paulo@0 | 9 * later version. |
paulo@0 | 10 * |
paulo@0 | 11 * This program is distributed in the hope that it will be useful, but |
paulo@0 | 12 * WITHOUT ANY WARRANTY; without even the implied warranty of |
paulo@0 | 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
paulo@0 | 14 * General Public License for more details. |
paulo@0 | 15 */ |
paulo@0 | 16 |
paulo@0 | 17 #ifndef GIFT_GT_IO_BUF_H_ |
paulo@0 | 18 #define GIFT_GT_IO_BUF_H_ |
paulo@0 | 19 |
paulo@0 | 20 /*****************************************************************************/ |
paulo@0 | 21 |
paulo@0 | 22 /* |
paulo@0 | 23 * This duplicates libgift's String somewhat... |
paulo@0 | 24 */ |
paulo@0 | 25 struct io_buf |
paulo@0 | 26 { |
paulo@0 | 27 uint8_t *data; |
paulo@0 | 28 size_t size; |
paulo@0 | 29 size_t r_offs; |
paulo@0 | 30 size_t w_offs; |
paulo@0 | 31 }; |
paulo@0 | 32 |
paulo@0 | 33 /*****************************************************************************/ |
paulo@0 | 34 |
paulo@0 | 35 /* |
paulo@0 | 36 * Macros for accessing particular things about an I/O buf... |
paulo@0 | 37 */ |
paulo@0 | 38 |
paulo@0 | 39 #define io_buf_read_avail(io_buf) \ |
paulo@0 | 40 ((io_buf)->w_offs - (io_buf)->r_offs) |
paulo@0 | 41 |
paulo@0 | 42 #define io_buf_len(io_buf) \ |
paulo@0 | 43 ((io_buf)->w_offs) |
paulo@0 | 44 |
paulo@0 | 45 #define io_buf_size(io_buf) \ |
paulo@0 | 46 ((io_buf)->size) |
paulo@0 | 47 |
paulo@0 | 48 #define io_buf_write_avail(io_buf) \ |
paulo@0 | 49 ((io_buf)->size - (io_buf)->w_offs) |
paulo@0 | 50 |
paulo@0 | 51 #define io_buf_write_ptr(io_buf) \ |
paulo@0 | 52 (&(io_buf)->data[(io_buf)->w_offs]) |
paulo@0 | 53 |
paulo@0 | 54 #define io_buf_read_ptr(iobuf) \ |
paulo@0 | 55 (&(iobuf)->data[(iobuf)->r_offs]) |
paulo@0 | 56 |
paulo@0 | 57 /*****************************************************************************/ |
paulo@0 | 58 |
paulo@0 | 59 struct io_buf *io_buf_new (size_t len); |
paulo@0 | 60 void io_buf_free (struct io_buf *buf); |
paulo@0 | 61 uint8_t *io_buf_free_keep (struct io_buf *buf); |
paulo@0 | 62 |
paulo@0 | 63 BOOL io_buf_resize (struct io_buf *buf, size_t len); |
paulo@0 | 64 void io_buf_reset (struct io_buf *buf); |
paulo@0 | 65 |
paulo@0 | 66 void io_buf_push (struct io_buf *buf, size_t len); |
paulo@0 | 67 void io_buf_pop (struct io_buf *buf, size_t len); |
paulo@0 | 68 |
paulo@0 | 69 size_t io_buf_copy (struct io_buf *dst, struct io_buf *src, |
paulo@0 | 70 size_t len); |
paulo@0 | 71 |
paulo@0 | 72 /*****************************************************************************/ |
paulo@0 | 73 |
paulo@0 | 74 #endif /* GIFT_GT_IO_BUF_H_ */ |