5 Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
7 Copyright (C) 1997 - 2000 Pekka Riikonen
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
24 #ifndef SILC_DEBUG /* When we are not doing debugging we use
25 optimized inline buffer functions. */
27 /* Clears and initialiazes the buffer to the state as if it was just
28 allocated by silc_buffer_alloc. */
31 void silc_buffer_clear(SilcBuffer sb)
33 memset(sb->head, 0, sb->truelen);
39 /* Generates copy of a SilcBuffer. This copies everything inside the
40 currently valid data area, nothing more. Use silc_buffer_clone to
41 copy entire buffer. */
44 SilcBuffer silc_buffer_copy(SilcBuffer sb)
48 sb_new = silc_buffer_alloc(sb->len);
49 silc_buffer_pull_tail(sb_new, SILC_BUFFER_END(sb_new));
50 silc_buffer_put(sb_new, sb->data, sb->len);
55 /* Clones SilcBuffer. This generates new SilcBuffer and copies
56 everything from the source buffer. The result is exact clone of
57 the original buffer. */
60 SilcBuffer silc_buffer_clone(SilcBuffer sb)
64 sb_new = silc_buffer_alloc(sb->truelen);
65 silc_buffer_pull_tail(sb_new, SILC_BUFFER_END(sb_new));
66 silc_buffer_put(sb_new, sb->head, sb->truelen);
67 sb_new->data = sb_new->head + sb->len;
68 sb_new->tail = sb_new->head + (sb->end - sb->tail);
69 sb_new->len = sb->len;
74 #endif /* !SILC_DEBUG */
78 void silc_buffer_clear(SilcBuffer sb);
79 SilcBuffer silc_buffer_copy(SilcBuffer sb);
80 SilcBuffer silc_buffer_clone(SilcBuffer sb);