www.pudn.com > DMFP-Growth.rar > tfscan.h
#ifndef __TFSCAN__ #define __TFSCAN__ #include/* --- character flags --- */ #define TFS_RECSEP 0x01 /* flag for record separator */ #define TFS_FLDSEP 0x02 /* flag for field separator */ #define TFS_BLANK 0x04 /* flag for blank character */ #define TFS_COMMENT 0x08 /* flag for comment character */ #define TFS_OTHER 0x10 /* flag for other character type */ /* --- delimiter types --- */ #define TFS_EOF 0 /* end of file delimiter */ #define TFS_REC 1 /* record delimiter */ #define TFS_FLD 2 /* field delimiter */ /* --- buffer size --- */ #define TFS_SIZE 256 /* size of internal read buffer */ /*---------------------------------------------------------------------- Type Definitions ----------------------------------------------------------------------*/ typedef struct { /* --- error information --- */ int code; /* error code */ int rec, fld; /* record and field number */ int exp; /* expected number of records/fields */ char *s; /* a string (e.g., field contents) */ } TFSERR; /* (error information) */ typedef struct { /* --- table file scanner --- */ char cflags[256]; /* character flags */ const char *s; /* string pointer for tfs_sgetc */ int reccnt; /* number of records read */ int delim; /* last delimiter read */ int cnt; /* number of characters read */ char buf[TFS_SIZE+4]; /* read buffer */ TFSERR err; /* error information */ } TFSCAN; /* (table file scanner) */ /*---------------------------------------------------------------------- Functions ----------------------------------------------------------------------*/ extern TFSCAN* tfs_create (void); extern void tfs_delete (TFSCAN *tfs); extern TFSCAN* tfs_dup (const TFSCAN *tfs); extern void tfs_copy (TFSCAN *dst, const TFSCAN *src); extern int tfs_sgetc (TFSCAN *tfs, const char *s); extern int tfs_chars (TFSCAN *tfs, int type, const char *chars); extern int tfs_istype (const TFSCAN *tfs, int type, int c); extern int tfs_getfld (TFSCAN *tfs, FILE *file, char *buf, int len); extern int tfs_delim (TFSCAN *tfs); extern int tfs_cnt (TFSCAN *tfs); extern char* tfs_buf (TFSCAN *tfs); extern int tfs_skip (TFSCAN *tfs, FILE *file); extern int tfs_reccnt (TFSCAN *tfs); extern void tfs_reset (TFSCAN *tfs); extern TFSERR* tfs_err (TFSCAN *tfs); /*---------------------------------------------------------------------- Preprocessor Definitions ----------------------------------------------------------------------*/ #define tfs_delete(s) free(s) #define tfs_istype(s,t,c) ((s)->cflags[(unsigned char)(c)] & (t)) #define tfs_delim(s) ((s)->delim) #define tfs_cnt(s) ((s)->cnt) #define tfs_buf(s) ((s)->buf) #define tfs_reccnt(s) ((s)->reccnt) #define tfs_reset(s) ((s)->reccnt = 0) #define tfs_err(s) (&(s)->err) #endif