AString  0.2
A Lightweight C Language String Library
/home/Tom/Projects/astring/astring.h
浏览该文件的文档。
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