Subversion Repositories pentevo

Rev

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

  1. #ifndef _NONZSTRING_H
  2. #define _NONZSTRING_H
  3. /* nonzstring.h */
  4. /*****************************************************************************/
  5. /* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only                     */
  6. /*                                                                           */
  7. /* AS-Port                                                                   */
  8. /*                                                                           */
  9. /* Handling of strings without NUL termination                               */
  10. /*                                                                           */
  11. /*****************************************************************************/
  12.  
  13. #include <stddef.h>
  14.  
  15. struct as_nonz_dynstr
  16. {
  17.   size_t len, capacity;
  18.   char *p_str;
  19. };
  20. typedef struct as_nonz_dynstr as_nonz_dynstr_t;
  21.  
  22. #define as_nonz_dynstr_roundup_len(len)  \
  23.         (((len) + 127) & ~127)
  24.  
  25. extern void as_nonz_dynstr_ini(as_nonz_dynstr_t *p_str, size_t ini_capacity);
  26.  
  27. extern void as_nonz_dynstr_ini_c_str(as_nonz_dynstr_t *p_str, const char *p_src);
  28.  
  29. extern void as_nonz_dynstr_realloc(as_nonz_dynstr_t *p_str, size_t new_capacity);
  30.  
  31. extern void as_nonz_dynstr_free(as_nonz_dynstr_t *p_str);
  32.  
  33. extern size_t as_nonz_dynstr_to_c_str(char *p_dest, const as_nonz_dynstr_t *p_src, size_t dest_len);
  34.  
  35. extern size_t as_nonz_dynstr_copy(as_nonz_dynstr_t *p_dest, const as_nonz_dynstr_t *p_src);
  36.  
  37. extern size_t as_nonz_dynstr_append_raw(as_nonz_dynstr_t *p_dest, const char *p_src, int src_len); /* -1 -> strlen */
  38.  
  39. extern size_t as_nonz_dynstr_copy_c_str(as_nonz_dynstr_t *p_dest, const char *p_src);
  40.  
  41. extern size_t as_nonz_dynstr_append(as_nonz_dynstr_t *p_dest, const as_nonz_dynstr_t *p_src);
  42.  
  43. extern int as_nonz_dynstr_cmp(const as_nonz_dynstr_t *p_str1, const as_nonz_dynstr_t *p_str2);
  44.  
  45. extern int as_nonz_dynstr_find(const as_nonz_dynstr_t *p_haystack, const as_nonz_dynstr_t *p_needle);
  46.  
  47. extern void as_nonz_dynstr_dump_hex(FILE *p_file, const as_nonz_dynstr_t *p_str);
  48.  
  49. #endif /* _NONZSTRING_H */
  50.