Blame include/dyn-string.h

Packit bbfece
/* An abstract string datatype.
Packit bbfece
   Copyright (C) 1998-2018 Free Software Foundation, Inc.
Packit bbfece
   Contributed by Mark Mitchell (mark@markmitchell.com).
Packit bbfece
Packit bbfece
This file is part of GCC.
Packit bbfece
   
Packit bbfece
GCC is free software; you can redistribute it and/or modify
Packit bbfece
it under the terms of the GNU General Public License as published by
Packit bbfece
the Free Software Foundation; either version 2, or (at your option)
Packit bbfece
any later version.
Packit bbfece
Packit bbfece
GCC is distributed in the hope that it will be useful,
Packit bbfece
but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit bbfece
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit bbfece
GNU General Public License for more details.
Packit bbfece
Packit bbfece
You should have received a copy of the GNU General Public License
Packit bbfece
along with GCC; see the file COPYING.  If not, write to
Packit bbfece
the Free Software Foundation, 51 Franklin Street - Fifth Floor,
Packit bbfece
Boston, MA 02110-1301, USA.  */
Packit bbfece
Packit bbfece
#ifndef DYN_STRING_H
Packit bbfece
#define DYN_STRING_H
Packit bbfece
Packit bbfece
#ifdef __cplusplus
Packit bbfece
extern "C" {
Packit bbfece
#endif
Packit bbfece
Packit bbfece
typedef struct dyn_string
Packit bbfece
{
Packit bbfece
  int allocated;	/* The amount of space allocated for the string.  */
Packit bbfece
  int length;		/* The actual length of the string.  */
Packit bbfece
  char *s;		/* The string itself, NUL-terminated.  */
Packit bbfece
}* dyn_string_t;
Packit bbfece
Packit bbfece
/* The length STR, in bytes, not including the terminating NUL.  */
Packit bbfece
#define dyn_string_length(STR)                                          \
Packit bbfece
  ((STR)->length)
Packit bbfece
Packit bbfece
/* The NTBS in which the contents of STR are stored.  */
Packit bbfece
#define dyn_string_buf(STR)                                             \
Packit bbfece
  ((STR)->s)
Packit bbfece
Packit bbfece
/* Compare DS1 to DS2 with strcmp.  */
Packit bbfece
#define dyn_string_compare(DS1, DS2)                                    \
Packit bbfece
  (strcmp ((DS1)->s, (DS2)->s))
Packit bbfece
Packit bbfece
Packit bbfece
extern int dyn_string_init (struct dyn_string *, int);
Packit bbfece
extern dyn_string_t dyn_string_new (int);
Packit bbfece
extern void dyn_string_delete (dyn_string_t);
Packit bbfece
extern char *dyn_string_release (dyn_string_t);
Packit bbfece
extern dyn_string_t dyn_string_resize (dyn_string_t, int);
Packit bbfece
extern void dyn_string_clear (dyn_string_t);
Packit bbfece
extern int dyn_string_copy (dyn_string_t, dyn_string_t);
Packit bbfece
extern int dyn_string_copy_cstr (dyn_string_t, const char *);
Packit bbfece
extern int dyn_string_prepend (dyn_string_t, dyn_string_t);
Packit bbfece
extern int dyn_string_prepend_cstr (dyn_string_t, const char *);
Packit bbfece
extern int dyn_string_insert (dyn_string_t, int, dyn_string_t);
Packit bbfece
extern int dyn_string_insert_cstr (dyn_string_t, int, const char *);
Packit bbfece
extern int dyn_string_insert_char (dyn_string_t, int, int);
Packit bbfece
extern int dyn_string_append (dyn_string_t, dyn_string_t);
Packit bbfece
extern int dyn_string_append_cstr (dyn_string_t, const char *);
Packit bbfece
extern int dyn_string_append_char (dyn_string_t, int);
Packit bbfece
extern int dyn_string_substring (dyn_string_t,  dyn_string_t, int, int);
Packit bbfece
extern int dyn_string_eq (dyn_string_t, dyn_string_t);
Packit bbfece
Packit bbfece
#ifdef __cplusplus
Packit bbfece
}
Packit bbfece
#endif
Packit bbfece
Packit bbfece
#endif /* !defined (DYN_STRING_H) */