/**
 *  call-seq:
 *    Rev::Buffer#append(data) -> String
 * 
 * Append the given data to the end of the buffer
 */
static VALUE Rev_Buffer_append(VALUE self, VALUE data)
{
  struct buffer *buf;
  Data_Get_Struct(self, struct buffer, buf);

  /* Is this needed?  Never seen anyone else do it... */
  data = rb_convert_type(data, T_STRING, "String", "to_str");
  buffer_append(buf, RSTRING_PTR(data), RSTRING_LEN(data));

  return data;
}