1*4226f635SJason King /* 2*4226f635SJason King * This file and its contents are supplied under the terms of the 3*4226f635SJason King * Common Development and Distribution License ("CDDL"), version 1.0. 4*4226f635SJason King * You may only use this file in accordance with the terms of version 5*4226f635SJason King * 1.0 of the CDDL. 6*4226f635SJason King * 7*4226f635SJason King * A full copy of the text of the CDDL should have accompanied this 8*4226f635SJason King * source. A copy of the CDDL is also available via the Internet at 9*4226f635SJason King * http://www.illumos.org/license/CDDL. 10*4226f635SJason King */ 11*4226f635SJason King 12*4226f635SJason King /* 13*4226f635SJason King * Copyright 2017 Jason King 14*4226f635SJason King */ 15*4226f635SJason King 16*4226f635SJason King #ifndef _STR_H 17*4226f635SJason King #define _STR_H 18*4226f635SJason King 19*4226f635SJason King #include <sys/types.h> 20*4226f635SJason King #include "demangle-sys.h" 21*4226f635SJason King #include "demangle_int.h" 22*4226f635SJason King 23*4226f635SJason King #ifdef __cplusplus 24*4226f635SJason King extern "C" { 25*4226f635SJason King #endif 26*4226f635SJason King 27*4226f635SJason King struct sysdem_alloc_s; 28*4226f635SJason King 29*4226f635SJason King typedef struct str_s { 30*4226f635SJason King char *str_s; 31*4226f635SJason King sysdem_ops_t *str_ops; 32*4226f635SJason King size_t str_len; 33*4226f635SJason King size_t str_size; 34*4226f635SJason King } str_t; 35*4226f635SJason King 36*4226f635SJason King typedef struct str_pair_s { 37*4226f635SJason King str_t strp_l; 38*4226f635SJason King str_t strp_r; 39*4226f635SJason King } str_pair_t; 40*4226f635SJason King 41*4226f635SJason King void str_init(str_t *restrict, sysdem_ops_t *); 42*4226f635SJason King void str_fini(str_t *); 43*4226f635SJason King size_t str_length(const str_t *); 44*4226f635SJason King boolean_t str_copy(const str_t *, str_t *); 45*4226f635SJason King void str_set(str_t *, const char *, size_t); 46*4226f635SJason King boolean_t str_append(str_t *, const char *, size_t); 47*4226f635SJason King boolean_t str_append_str(str_t *, const str_t *); 48*4226f635SJason King boolean_t str_append_c(str_t *, char); 49*4226f635SJason King boolean_t str_insert(str_t *, size_t, const char *, size_t); 50*4226f635SJason King boolean_t str_insert_str(str_t *, size_t, const str_t *); 51*4226f635SJason King boolean_t str_erase(str_t *, size_t, size_t); 52*4226f635SJason King 53*4226f635SJason King str_pair_t *str_pair_init(str_pair_t *, sysdem_ops_t *); 54*4226f635SJason King void str_pair_fini(str_pair_t *); 55*4226f635SJason King boolean_t str_pair_merge(str_pair_t *); 56*4226f635SJason King boolean_t str_pair_copy(const str_pair_t *, str_pair_t *); 57*4226f635SJason King size_t str_pair_len(const str_pair_t *); 58*4226f635SJason King 59*4226f635SJason King #ifdef __cplusplus 60*4226f635SJason King } 61*4226f635SJason King #endif 62*4226f635SJason King 63*4226f635SJason King #endif /* _STR_H */ 64