AString
0.2
A Lightweight C Language String Library
|
00001 00010 #ifndef __ASTRING_H__ 00011 #define __ASTRING_H__ 00012 00013 #include <stdlib.h> 00014 #include <string.h> 00015 #include "atype.h" 00016 00017 #define A_STRING_FLAG 101 00018 #define ZERO '\0' 00019 00024 #define A_IS_STRING(string) (*(auchar *)string == A_STRING_FLAG) 00025 00031 struct _AString{ 00032 auchar flag; 00033 volatile aboolean lock; 00035 asize len; 00036 asize allocated_len; 00038 char * str; 00039 }; 00040 00044 typedef struct _AString AString; 00045 00051 struct _AStringArray{ 00052 AString ** data; 00053 asize size; 00054 }; 00055 00059 typedef struct _AStringArray AStringArray; 00060 00067 AString * a_string_new (const char *init); 00068 00077 AString * a_string_new_len (const char *init, 00078 asize len); 00079 00087 AString * a_string_sized_new (asize size); 00095 AString * a_string_assign (AString *string, 00096 const char * value); 00104 AString * a_string_dup (AString *source); 00114 char * a_string_dupstr (AString *source); 00115 00123 AString * a_string_get_file_content (const char * filename); 00131 AString * a_string_append (AString *string, 00132 const char *value); 00140 AString * a_string_append_c (AString *string, 00141 char c); 00149 AString * a_string_append_unichar (AString *string, 00150 aunichar wc); 00159 AString * a_string_append_len (AString *string, 00160 const char *value, 00161 asize len); 00169 AString * a_string_prepend (AString *string, 00170 const char *value); 00178 AString * a_string_prepend_c (AString *string, 00179 char c); 00187 AString * a_string_prepend_unichar (AString *string, 00188 aunichar wc); 00197 AString * a_string_prepend_len (AString *string, 00198 const char *value, 00199 asize len); 00208 AString * a_string_insert (AString *string, 00209 asize pos, 00210 const char *value); 00219 AString * a_string_insert_c (AString *string, 00220 asize pos, 00221 char c); 00230 AString * a_string_insert_unichar (AString *string, 00231 asize pos, 00232 aunichar wc); 00242 AString * a_string_insert_len (AString *string, 00243 asize pos, 00244 const char *value, 00245 asize len); 00254 char * a_string_get_key (AString *string); 00263 char * a_string_get_value (AString *string); 00272 AString * a_string_overwrite (AString *string, 00273 asize pos, 00274 const char *value); 00284 AString * a_string_overwrite_len (AString *string, 00285 asize pos, 00286 const char *value, 00287 asize len); 00296 AString * a_string_erase (AString *string, 00297 asize pos, 00298 asize len); 00306 AString * a_string_truncate (AString *string, 00307 asize len); 00316 AString * a_string_set_size (AString *string, 00317 asize len); 00325 AString * a_string_trim (AString *string); 00333 AStringArray * a_string_split (AString *string, 00334 const char *splitstr); 00353 AString * a_string_substring (AString *string, asize start, asize end); 00364 AString * a_string_substring_new (AString *string, asize start, asize end); 00372 char a_string_get_char (AString *string, asize position); 00381 AString * a_string_set_char (AString *string, asize position, char ch); 00390 int a_string_find (AString *string, 00391 char *str, 00392 asize position); 00402 int a_string_replace (AString *string, 00403 char *findstr, 00404 char *replacestr, 00405 asize position); 00415 int a_string_replace_all (AString *string, 00416 char *findstr, 00417 char *replacestr); 00423 void a_string_free (AString *string); 00431 auint a_string_hash (AString *string); 00439 aboolean a_string_equal (AString *string, 00440 AString *string2); 00441 00442 #endif 00443