|
Packit |
89ede9 |
/*
|
|
Packit |
89ede9 |
* str.h
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
* Version: 2017-07-03
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
* Copyright (c) Chris Putnam 1999-2018
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
* Source code released under the GPL version 2
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
*/
|
|
Packit |
89ede9 |
#ifndef STR_H
|
|
Packit |
89ede9 |
#define STR_H
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
#include <stdio.h>
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
typedef struct str {
|
|
Packit |
89ede9 |
char *data;
|
|
Packit |
89ede9 |
unsigned long dim;
|
|
Packit |
89ede9 |
unsigned long len;
|
|
Packit |
89ede9 |
} str;
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
str * str_new ( void );
|
|
Packit |
89ede9 |
void str_delete ( str *s );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void str_init ( str *s );
|
|
Packit |
89ede9 |
void str_initstr ( str *s, str *from );
|
|
Packit |
89ede9 |
void str_initstrc ( str *s, const char *initstr );
|
|
Packit |
89ede9 |
void str_initstrsc ( str *s, ... );
|
|
Packit |
89ede9 |
void str_empty ( str *s );
|
|
Packit |
89ede9 |
void str_free ( str *s );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void strs_init ( str *s, ... );
|
|
Packit |
89ede9 |
void strs_empty ( str *s, ... );
|
|
Packit |
89ede9 |
void strs_free ( str *s, ... );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
str* str_strdup ( str *s );
|
|
Packit |
89ede9 |
str* str_strdupc( const char *p );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void str_strcat ( str *s, str *from );
|
|
Packit |
89ede9 |
void str_strcatc( str *s, const char *from );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void str_strcpy ( str *s, str *from );
|
|
Packit |
89ede9 |
void str_strcpyc( str *s, const char *from );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int str_strcmp ( const str *s, const str *t );
|
|
Packit |
89ede9 |
int str_strcmpc( const str *s, const char *t );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int str_strncmp ( const str *s, const str *t, size_t n );
|
|
Packit |
89ede9 |
int str_strncmpc( const str *s, const char *t, size_t n );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int str_strcasecmp ( const str *s, const str *t );
|
|
Packit |
89ede9 |
int str_strcasecmpc( const str *s, const char *t );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
char * str_strstr ( const str *s, const str *t );
|
|
Packit |
89ede9 |
char * str_strstrc( const str *s, const char *t );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void str_prepend ( str *s, const char *addstr );
|
|
Packit |
89ede9 |
void str_mergestrs ( str *s, ... );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void str_addchar ( str *s, char newchar );
|
|
Packit |
89ede9 |
void str_reverse ( str *s );
|
|
Packit |
89ede9 |
const char *str_addutf8 ( str *s, const char *p );
|
|
Packit |
89ede9 |
void str_segcat ( str *s, char *startat, char *endat );
|
|
Packit |
89ede9 |
char *str_cpytodelim ( str *s, char *p, const char *delim, unsigned char finalstep );
|
|
Packit |
89ede9 |
char *str_cattodelim ( str *s, char *p, const char *delim, unsigned char finalstep );
|
|
Packit |
89ede9 |
void str_prepend ( str *s, const char *addstr );
|
|
Packit |
89ede9 |
void str_segcpy ( str *s, char *startat, char *endat );
|
|
Packit |
89ede9 |
void str_segdel ( str *s, char *startat, char *endat );
|
|
Packit |
89ede9 |
void str_indxcpy ( str *s, char *p, unsigned long start, unsigned long stop );
|
|
Packit |
89ede9 |
void str_indxcat ( str *s, char *p, unsigned long start, unsigned long stop );
|
|
Packit |
89ede9 |
void str_fprintf ( FILE *fp, str *s );
|
|
Packit |
89ede9 |
int str_fget ( FILE *fp, char *buf, int bufsize, int *pbufpos,
|
|
Packit |
89ede9 |
str *outs );
|
|
Packit |
89ede9 |
char * str_cstr ( str *s );
|
|
Packit |
89ede9 |
char str_char ( str *s, unsigned long n );
|
|
Packit |
89ede9 |
char str_revchar ( str *s, unsigned long n );
|
|
Packit |
89ede9 |
int str_fgetline ( str *s, FILE *fp );
|
|
Packit |
89ede9 |
int str_findreplace ( str *s, const char *find, const char *replace );
|
|
Packit |
89ede9 |
void str_toupper ( str *s );
|
|
Packit |
89ede9 |
void str_tolower ( str *s );
|
|
Packit |
89ede9 |
void str_trimstartingws( str *s );
|
|
Packit |
89ede9 |
void str_trimendingws( str *s );
|
|
Packit |
89ede9 |
void str_swapstrings ( str *s1, str *s2 );
|
|
Packit |
89ede9 |
void str_stripws ( str *s );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int str_match_first ( str *s, char ch );
|
|
Packit |
89ede9 |
int str_match_end ( str *s, char ch );
|
|
Packit |
89ede9 |
void str_trimbegin ( str *s, unsigned long n );
|
|
Packit |
89ede9 |
void str_trimend ( str *s, unsigned long n );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void str_pad ( str *s, unsigned long len, char ch );
|
|
Packit |
89ede9 |
void str_copyposlen ( str *s, str *in, unsigned long pos, unsigned long len );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void str_makepath ( str *path, const char *dirname, const char *filename, char sep );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void str_fill ( str *s, unsigned long n, char fillchar );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int str_is_mixedcase( str *s );
|
|
Packit |
89ede9 |
int str_is_lowercase( str *s );
|
|
Packit |
89ede9 |
int str_is_uppercase( str *s );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int str_memerr( str *s );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
unsigned long str_strlen( str *s );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int str_has_value( str *s );
|
|
Packit |
89ede9 |
int str_is_empty( str *s );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
/* #define STR_PARANOIA
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
* set to clear memory before it is freed or reallocated
|
|
Packit |
89ede9 |
* note that this is slower...may be important if string
|
|
Packit |
89ede9 |
* contains sensitive information
|
|
Packit |
89ede9 |
*/
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
/* #define STR_NOASSERT
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
* set to turn off the use of asserts (and associated call to exit)
|
|
Packit |
89ede9 |
* in str functions...useful for library construction for
|
|
Packit |
89ede9 |
* Linux distributions that don't want libraries calling exit, but
|
|
Packit |
89ede9 |
* not useful during code development
|
|
Packit |
89ede9 |
*/
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
#endif
|
|
Packit |
89ede9 |
|