/*
// ColdMUD was created and is copyright 1993, 1994 by Greg Hudson
//
// ColdX is a derivitive work, and is copyright 1995 by the ColdX Project.
// Full copyright information can be found in the file doc/CREDITS
//
// File:        buffer.h
// Version:     0.1-5
// Last Edited: 5 Aug 1995
//
// ---
//
// Declarations for ColdC buffers.
*/

#ifndef BUFFER_H
#define BUFFER_H

typedef struct buffer Buffer;

#include "list.h"

struct buffer {
    int len;
    int refs;
    unsigned char s[1];
};

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);
int buffer_len(Buffer *buf);
Buffer *buffer_truncate(Buffer *buf, int len);
Buffer *buffer_tail(Buffer *buf, int pos);
List *buffer_to_strings(Buffer *buf, Buffer *sep);
Buffer *buffer_from_strings(List *string_list, Buffer *sep);

#endif