On Sat, 20 Jun 2009 10:18:36 +0200
Bertel Lund Hansen <unospamo@lundhansen.dk> wrote:
>
> Pointen ved at lave et alias er at alle rutiner så er uvidende om
> hvilken filtetype der er tale om, og det betyder at de kan
> behandle alle ens uden at tjekke på typen - med forøget hastighed
> til følge.
>
Du kunne også overveje i stedet for at medsende den konkrete function
som parameter til dine rutiner. Nedenfor er en template for en sådan
løsning:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define FILTERMAX 100
typedef enum {
FALSE,
TRUE
} Bool;
typedef struct _Filter Filter;
struct _Filter {
Bool use_filter;
char* groupname;
};
static void handle_usenet(Filter* filter[], Bool usefilter) {
}
static void handle_mail(Filter* filter[], Bool usefilter) {
}
static void handle_filters(
void (*handler) (Filter**, Bool), Filter** filter, Bool usefilter) {
handler(filter, usefilter);
}
int main() {
Filter* usenet[FILTERMAX];
Filter* mail[FILTERMAX];
handle_filters(handle_usenet, usenet, TRUE);
handle_filters(handle_mail, mail, FALSE);
return EXIT_SUCCESS;
}
--
Hilsen/Regards
Michael Rasmussen
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.