|
Packit |
89ede9 |
/*
|
|
Packit |
89ede9 |
* slist.h
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
* version: 2017-11-14
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
* Copyright (c) Chris Putnam 2004-2018
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
* Source code released under the GPL version 2
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
*/
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
#ifndef SLIST_H
|
|
Packit |
89ede9 |
#define SLIST_H
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
#include <stdio.h>
|
|
Packit |
89ede9 |
#include <stdlib.h>
|
|
Packit |
89ede9 |
#include <stdarg.h>
|
|
Packit |
89ede9 |
#include <string.h>
|
|
Packit |
89ede9 |
#include "str.h"
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
#define SLIST_OK (0)
|
|
Packit |
89ede9 |
#define SLIST_ERR_MEMERR (-1)
|
|
Packit |
89ede9 |
#define SLIST_ERR_CANTOPEN (-2)
|
|
Packit |
89ede9 |
#define SLIST_ERR_BADPARAM (-3)
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
#define SLIST_CHR (0)
|
|
Packit |
89ede9 |
#define SLIST_STR (1)
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
typedef int slist_index;
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
typedef struct slist {
|
|
Packit |
89ede9 |
slist_index n, max;
|
|
Packit |
89ede9 |
int sorted;
|
|
Packit |
89ede9 |
str *strs;
|
|
Packit |
89ede9 |
} slist;
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void slists_init( slist *a, ... );
|
|
Packit |
89ede9 |
void slists_free( slist *a, ... );
|
|
Packit |
89ede9 |
void slists_empty( slist *a, ... );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void slist_init( slist *a );
|
|
Packit |
89ede9 |
int slist_init_values ( slist *a, ... );
|
|
Packit |
89ede9 |
int slist_init_valuesc( slist *a, ... );
|
|
Packit |
89ede9 |
void slist_free( slist *a );
|
|
Packit |
89ede9 |
void slist_empty( slist *a );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
slist * slist_new( void );
|
|
Packit |
89ede9 |
void slist_delete( slist * );
|
|
Packit |
89ede9 |
void slist_deletev( void *v );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
slist * slist_dup( slist *a );
|
|
Packit |
89ede9 |
int slist_copy( slist *to, slist *from );
|
|
Packit |
89ede9 |
void slist_swap( slist *a, slist_index n1, slist_index n2 );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
str * slist_addvp( slist *a, int mode, void *vp );
|
|
Packit |
89ede9 |
str * slist_addc( slist *a, const char *value );
|
|
Packit |
89ede9 |
str * slist_add( slist *a, str *value );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int slist_addvp_all( slist *a, int mode, ... );
|
|
Packit |
89ede9 |
int slist_addc_all( slist *a, ... );
|
|
Packit |
89ede9 |
int slist_add_all( slist *a, ... );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
str * slist_addvp_unique( slist *a, int mode, void *vp );
|
|
Packit |
89ede9 |
str * slist_addc_unique( slist *a, const char *value );
|
|
Packit |
89ede9 |
str * slist_add_unique( slist *a, str *value );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int slist_append( slist *a, slist *toadd );
|
|
Packit |
89ede9 |
int slist_append_unique( slist *a, slist *toadd );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int slist_remove( slist *a, slist_index n );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
str * slist_str( slist *a, slist_index n );
|
|
Packit |
89ede9 |
char * slist_cstr( slist *a, slist_index n );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
str * slist_set( slist *a, slist_index n, str *s );
|
|
Packit |
89ede9 |
str * slist_setc( slist *a, slist_index n, const char *s );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
void slist_sort( slist *a );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int slist_find( slist *a, str *searchstr );
|
|
Packit |
89ede9 |
int slist_findc( slist *a, const char *searchstr );
|
|
Packit |
89ede9 |
int slist_findnocase( slist *a, str *searchstr );
|
|
Packit |
89ede9 |
int slist_findnocasec( slist *a, const char *searchstr );
|
|
Packit |
89ede9 |
int slist_wasfound( slist *a, slist_index n );
|
|
Packit |
89ede9 |
int slist_wasnotfound( slist *a, slist_index n );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int slist_match_entry( slist *a, slist_index n, const char *s );
|
|
Packit |
89ede9 |
void slist_trimend( slist *a, slist_index n );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
unsigned long slist_get_maxlen( slist *a );
|
|
Packit |
89ede9 |
void slist_dump( slist *a, FILE *fp, int newline );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int slist_fill( slist *a, const char *filename, unsigned char skip_blank_lines );
|
|
Packit |
89ede9 |
int slist_fillfp( slist *a, FILE *fp, unsigned char skip_blank_lines );
|
|
Packit |
89ede9 |
int slist_tokenize( slist *tokens, str *in, const char *delim, int merge_delim );
|
|
Packit |
89ede9 |
int slist_tokenizec( slist *tokens, char *p, const char *delim, int merge_delim );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
#endif
|