Annotation of gpl/axl/src/axl_stream.h, revision 1.1
1.1 ! misho 1: /*
! 2: * LibAxl: Another XML library
! 3: * Copyright (C) 2006 Advanced Software Production Line, S.L.
! 4: *
! 5: * This program is free software; you can redistribute it and/or
! 6: * modify it under the terms of the GNU Lesser General Public License
! 7: * as published by the Free Software Foundation; either version 2.1 of
! 8: * the License, or (at your option) any later version.
! 9: *
! 10: * This program is distributed in the hope that it will be useful,
! 11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
! 12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 13: * GNU Lesser General Public License for more details.
! 14: *
! 15: * You should have received a copy of the GNU Lesser General Public
! 16: * License along with this program; if not, write to the Free
! 17: * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
! 18: * 02111-1307 USA
! 19: *
! 20: * You may find a copy of the license under this software is released
! 21: * at COPYING file. This is LGPL software: you are welcome to
! 22: * develop proprietary applications using this library without any
! 23: * royalty or fee but returning back any change, improvement or
! 24: * addition in the form of source code, project image, documentation
! 25: * patches, etc.
! 26: *
! 27: * For commercial support on build XML enabled solutions contact us:
! 28: *
! 29: * Postal address:
! 30: * Advanced Software Production Line, S.L.
! 31: * Edificio Alius A, Oficina 102,
! 32: * C/ Antonio Suarez Nº 10,
! 33: * Alcalá de Henares 28802 Madrid
! 34: * Spain
! 35: *
! 36: * Email address:
! 37: * info@aspl.es - http://www.aspl.es/xml
! 38: */
! 39: #ifndef __AXL_STREAM_H__
! 40: #define __AXL_STREAM_H__
! 41:
! 42: #include <axl_decl.h>
! 43:
! 44: BEGIN_C_DECLS
! 45:
! 46: /**
! 47: * \addtogroup axl_stream_module
! 48: * @{
! 49: */
! 50:
! 51: axlStream * axl_stream_new (const char * stream_source,
! 52: int stream_size,
! 53: const char * file_path,
! 54: int fd_handler,
! 55: axlError ** error);
! 56:
! 57: int axl_stream_inspect (axlStream * stream, const char * chunk, int inspected_size);
! 58:
! 59: int axl_stream_inspect_code (axlStream * stream, char value, int index_desp);
! 60:
! 61: int axl_stream_peek (axlStream * stream, const char * chunk, int inspected_size);
! 62:
! 63: int axl_stream_inspect_several (axlStream * stream, int chunk_num, ...);
! 64:
! 65: void axl_stream_accept (axlStream * stream);
! 66:
! 67: void axl_stream_move (axlStream * stream, int index);
! 68:
! 69: void axl_stream_step (axlStream * stream, int bytes);
! 70:
! 71: void axl_stream_push (axlStream * stream, const char * content, int size);
! 72:
! 73: axl_bool axl_stream_fall_outside (axlStream * stream, int inspected_size);
! 74:
! 75: axl_bool axl_stream_check (axlStream * stream, char * chunk, int inspected_size);
! 76:
! 77: char * axl_stream_get_until (axlStream * stream,
! 78: char * valid_chars,
! 79: int * chunk_matched,
! 80: axl_bool accept_terminator,
! 81: int chunk_num, ...);
! 82:
! 83: char * axl_stream_get_until_ref (axlStream * stream,
! 84: char * valid_chars,
! 85: int * chunk_matched,
! 86: axl_bool accept_terminator,
! 87: int * result_size,
! 88: int chunk_num, ...);
! 89:
! 90: char * axl_stream_get_until_zero (axlStream * stream,
! 91: char * valid_chars,
! 92: int * chunk_matched,
! 93: axl_bool accept_terminator,
! 94: int chunk_num, ...);
! 95:
! 96: char * axl_stream_get_until_ref_zero (axlStream * stream,
! 97: char * valid_chars,
! 98: int * chunk_matched,
! 99: axl_bool accept_terminator,
! 100: int * result_size,
! 101: int chunk_num, ...);
! 102:
! 103: void axl_stream_set_buffer_alloc (axlStream * stream,
! 104: axlStreamAlloc handler,
! 105: axlPointer data);
! 106:
! 107: /**
! 108: * @brief Enum value that allows to configure which item to nullify
! 109: * inside the provided \ref axlStream reference.
! 110: *
! 111: */
! 112: typedef enum {
! 113: /**
! 114: * @brief Nullify the last chunk returned due to call from \ref axl_stream_get_until.
! 115: */
! 116: LAST_CHUNK,
! 117: /**
! 118: * @brief Nullify the last chunk returned by \ref axl_stream_get_near_to function.
! 119: */
! 120: LAST_NEAR_TO,
! 121: /**
! 122: * @brief Nullify the last chunk returned by \ref axl_stream_get_following function.
! 123: */
! 124: LAST_GET_FOLLOWING
! 125: } NullifyItem;
! 126:
! 127: void axl_stream_nullify (axlStream * stream,
! 128: NullifyItem item);
! 129:
! 130:
! 131: char * axl_stream_get_untilv (axlStream * stream,
! 132: char * valid_chars,
! 133: int * chunk_matched,
! 134: axl_bool accept_terminator,
! 135: int * result_size,
! 136: int chunk_num,
! 137: va_list args);
! 138:
! 139: int axl_stream_get_index (axlStream * stream);
! 140:
! 141: int axl_stream_get_global_index (axlStream * stream);
! 142:
! 143: int axl_stream_get_size (axlStream * stream);
! 144:
! 145: const char * axl_stream_get_near_to (axlStream * stream, int count);
! 146:
! 147: const char * axl_stream_get_following (axlStream * stream, int count);
! 148:
! 149: void axl_stream_link (axlStream * stream,
! 150: axlPointer element,
! 151: axlDestroyFunc func);
! 152:
! 153: void axl_stream_link_full (axlStream * stream,
! 154: axlPointer element,
! 155: axlDestroyFunc func,
! 156: axl_bool free_on_finish);
! 157:
! 158: void axl_stream_unlink (axlStream * stream);
! 159:
! 160: void axl_stream_free (axlStream * stream);
! 161:
! 162: axl_bool axl_stream_is_white_space (char * chunk);
! 163:
! 164: void axl_stream_consume_white_spaces (axlStream * stream);
! 165:
! 166: axl_bool axl_stream_remains (axlStream * stream);
! 167:
! 168: /* @} */
! 169:
! 170: /* string handling interface */
! 171:
! 172: void axl_stream_trim (char * chunk);
! 173:
! 174: void axl_stream_trim_with_size (char * chunk, int * trimmed);
! 175:
! 176: void axl_stream_remove (char * chunk, const char * value, axl_bool first);
! 177:
! 178: axl_bool axl_stream_cmp (const char * chunk1, const char * chunk2, int size);
! 179:
! 180: axl_bool axl_stream_casecmp (const char * chunk1, const char * chunk2, int size);
! 181:
! 182: char * axl_stream_strdup (const char * chunk);
! 183:
! 184: char * axl_stream_strdup_n (const char * chunk, int n);
! 185:
! 186: int axl_stream_vprintf_len (const char * format,
! 187: va_list args);
! 188:
! 189: int axl_stream_printf_len (const char * format,
! 190: ...);
! 191:
! 192: char * axl_stream_strdup_printf (const char * chunk, ...);
! 193:
! 194: char * axl_stream_strdup_printfv (const char * chunk, va_list args);
! 195:
! 196: char * axl_stream_strdup_printf_len (const char * chunk,
! 197: int * chunk_size, ...);
! 198:
! 199: int axl_stream_printf_buffer (char * buffer,
! 200: int buffer_size,
! 201: int * real_size,
! 202: const char * format, ...);
! 203:
! 204: char ** axl_stream_split (const char * chunk, int separator_num, ...);
! 205:
! 206: void axl_stream_clean_split (char ** split);
! 207:
! 208: char * axl_stream_join (char ** strings, const char * separator);
! 209:
! 210: char * axl_stream_concat (const char * chunk1, const char * chunk2);
! 211:
! 212: int axl_stream_strv_num (char ** chunks);
! 213:
! 214: void axl_stream_freev (char ** chunks);
! 215:
! 216: char * axl_stream_to_upper (char * chunk);
! 217:
! 218: char * axl_stream_to_lower (char * chunk);
! 219:
! 220: char * axl_stream_to_upper_copy (const char * chunk);
! 221:
! 222: char * axl_stream_to_lower_copy (const char * chunk);
! 223:
! 224: axl_bool axl_cmp (const char * string, const char * string2);
! 225:
! 226: axl_bool axl_casecmp (const char * string, const char * string2);
! 227:
! 228: axl_bool axl_memcmp (const char * string, const char * string2, int size);
! 229:
! 230: char * axl_strdup (const char * string);
! 231:
! 232: axl_bool axl_stream_setup_decode (axlStream * stream,
! 233: const char * source_encoding,
! 234: axlStreamDecode decode_f,
! 235: axlPointer user_data,
! 236: axlError ** error);
! 237:
! 238: axl_bool axl_stream_setup_check (axlStream * stream,
! 239: const char * source_encoding,
! 240: axlStreamContentCheck check,
! 241: axlPointer user_data,
! 242: axlError ** error);
! 243:
! 244: axl_bool axl_stream_decode (axlStream * stream,
! 245: char * output,
! 246: int output_max_size,
! 247: int * output_decoded,
! 248: int * op_result,
! 249: axlError ** error);
! 250:
! 251: axl_bool axl_stream_content_check (axlStream * stream,
! 252: const char * content,
! 253: int content_length,
! 254: axlError ** error);
! 255:
! 256: /**
! 257: * \addtogroup axl_string_module
! 258: * @{
! 259: */
! 260:
! 261: /**
! 262: * @brief Alias definition for \ref axl_stream_strdup_printf.
! 263: *
! 264: * See \ref axl_stream_strdup_printf information for more details.
! 265: */
! 266: #define axl_strdup_printf axl_stream_strdup_printf
! 267:
! 268: /**
! 269: * @brief Alias definition for \ref axl_stream_strdup_printfv.
! 270: */
! 271: #define axl_strdup_printfv axl_stream_strdup_printfv
! 272:
! 273: /**
! 274: * @brief Alias definition for the \ref axl_stream_concat.
! 275: */
! 276: #define axl_concat axl_stream_concat
! 277:
! 278: /**
! 279: * @brief Alias definition for the \ref axl_stream_join.
! 280: */
! 281: #define axl_join axl_stream_join
! 282:
! 283: /**
! 284: * @brief Alias definition for the \ref axl_stream_split.
! 285: */
! 286: #define axl_split axl_stream_split
! 287:
! 288: /**
! 289: * @brief Alias definition for the \ref axl_stream_freev.
! 290: */
! 291: #define axl_freev axl_stream_freev
! 292:
! 293: /**
! 294: * @brief Convenient interface to check if an string reference is NULL
! 295: * to return an static "undefined string". This is useful in the case
! 296: * string references are used on functions that can't handle NULL
! 297: * values.
! 298: *
! 299: * @param ref An string reference to check.
! 300: */
! 301: #define axl_check_undef(ref) (ref ? ref : "NULL")
! 302:
! 303: /* @} */
! 304:
! 305: END_C_DECLS
! 306:
! 307: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>