Mooolto molto interessante!
Aggiungerei un suggerimento. Si potrebbero utilizzare dei puntatori a funzione, che ancora di più faciliterebbero la leggibilità. Ad esempio il tutto potrebbe essere implementato così:
E' solo un'idea, così come l'ho postato in realtà non aiuta molto.codice:typedef struct _FILE_STRUCT { FILE* file; int ( *get_byte )( FILE* ); /* punterà a getc() */ int ( *put_byte )( int, FILE* ); /* punterà a putc() */ } FILE_STRUCT; ... typedef struct _STREAM { union { FILE_STRUCT file; SOCKET_STRUCT socket; STRING_STRUCT buffer; } values; enum { ST_STREAM_FILE, ST_STREAM_SOCKET, ST_STREAM_STRING } type; } *STREAM;
GOOD PILLOLA! :gren:



