Blame bibutils/slist.h

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