X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCset.h;h=7b4fc589555ee20d0f9e38b72e1b4cdca230d8ea;hb=eae1bd2f705a2c61e143c539f8c4d1e9c2b4efe6;hp=f676886710b2ebe343e84f8a9ae9870c26c4adc8;hpb=4726c45887ee4dd2fc2a58b94ff5abc2fd4cd6fd;p=fw%2Fsdcc diff --git a/src/SDCCset.h b/src/SDCCset.h index f6768867..7b4fc589 100644 --- a/src/SDCCset.h +++ b/src/SDCCset.h @@ -25,53 +25,58 @@ #ifndef SDCCSET_H #define SDCCSET_H #include -#include "sdccconf.h" -#include "SDCCalloc.h" #ifndef THROWS #define THROWS -#define THROW_NONE 0 -#define THROW_SRC 1 +#define THROW_NONE 0 +#define THROW_SRC 1 #define THROW_DEST 2 #define THROW_BOTH 3 #endif /* linear linked list generic */ typedef struct set -{ - void *item ; - struct set *curr ; - struct set *next ; -} set ; + { + void *item; + struct set *curr; + struct set *next; + } +set; #define DEFSETFUNC(fname) int fname ( void *item, va_list ap) -#define V_ARG(type,var) type var = va_arg(ap,type) +#define V_ARG(type,var) type var = va_arg(ap,type) /* set related functions */ -void *addSet ( set ** , void * ); -void *addSetHead ( set ** , void * ); -void *getSet ( set ** ); -void deleteSetItem ( set ** , void * ); -void deleteItemIf ( set ** , int (*cond) (void *, va_list), ... ); -int isinSet ( set * , void * ); -int isinSetWith ( set *, void *, int (*cfunc)()); -int applyToSet ( set *list ,int (*somefunc)(void *,va_list), ...); -int applyToSetFTrue ( set *list ,int (*somefunc)(void *,va_list), ...); -set *unionSets ( set *, set *, int); -set *unionSetsWith ( set *, set *, int (*cFunc)(),int); -set *intersectSets ( set *, set *, int); -void *addSetIfnotP ( set **, void *); -set *setFromSet ( set * ); -int isSetsEqual ( set *, set *); -set *subtractFromSet ( set *, set *,int); -int elementsInSet (set *); -set *intersectSetsWith (set *, set *,int (*cFunc)(),int ); -int isSetsEqualWith ( set *, set *, int (*cFunc)()); -void *peekSet ( set *); -void *setFirstItem ( set *); -void *setNextItem ( set *); -void setToNull (void ** ); - +set *newSet (void); +void *addSet (set **, void *); +void *addSetHead (set **, void *); +void *getSet (set **); +void deleteSetItem (set **, void *); +void deleteItemIf (set **, int (*cond) (void *, va_list),...); +int isinSet (set *, void *); +typedef int (* insetwithFunc) (void *, void *); +int isinSetWith (set *, void *, insetwithFunc cfunc); +int applyToSet (set * list, int (*somefunc) (void *, va_list),...); +int applyToSetFTrue (set * list, int (*somefunc) (void *, va_list),...); +void mergeSets (set **sset, set *list); +set *unionSets (set *, set *, int); +set *unionSetsWith (set *, set *, int (*cFunc) (), int); +set *intersectSets (set *, set *, int); +void *addSetIfnotP (set **, void *); +set *setFromSet (set *); +set *setFromSetNonRev (set *); +int isSetsEqual (set *, set *); +set *subtractFromSet (set *, set *, int); +int elementsInSet (set *); +void *indexSet(set *, int); +set *intersectSetsWith (set *, set *, int (*cFunc) (void *, void *), int); +int isSetsEqualWith (set *, set *, int (*cFunc) (void *, void *)); +void *peekSet (set *); +void *setFirstItem (set *); +void *setNextItem (set *); +void setToNull (void **); +set *reverseSet (set *); +void deleteSet (set **s); #endif