Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1. #ifndef _DYNSTR_H
  2. #define _DYNSTR_H
  3. /* dynstr.h */
  4. /*****************************************************************************/
  5. /* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only                     */
  6. /*                                                                           */
  7. /* AS-Port                                                                   */
  8. /*                                                                           */
  9. /* Handling of strings with dynamic allocation                               */
  10. /*                                                                           */
  11. /*****************************************************************************/
  12.  
  13. #include <stdio.h>
  14. #include <stddef.h>
  15.  
  16. typedef struct as_dynstr
  17. {
  18.   size_t capacity;
  19.   char *p_str;
  20.   int dynamic;
  21. } as_dynstr_t;
  22.  
  23. /* add one character more for terminating NUL */
  24.  
  25. #define as_dynstr_roundup_len(len)  \
  26.         (((len) + 128) & ~127)
  27.  
  28. extern void as_dynstr_ini(as_dynstr_t *p_str, size_t ini_alloc_len);
  29.  
  30. extern void as_dynstr_ini_clone(as_dynstr_t *p_str, const as_dynstr_t *p_src);
  31.  
  32. extern void as_dynstr_ini_c_str(as_dynstr_t *p_str, const char *p_src);
  33.  
  34. extern int as_dynstr_realloc(as_dynstr_t *p_str, size_t new_alloc_len);
  35.  
  36. extern void as_dynstr_free(as_dynstr_t *p_str);
  37.  
  38. extern size_t as_dynstr_copy(as_dynstr_t *p_dest, const as_dynstr_t *p_src);
  39.  
  40. extern size_t as_dynstr_copy_c_str(as_dynstr_t *p_dest, const char *p_src);
  41.  
  42. extern size_t as_dynstr_append(as_dynstr_t *p_dest, const char *p_src, size_t len);
  43.  
  44. extern size_t as_dynstr_append_c_str(as_dynstr_t *p_dest, const char *p_src);
  45.  
  46. extern void as_dynstr_dump_hex(FILE *p_file, const as_dynstr_t *p_str);
  47.  
  48. #endif /* _DYNSTR_H */
  49.