Blame glib/gstring.h

Packit ae235b
/* GLIB - Library of useful routines for C programming
Packit ae235b
 * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
Packit ae235b
 *
Packit ae235b
 * This library is free software; you can redistribute it and/or
Packit ae235b
 * modify it under the terms of the GNU Lesser General Public
Packit ae235b
 * License as published by the Free Software Foundation; either
Packit ae235b
 * version 2.1 of the License, or (at your option) any later version.
Packit ae235b
 *
Packit ae235b
 * This library is distributed in the hope that it will be useful,
Packit ae235b
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit ae235b
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit ae235b
 * Lesser General Public License for more details.
Packit ae235b
 *
Packit ae235b
 * You should have received a copy of the GNU Lesser General Public
Packit ae235b
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
Packit ae235b
 */
Packit ae235b
Packit ae235b
/*
Packit ae235b
 * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
Packit ae235b
 * file for a list of people on the GLib Team.  See the ChangeLog
Packit ae235b
 * files for a list of changes.  These files are distributed with
Packit ae235b
 * GLib at ftp://ftp.gtk.org/pub/gtk/.
Packit ae235b
 */
Packit ae235b
Packit ae235b
#ifndef __G_STRING_H__
Packit ae235b
#define __G_STRING_H__
Packit ae235b
Packit ae235b
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
Packit ae235b
#error "Only <glib.h> can be included directly."
Packit ae235b
#endif
Packit ae235b
Packit ae235b
#include <glib/gtypes.h>
Packit ae235b
#include <glib/gunicode.h>
Packit ae235b
#include <glib/gbytes.h>
Packit ae235b
#include <glib/gutils.h>  /* for G_CAN_INLINE */
Packit ae235b
Packit ae235b
G_BEGIN_DECLS
Packit ae235b
Packit ae235b
typedef struct _GString         GString;
Packit ae235b
Packit ae235b
struct _GString
Packit ae235b
{
Packit ae235b
  gchar  *str;
Packit ae235b
  gsize len;
Packit ae235b
  gsize allocated_len;
Packit ae235b
};
Packit ae235b
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_new               (const gchar     *init);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_new_len           (const gchar     *init,
Packit ae235b
                                         gssize           len);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_sized_new         (gsize            dfl_size);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
gchar*       g_string_free              (GString         *string,
Packit ae235b
                                         gboolean         free_segment);
Packit ae235b
GLIB_AVAILABLE_IN_2_34
Packit ae235b
GBytes*      g_string_free_to_bytes     (GString         *string);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
gboolean     g_string_equal             (const GString   *v,
Packit ae235b
                                         const GString   *v2);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
guint        g_string_hash              (const GString   *str);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_assign            (GString         *string,
Packit ae235b
                                         const gchar     *rval);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_truncate          (GString         *string,
Packit ae235b
                                         gsize            len);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_set_size          (GString         *string,
Packit ae235b
                                         gsize            len);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_insert_len        (GString         *string,
Packit ae235b
                                         gssize           pos,
Packit ae235b
                                         const gchar     *val,
Packit ae235b
                                         gssize           len);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_append            (GString         *string,
Packit ae235b
                                         const gchar     *val);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_append_len        (GString         *string,
Packit ae235b
                                         const gchar     *val,
Packit ae235b
                                         gssize           len);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_append_c          (GString         *string,
Packit ae235b
                                         gchar            c);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_append_unichar    (GString         *string,
Packit ae235b
                                         gunichar         wc);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_prepend           (GString         *string,
Packit ae235b
                                         const gchar     *val);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_prepend_c         (GString         *string,
Packit ae235b
                                         gchar            c);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_prepend_unichar   (GString         *string,
Packit ae235b
                                         gunichar         wc);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_prepend_len       (GString         *string,
Packit ae235b
                                         const gchar     *val,
Packit ae235b
                                         gssize           len);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_insert            (GString         *string,
Packit ae235b
                                         gssize           pos,
Packit ae235b
                                         const gchar     *val);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_insert_c          (GString         *string,
Packit ae235b
                                         gssize           pos,
Packit ae235b
                                         gchar            c);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_insert_unichar    (GString         *string,
Packit ae235b
                                         gssize           pos,
Packit ae235b
                                         gunichar         wc);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_overwrite         (GString         *string,
Packit ae235b
                                         gsize            pos,
Packit ae235b
                                         const gchar     *val);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_overwrite_len     (GString         *string,
Packit ae235b
                                         gsize            pos,
Packit ae235b
                                         const gchar     *val,
Packit ae235b
                                         gssize           len);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_erase             (GString         *string,
Packit ae235b
                                         gssize           pos,
Packit ae235b
                                         gssize           len);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_ascii_down        (GString         *string);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_ascii_up          (GString         *string);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
void         g_string_vprintf           (GString         *string,
Packit ae235b
                                         const gchar     *format,
Packit ae235b
                                         va_list          args)
Packit ae235b
                                         G_GNUC_PRINTF(2, 0);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
void         g_string_printf            (GString         *string,
Packit ae235b
                                         const gchar     *format,
Packit ae235b
                                         ...) G_GNUC_PRINTF (2, 3);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
void         g_string_append_vprintf    (GString         *string,
Packit ae235b
                                         const gchar     *format,
Packit ae235b
                                         va_list          args)
Packit ae235b
                                         G_GNUC_PRINTF(2, 0);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
void         g_string_append_printf     (GString         *string,
Packit ae235b
                                         const gchar     *format,
Packit ae235b
                                         ...) G_GNUC_PRINTF (2, 3);
Packit ae235b
GLIB_AVAILABLE_IN_ALL
Packit ae235b
GString*     g_string_append_uri_escaped (GString         *string,
Packit ae235b
                                          const gchar     *unescaped,
Packit ae235b
                                          const gchar     *reserved_chars_allowed,
Packit ae235b
                                          gboolean         allow_utf8);
Packit ae235b
Packit ae235b
/* -- optimize g_strig_append_c --- */
Packit ae235b
#ifdef G_CAN_INLINE
Packit ae235b
static inline GString*
Packit ae235b
g_string_append_c_inline (GString *gstring,
Packit ae235b
                          gchar    c)
Packit ae235b
{
Packit ae235b
  if (gstring->len + 1 < gstring->allocated_len)
Packit ae235b
    {
Packit ae235b
      gstring->str[gstring->len++] = c;
Packit ae235b
      gstring->str[gstring->len] = 0;
Packit ae235b
    }
Packit ae235b
  else
Packit ae235b
    g_string_insert_c (gstring, -1, c);
Packit ae235b
  return gstring;
Packit ae235b
}
Packit ae235b
#define g_string_append_c(gstr,c)       g_string_append_c_inline (gstr, c)
Packit ae235b
#endif /* G_CAN_INLINE */
Packit ae235b
Packit ae235b
Packit ae235b
GLIB_DEPRECATED
Packit ae235b
GString *g_string_down (GString *string);
Packit ae235b
GLIB_DEPRECATED
Packit ae235b
GString *g_string_up   (GString *string);
Packit ae235b
Packit ae235b
#ifndef G_DISABLE_DEPRECATED
Packit ae235b
#define  g_string_sprintf  g_string_printf
Packit ae235b
#define  g_string_sprintfa g_string_append_printf
Packit ae235b
#endif
Packit ae235b
Packit ae235b
G_END_DECLS
Packit ae235b
Packit ae235b
#endif /* __G_STRING_H__ */