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