gdb/common/buffer.h - gdb

Data types defined

Macros defined

Source code

  1. /* A simple growing buffer for GDB.

  2.    Copyright (C) 2009-2015 Free Software Foundation, Inc.

  3.    This file is part of GDB.

  4.    This program is free software; you can redistribute it and/or modify
  5.    it under the terms of the GNU General Public License as published by
  6.    the Free Software Foundation; either version 3 of the License, or
  7.    (at your option) any later version.

  8.    This program is distributed in the hope that it will be useful,
  9.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11.    GNU General Public License for more details.

  12.    You should have received a copy of the GNU General Public License
  13.    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

  14. #ifndef BUFFER_H
  15. #define BUFFER_H

  16. struct buffer
  17. {
  18.   char *buffer;
  19.   size_t buffer_size; /* allocated size */
  20.   size_t used_size; /* actually used size */
  21. };

  22. /* Append DATA of size SIZE to the end of BUFFER.  Grows the buffer to
  23.    accommodate the new data.  */
  24. void buffer_grow (struct buffer *buffer, const char *data, size_t size);

  25. /* Release any memory held by BUFFER.  */
  26. void buffer_free (struct buffer *buffer);

  27. /* Initialize BUFFER.  BUFFER holds no memory afterwards.  */
  28. void buffer_init (struct buffer *buffer);

  29. /* Return a pointer into BUFFER data, effectivelly transfering
  30.    ownership of the buffer memory to the caller.  Calling buffer_free
  31.    afterwards has no effect on the returned data.  */
  32. char* buffer_finish (struct buffer *buffer);

  33. /* Simple printf to buffer function.  Current implemented formatters:
  34.    %s - grow an xml escaped text in BUFFER.
  35.    %d - grow an signed integer in BUFFER.
  36.    %u - grow an unsigned integer in BUFFER.
  37.    %x - grow an unsigned integer formatted in hexadecimal in BUFFER.
  38.    %o - grow an unsigned integer formatted in octal in BUFFER.  */
  39. void buffer_xml_printf (struct buffer *buffer, const char *format, ...)
  40.   ATTRIBUTE_PRINTF (2, 3);

  41. #define buffer_grow_str(BUFFER,STRING)                \
  42.   buffer_grow (BUFFER, STRING, strlen (STRING))
  43. #define buffer_grow_str0(BUFFER,STRING)                        \
  44.   buffer_grow (BUFFER, STRING, strlen (STRING) + 1)

  45. #endif