1a74702c6SGeorge Wang/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ 250aadb33SDmitri Tikhonov/* 350aadb33SDmitri Tikhonov * lsquic_str.h -- Some string routines. 450aadb33SDmitri Tikhonov */ 550aadb33SDmitri Tikhonov 650aadb33SDmitri Tikhonov#ifndef LSQUIC_STR_H 750aadb33SDmitri Tikhonov#define LSQUIC_STR_H 1 850aadb33SDmitri Tikhonov 950aadb33SDmitri Tikhonovstruct lsquic_str 1050aadb33SDmitri Tikhonov{ 1150aadb33SDmitri Tikhonov char *str; 1250aadb33SDmitri Tikhonov size_t len; 1350aadb33SDmitri Tikhonov}; 1450aadb33SDmitri Tikhonov 1550aadb33SDmitri Tikhonov 1650aadb33SDmitri Tikhonovtypedef struct lsquic_str lsquic_str_t; 1750aadb33SDmitri Tikhonov 1850aadb33SDmitri Tikhonov 1950aadb33SDmitri Tikhonovlsquic_str_t * 2050aadb33SDmitri Tikhonovlsquic_str_new (const char *, size_t); 2150aadb33SDmitri Tikhonov 2250aadb33SDmitri Tikhonov#define lsquic_str_len(lstr) (+(lstr)->len) 2350aadb33SDmitri Tikhonov 2450aadb33SDmitri Tikhonov#define lsquic_str_setlen(lstr, len_) do { \ 2550aadb33SDmitri Tikhonov (lstr)->len = len_; \ 2650aadb33SDmitri Tikhonov} while (0) 2750aadb33SDmitri Tikhonov 2850aadb33SDmitri Tikhonovvoid 2950aadb33SDmitri Tikhonovlsquic_str_setto (lsquic_str_t *, const void *, size_t); 3050aadb33SDmitri Tikhonov 312f4629f2SDmitri Tikhonovint 3250aadb33SDmitri Tikhonovlsquic_str_append (lsquic_str_t *, const char *, size_t); 3350aadb33SDmitri Tikhonov 3450aadb33SDmitri Tikhonovvoid 3550aadb33SDmitri Tikhonovlsquic_str_d (lsquic_str_t *); 3650aadb33SDmitri Tikhonov 3750aadb33SDmitri Tikhonovvoid 3850aadb33SDmitri Tikhonovlsquic_str_delete (lsquic_str_t *); 3950aadb33SDmitri Tikhonov 4050aadb33SDmitri Tikhonovchar * 4150aadb33SDmitri Tikhonovlsquic_str_prealloc (lsquic_str_t *, size_t); 4250aadb33SDmitri Tikhonov 4350aadb33SDmitri Tikhonov#define lsquic_str_buf(lstr) ((char *) (lstr)->str) 4450aadb33SDmitri Tikhonov 4550aadb33SDmitri Tikhonov#define lsquic_str_cstr(lstr) ((const char *) (lstr)->str) 4650aadb33SDmitri Tikhonov 4750aadb33SDmitri Tikhonov#define lsquic_str_blank(lstr) do { \ 4850aadb33SDmitri Tikhonov (lstr)->str = NULL; \ 4950aadb33SDmitri Tikhonov (lstr)->len = 0; \ 5050aadb33SDmitri Tikhonov} while (0) 5150aadb33SDmitri Tikhonov 5250aadb33SDmitri Tikhonovint 5350aadb33SDmitri Tikhonovlsquic_str_bcmp (const void *, const void *); 5450aadb33SDmitri Tikhonov 5550aadb33SDmitri Tikhonovlsquic_str_t * 5650aadb33SDmitri Tikhonovlsquic_str_copy (lsquic_str_t *, const lsquic_str_t *); 5750aadb33SDmitri Tikhonov 5850aadb33SDmitri Tikhonov#define lsquic_str_set(lstr, src, len_) do { \ 5950aadb33SDmitri Tikhonov (lstr)->str = src; \ 6050aadb33SDmitri Tikhonov (lstr)->len = len_; \ 6150aadb33SDmitri Tikhonov} while (0) 6250aadb33SDmitri Tikhonov 6350aadb33SDmitri Tikhonov#endif 64