/* @@@HEAD@@@
// Declarations for ColdC buffers.
*/

#ifndef _buffer_h_
#define _buffer_h_

#include "cdc_types.h"

Buffer   * buffer_new(int len);
Buffer   * buffer_dup(Buffer *buf);
void       buffer_discard(Buffer *buf);
Buffer   * buffer_append(Buffer *buf1, Buffer *buf2);
int        buffer_retrieve(Buffer *buf, int pos);
Buffer   * buffer_replace(Buffer *buf, int pos, unsigned int c);
Buffer   * buffer_add(Buffer *buf, unsigned int c);
Buffer   * buffer_truncate(Buffer *buf, int len);
Buffer   * buffer_tail(Buffer *buf, int pos);
string_t * buffer_to_string(Buffer *buf);
Buffer   * buffer_from_string(string_t * string);
list_t   * buffer_to_strings(Buffer *buf, Buffer *sep);
Buffer   * buffer_from_strings(list_t *string_list, Buffer *sep);

#define buffer_len(__b) (__b->len)
/* int      buffer_len(Buffer *buf); */

#endif