/* $Id: state_imp.h,v 1.3 2006/04/09 07:37:05 hurtta Exp $ */ /****************************************************************************** * The Elm (ME+) Mail System - $Revision: 1.3 $ * * Author: Kari Hurtta *****************************************************************************/ #define STATE_out_extern 0xEBFF /* _magic */ #define STATE_out_magic 0xEB00 typedef void ex_init_so_func P_((out_state_t *s)); typedef int ex_seekable_so_func P_((out_state_t *s)); typedef FILE * ex_FILE_so_func P_((out_state_t *s)); typedef int ex_seek_so_func P_((out_state_t *s, long pos)); typedef long ex_ftell_so_func P_((out_state_t *s)); typedef void ex_dest_so_func P_((out_state_t *s)); typedef void ex_flush_filter_so_func P_((out_state_t *s, int munge_eoln)); enum state_policy { state_policy_putc_use_filter = 1, state_policy_flush_via_put }; typedef int ex_policy_so_func P_((out_state_t *s, enum state_policy question)); typedef int ex_putc_so_func P_((out_state_t *s, int ch)); typedef int ex_put_so_func P_((out_state_t *s, const char *string, int len)); struct out_state_type { unsigned short magic; /* STATE_out_magic */ unsigned short register_code; ex_init_so_func * ex_init_so_it; ex_dest_so_func * ex_dest_so_it; ex_seekable_so_func * ex_seekable_so_it; ex_FILE_so_func * ex_FILE_so_it; ex_seek_so_func * ex_seek_so_it; ex_ftell_so_func * ex_ftell_so_it; ex_flush_filter_so_func * ex_flush_filter_so_it; ex_policy_so_func * ex_policy_so_it; ex_putc_so_func * ex_putc_so_it; ex_put_so_func * ex_put_so_it; }; /* This only registers pointer, struct is not copied */ void register_state_out_type P_((struct out_state_type *T));