Blame trio/triostr.h

Packit e8bc57
/*************************************************************************
Packit e8bc57
 *
Packit e8bc57
 * $Id: triostr.h,v 1.15 2005/05/29 11:56:01 breese Exp $
Packit e8bc57
 *
Packit e8bc57
 * Copyright (C) 2001 Bjorn Reese and Daniel Stenberg.
Packit e8bc57
 *
Packit e8bc57
 * Permission to use, copy, modify, and distribute this software for any
Packit e8bc57
 * purpose with or without fee is hereby granted, provided that the above
Packit e8bc57
 * copyright notice and this permission notice appear in all copies.
Packit e8bc57
 *
Packit e8bc57
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
Packit e8bc57
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
Packit e8bc57
 * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
Packit e8bc57
 * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
Packit e8bc57
 *
Packit e8bc57
 ************************************************************************/
Packit e8bc57
Packit e8bc57
#ifndef TRIO_TRIOSTR_H
Packit e8bc57
#define TRIO_TRIOSTR_H
Packit e8bc57
Packit e8bc57
/*
Packit e8bc57
 * Documentation is located in triostr.c
Packit e8bc57
 */
Packit e8bc57
Packit e8bc57
#include <assert.h>
Packit e8bc57
#include <stdlib.h>
Packit e8bc57
#include <string.h>
Packit e8bc57
#include <time.h>
Packit e8bc57
#include "triodef.h"
Packit e8bc57
#include "triop.h"
Packit e8bc57
Packit e8bc57
#ifdef __cplusplus
Packit e8bc57
extern "C" {
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
enum {
Packit e8bc57
  TRIO_HASH_NONE = 0,
Packit e8bc57
  TRIO_HASH_PLAIN,
Packit e8bc57
  TRIO_HASH_TWOSIGNED
Packit e8bc57
};
Packit e8bc57
Packit e8bc57
#if !defined(TRIO_PUBLIC_STRING)
Packit e8bc57
# if !defined(TRIO_PUBLIC)
Packit e8bc57
#  define TRIO_PUBLIC
Packit e8bc57
# endif
Packit e8bc57
# define TRIO_PUBLIC_STRING TRIO_PUBLIC
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
/*************************************************************************
Packit e8bc57
 * Dependencies
Packit e8bc57
 */
Packit e8bc57
Packit e8bc57
#if defined(TRIO_EMBED_STRING)
Packit e8bc57
Packit e8bc57
/*
Packit e8bc57
 * The application that triostr is embedded in must define which functions
Packit e8bc57
 * it uses.
Packit e8bc57
 *
Packit e8bc57
 * The following resolves internal dependencies.
Packit e8bc57
 */
Packit e8bc57
  
Packit e8bc57
# if defined(TRIO_FUNC_XSTRING_SET)
Packit e8bc57
#  if !defined(TRIO_FUNC_DUPLICATE)
Packit e8bc57
#   define TRIO_FUNC_DUPLICATE
Packit e8bc57
#  endif
Packit e8bc57
# endif
Packit e8bc57
Packit e8bc57
# if defined(TRIO_FUNC_DUPLICATE) \
Packit e8bc57
  || defined(TRIO_FUNC_DUPLICATE_MAX) \
Packit e8bc57
  || defined(TRIO_FUNC_STRING_DUPLICATE) \
Packit e8bc57
  || defined(TRIO_FUNC_XSTRING_DUPLICATE)
Packit e8bc57
#  if !defined(TRIO_FUNC_CREATE)
Packit e8bc57
#   define TRIO_FUNC_CREATE
Packit e8bc57
#  endif
Packit e8bc57
#  if !defined(TRIO_FUNC_COPY_MAX)
Packit e8bc57
#   define TRIO_FUNC_COPY_MAX
Packit e8bc57
#  endif
Packit e8bc57
# endif
Packit e8bc57
Packit e8bc57
# if defined(TRIO_FUNC_STRING_CREATE)
Packit e8bc57
#  if !defined(TRIO_FUNC_STRING_DESTROY)
Packit e8bc57
#   define TRIO_FUNC_STRING_DESTROY
Packit e8bc57
#  endif
Packit e8bc57
# endif
Packit e8bc57
Packit e8bc57
# if defined(TRIO_FUNC_STRING_DESTROY) \
Packit e8bc57
  || defined(TRIO_FUNC_XSTRING_SET)
Packit e8bc57
#  if !defined(TRIO_FUNC_DESTROY)
Packit e8bc57
#   define TRIO_FUNC_DESTROY
Packit e8bc57
#  endif
Packit e8bc57
# endif
Packit e8bc57
Packit e8bc57
# if defined(TRIO_FUNC_EQUAL_LOCALE) \
Packit e8bc57
  || defined(TRIO_FUNC_STRING_EQUAL) \
Packit e8bc57
  || defined(TRIO_FUNC_XSTRING_EQUAL)
Packit e8bc57
#  if !defined(TRIO_FUNC_EQUAL)
Packit e8bc57
#   define TRIO_FUNC_EQUAL
Packit e8bc57
#  endif
Packit e8bc57
# endif
Packit e8bc57
Packit e8bc57
# if defined(TRIO_FUNC_EQUAL_CASE) \
Packit e8bc57
  || defined(TRIO_FUNC_STRING_EQUAL_CASE) \
Packit e8bc57
  || defined(TRIO_FUNC_XSTRING_EQUAL_CASE)
Packit e8bc57
#  if !defined(TRIO_FUNC_EQUAL_CASE)
Packit e8bc57
#   define TRIO_FUNC_EQUAL_CASE
Packit e8bc57
#  endif
Packit e8bc57
# endif
Packit e8bc57
Packit e8bc57
# if defined(TRIO_FUNC_SUBSTRING_MAX) \
Packit e8bc57
  || defined(TRIO_FUNC_STRING_EQUAL_MAX) \
Packit e8bc57
  || defined(TRIO_FUNC_XSTRING_EQUAL_MAX)
Packit e8bc57
#  if !defined(TRIO_FUNC_EQUAL_MAX)
Packit e8bc57
#   define TRIO_FUNC_EQUAL_MAX
Packit e8bc57
#  endif
Packit e8bc57
# endif
Packit e8bc57
Packit e8bc57
# if defined(TRIO_FUNC_TO_DOUBLE) \
Packit e8bc57
  || defined(TRIO_FUNC_TO_FLOAT)
Packit e8bc57
#  if !defined(TRIO_FUNC_TO_LONG_DOUBLE)
Packit e8bc57
#   define TRIO_FUNC_TO_LONG_DOUBLE
Packit e8bc57
#  endif
Packit e8bc57
# endif
Packit e8bc57
Packit e8bc57
# if defined(TRIO_FUNC_STRING_TERMINATE)
Packit e8bc57
#  if !defined(TRIO_FUNC_XSTRING_APPEND_CHAR)
Packit e8bc57
#   define TRIO_FUNC_XSTRING_APPEND_CHAR
Packit e8bc57
#  endif
Packit e8bc57
# endif
Packit e8bc57
Packit e8bc57
# if defined(TRIO_FUNC_XSTRING_APPEND_CHAR)
Packit e8bc57
#  if !defined(TRIO_FUNC_STRING_SIZE)
Packit e8bc57
#   define TRIO_FUNC_STRING_SIZE
Packit e8bc57
#  endif
Packit e8bc57
# endif
Packit e8bc57
Packit e8bc57
#else
Packit e8bc57
Packit e8bc57
/*
Packit e8bc57
 * When triostr is not embedded all all functions are defined.
Packit e8bc57
 */
Packit e8bc57
Packit e8bc57
# define TRIO_FUNC_APPEND
Packit e8bc57
# define TRIO_FUNC_APPEND_MAX
Packit e8bc57
# define TRIO_FUNC_CONTAINS
Packit e8bc57
# define TRIO_FUNC_COPY
Packit e8bc57
# define TRIO_FUNC_COPY_MAX
Packit e8bc57
# define TRIO_FUNC_CREATE
Packit e8bc57
# define TRIO_FUNC_DESTROY
Packit e8bc57
# define TRIO_FUNC_DUPLICATE
Packit e8bc57
# define TRIO_FUNC_DUPLICATE_MAX
Packit e8bc57
# define TRIO_FUNC_EQUAL
Packit e8bc57
# define TRIO_FUNC_EQUAL_CASE
Packit e8bc57
# define TRIO_FUNC_EQUAL_CASE_MAX
Packit e8bc57
# define TRIO_FUNC_EQUAL_LOCALE
Packit e8bc57
# define TRIO_FUNC_EQUAL_MAX
Packit e8bc57
# define TRIO_FUNC_ERROR
Packit e8bc57
# define TRIO_FUNC_FORMAT_DATE_MAX
Packit e8bc57
# define TRIO_FUNC_HASH
Packit e8bc57
# define TRIO_FUNC_INDEX
Packit e8bc57
# define TRIO_FUNC_INDEX_LAST
Packit e8bc57
# define TRIO_FUNC_LENGTH
Packit e8bc57
# define TRIO_FUNC_LOWER
Packit e8bc57
# define TRIO_FUNC_MATCH
Packit e8bc57
# define TRIO_FUNC_MATCH_CASE
Packit e8bc57
# define TRIO_FUNC_SPAN_FUNCTION
Packit e8bc57
# define TRIO_FUNC_SUBSTRING
Packit e8bc57
# define TRIO_FUNC_SUBSTRING_MAX
Packit e8bc57
# define TRIO_FUNC_TO_DOUBLE
Packit e8bc57
# define TRIO_FUNC_TO_FLOAT
Packit e8bc57
# define TRIO_FUNC_TO_LONG
Packit e8bc57
# define TRIO_FUNC_TO_LONG_DOUBLE
Packit e8bc57
# define TRIO_FUNC_TO_LOWER
Packit e8bc57
# define TRIO_FUNC_TO_UNSIGNED_LONG
Packit e8bc57
# define TRIO_FUNC_TO_UPPER
Packit e8bc57
# define TRIO_FUNC_TOKENIZE
Packit e8bc57
# define TRIO_FUNC_UPPER
Packit e8bc57
Packit e8bc57
# define TRIO_FUNC_STRING_APPEND
Packit e8bc57
# define TRIO_FUNC_STRING_CONTAINS
Packit e8bc57
# define TRIO_FUNC_STRING_COPY
Packit e8bc57
# define TRIO_FUNC_STRING_CREATE
Packit e8bc57
# define TRIO_FUNC_STRING_DESTROY
Packit e8bc57
# define TRIO_FUNC_STRING_DUPLICATE
Packit e8bc57
# define TRIO_FUNC_STRING_EQUAL
Packit e8bc57
# define TRIO_FUNC_STRING_EQUAL_CASE
Packit e8bc57
# define TRIO_FUNC_STRING_EQUAL_CASE_MAX
Packit e8bc57
# define TRIO_FUNC_STRING_EQUAL_MAX
Packit e8bc57
# define TRIO_FUNC_STRING_EXTRACT
Packit e8bc57
# define TRIO_FUNC_STRING_FORMAT_DATE_MAX
Packit e8bc57
# define TRIO_FUNC_STRING_GET
Packit e8bc57
# define TRIO_FUNC_STRING_INDEX
Packit e8bc57
# define TRIO_FUNC_STRING_INDEX_LAST
Packit e8bc57
# define TRIO_FUNC_STRING_LENGTH
Packit e8bc57
# define TRIO_FUNC_STRING_LOWER
Packit e8bc57
# define TRIO_FUNC_STRING_MATCH
Packit e8bc57
# define TRIO_FUNC_STRING_MATCH_CASE
Packit e8bc57
# define TRIO_FUNC_STRING_SIZE
Packit e8bc57
# define TRIO_FUNC_STRING_SUBSTRING
Packit e8bc57
# define TRIO_FUNC_STRING_TERMINATE
Packit e8bc57
# define TRIO_FUNC_STRING_UPPER
Packit e8bc57
Packit e8bc57
# define TRIO_FUNC_XSTRING_APPEND
Packit e8bc57
# define TRIO_FUNC_XSTRING_APPEND_CHAR
Packit e8bc57
# define TRIO_FUNC_XSTRING_CONTAINS
Packit e8bc57
# define TRIO_FUNC_XSTRING_COPY
Packit e8bc57
# define TRIO_FUNC_XSTRING_DUPLICATE
Packit e8bc57
# define TRIO_FUNC_XSTRING_EQUAL
Packit e8bc57
# define TRIO_FUNC_XSTRING_EQUAL_CASE
Packit e8bc57
# define TRIO_FUNC_XSTRING_EQUAL_CASE_MAX
Packit e8bc57
# define TRIO_FUNC_XSTRING_EQUAL_MAX
Packit e8bc57
# define TRIO_FUNC_XSTRING_MATCH
Packit e8bc57
# define TRIO_FUNC_XSTRING_MATCH_CASE
Packit e8bc57
# define TRIO_FUNC_XSTRING_SET
Packit e8bc57
# define TRIO_FUNC_XSTRING_SUBSTRING
Packit e8bc57
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
Packit e8bc57
/*************************************************************************
Packit e8bc57
 * String functions
Packit e8bc57
 */
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_APPEND)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_append
Packit e8bc57
TRIO_PROTO((char *target, TRIO_CONST char *source));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_APPEND_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_append_max
Packit e8bc57
TRIO_PROTO((char *target, size_t max, TRIO_CONST char *source));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_CONTAINS)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_contains
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *substring));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_COPY)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_copy
Packit e8bc57
TRIO_PROTO((char *target, TRIO_CONST char *source));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_COPY_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_copy_max
Packit e8bc57
TRIO_PROTO((char *target, size_t max, TRIO_CONST char *source));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_CREATE)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_create
Packit e8bc57
TRIO_PROTO((size_t size));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_DESTROY)
Packit e8bc57
TRIO_PUBLIC_STRING void
Packit e8bc57
trio_destroy
Packit e8bc57
TRIO_PROTO((char *string));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_DUPLICATE)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_duplicate
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *source));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_DUPLICATE_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_duplicate_max
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *source, size_t max));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_EQUAL)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_equal
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *first, TRIO_CONST char *second));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_EQUAL_CASE)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_equal_case
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *first, TRIO_CONST char *second));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_EQUAL_CASE_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_equal_case_max
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *first, size_t max, TRIO_CONST char *second));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_EQUAL_LOCALE)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_equal_locale
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *first, TRIO_CONST char *second));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_EQUAL_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_equal_max
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *first, size_t max, TRIO_CONST char *second));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_ERROR)
Packit e8bc57
TRIO_PUBLIC_STRING TRIO_CONST char *
Packit e8bc57
trio_error
Packit e8bc57
TRIO_PROTO((int));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_FORMAT_DATE_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING size_t
Packit e8bc57
trio_format_date_max
Packit e8bc57
TRIO_PROTO((char *target, size_t max, TRIO_CONST char *format, TRIO_CONST struct tm *datetime));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_HASH)
Packit e8bc57
TRIO_PUBLIC_STRING unsigned long
Packit e8bc57
trio_hash
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *string, int type));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_INDEX)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_index
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *string, int character));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_INDEX_LAST)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_index_last
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *string, int character));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_LENGTH)
Packit e8bc57
TRIO_PUBLIC_STRING size_t
Packit e8bc57
trio_length
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *string));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_LOWER)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_lower
Packit e8bc57
TRIO_PROTO((char *target));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_MATCH)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_match
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *pattern));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_MATCH_CASE)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_match_case
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *pattern));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_SPAN_FUNCTION)
Packit e8bc57
TRIO_PUBLIC_STRING size_t
Packit e8bc57
trio_span_function
Packit e8bc57
TRIO_PROTO((char *target, TRIO_CONST char *source, int (*Function) TRIO_PROTO((int))));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_SUBSTRING)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_substring
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *substring));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_SUBSTRING_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_substring_max
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *string, size_t max, TRIO_CONST char *substring));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_TO_DOUBLE)
Packit e8bc57
TRIO_PUBLIC_STRING double
Packit e8bc57
trio_to_double
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *source, char **endp));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_TO_FLOAT)
Packit e8bc57
TRIO_PUBLIC_STRING float
Packit e8bc57
trio_to_float
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *source, char **endp));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_TO_LONG)
Packit e8bc57
TRIO_PUBLIC_STRING long
Packit e8bc57
trio_to_long
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *source, char **endp, int base));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_TO_LOWER)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_to_lower
Packit e8bc57
TRIO_PROTO((int source));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_TO_LONG_DOUBLE)
Packit e8bc57
TRIO_PUBLIC_STRING trio_long_double_t
Packit e8bc57
trio_to_long_double
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *source, char **endp));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_TO_UNSIGNED_LONG)
Packit e8bc57
TRIO_PUBLIC_STRING unsigned long
Packit e8bc57
trio_to_unsigned_long
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *source, char **endp, int base));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_TO_UPPER)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_to_upper
Packit e8bc57
TRIO_PROTO((int source));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_TOKENIZE)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_tokenize
Packit e8bc57
TRIO_PROTO((char *string, TRIO_CONST char *delimiters));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_UPPER)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_upper
Packit e8bc57
TRIO_PROTO((char *target));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
/*************************************************************************
Packit e8bc57
 * Dynamic string functions
Packit e8bc57
 */
Packit e8bc57
Packit e8bc57
/*
Packit e8bc57
 * Opaque type for dynamic strings
Packit e8bc57
 */
Packit e8bc57
Packit e8bc57
typedef struct _trio_string_t trio_string_t;
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_APPEND)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_append
Packit e8bc57
TRIO_PROTO((trio_string_t *self, trio_string_t *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_CONTAINS)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_contains
Packit e8bc57
TRIO_PROTO((trio_string_t *self, trio_string_t *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_COPY)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_copy
Packit e8bc57
TRIO_PROTO((trio_string_t *self, trio_string_t *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_CREATE)
Packit e8bc57
TRIO_PUBLIC_STRING trio_string_t *
Packit e8bc57
trio_string_create
Packit e8bc57
TRIO_PROTO((int initial_size));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_DESTROY)
Packit e8bc57
TRIO_PUBLIC_STRING void
Packit e8bc57
trio_string_destroy
Packit e8bc57
TRIO_PROTO((trio_string_t *self));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_DUPLICATE)
Packit e8bc57
TRIO_PUBLIC_STRING trio_string_t *
Packit e8bc57
trio_string_duplicate
Packit e8bc57
TRIO_PROTO((trio_string_t *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_EQUAL)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_equal
Packit e8bc57
TRIO_PROTO((trio_string_t *self, trio_string_t *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_EQUAL_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_equal_max
Packit e8bc57
TRIO_PROTO((trio_string_t *self, size_t max, trio_string_t *second));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_EQUAL_CASE)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_equal_case
Packit e8bc57
TRIO_PROTO((trio_string_t *self, trio_string_t *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_EQUAL_CASE_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_equal_case_max
Packit e8bc57
TRIO_PROTO((trio_string_t *self, size_t max, trio_string_t *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_EXTRACT)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_string_extract
Packit e8bc57
TRIO_PROTO((trio_string_t *self));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_FORMAT_DATE_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING size_t
Packit e8bc57
trio_string_format_date_max
Packit e8bc57
TRIO_PROTO((trio_string_t *self, size_t max, TRIO_CONST char *format, TRIO_CONST struct tm *datetime));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_GET)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_string_get
Packit e8bc57
TRIO_PROTO((trio_string_t *self, int offset));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_INDEX)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_string_index
Packit e8bc57
TRIO_PROTO((trio_string_t *self, int character));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_INDEX_LAST)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_string_index_last
Packit e8bc57
TRIO_PROTO((trio_string_t *self, int character));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_LENGTH)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_length
Packit e8bc57
TRIO_PROTO((trio_string_t *self));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_LOWER)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_lower
Packit e8bc57
TRIO_PROTO((trio_string_t *self));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_MATCH)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_match
Packit e8bc57
TRIO_PROTO((trio_string_t *self, trio_string_t *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_MATCH_CASE)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_match_case
Packit e8bc57
TRIO_PROTO((trio_string_t *self, trio_string_t *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_SIZE)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_size
Packit e8bc57
TRIO_PROTO((trio_string_t *self));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_SUBSTRING)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_string_substring
Packit e8bc57
TRIO_PROTO((trio_string_t *self, trio_string_t *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_TERMINATE)
Packit e8bc57
TRIO_PUBLIC_STRING void
Packit e8bc57
trio_string_terminate
Packit e8bc57
TRIO_PROTO((trio_string_t *self));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_STRING_UPPER)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_string_upper
Packit e8bc57
TRIO_PROTO((trio_string_t *self));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_APPEND)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_xstring_append
Packit e8bc57
TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_APPEND_CHAR)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_xstring_append_char
Packit e8bc57
TRIO_PROTO((trio_string_t *self, char character));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_CONTAINS)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_xstring_contains
Packit e8bc57
TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_COPY)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_xstring_copy
Packit e8bc57
TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_DUPLICATE)
Packit e8bc57
TRIO_PUBLIC_STRING trio_string_t *
Packit e8bc57
trio_xstring_duplicate
Packit e8bc57
TRIO_PROTO((TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_EQUAL)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_xstring_equal
Packit e8bc57
TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_EQUAL_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_xstring_equal_max
Packit e8bc57
TRIO_PROTO((trio_string_t *self, size_t max, TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_EQUAL_CASE)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_xstring_equal_case
Packit e8bc57
TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_EQUAL_CASE_MAX)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_xstring_equal_case_max
Packit e8bc57
TRIO_PROTO((trio_string_t *self, size_t max, TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_MATCH)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_xstring_match
Packit e8bc57
TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_MATCH_CASE)
Packit e8bc57
TRIO_PUBLIC_STRING int
Packit e8bc57
trio_xstring_match_case
Packit e8bc57
TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_SET)
Packit e8bc57
TRIO_PUBLIC_STRING void
Packit e8bc57
trio_xstring_set
Packit e8bc57
TRIO_PROTO((trio_string_t *self, char *buffer));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#if defined(TRIO_FUNC_XSTRING_SUBSTRING)
Packit e8bc57
TRIO_PUBLIC_STRING char *
Packit e8bc57
trio_xstring_substring
Packit e8bc57
TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other));
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#ifdef __cplusplus
Packit e8bc57
}
Packit e8bc57
#endif
Packit e8bc57
Packit e8bc57
#endif /* TRIO_TRIOSTR_H */