www.pudn.com > FP-GROWTH.rar > tfscan.h
/*----------------------------------------------------------------------
File : tfscan.h
Contents: table file scanner management
Author : Christian Borgelt
History : 04.01.1998 file created
11.03.1998 additional character flags enabled
12.08.1998 function tfs_copy added
26.11.1998 some function parameters changed to const
29.11.1998 function tfs_dup added
04.02.1999 long int changed to int
14.07.2001 tfs_sgetc modified, tfs_buf and tfs_err added
19.08.2001 tfs_delim added (last delimiter type)
11.02.2002 tfs_skip, tfs_reccnt, and tfs_reset added
----------------------------------------------------------------------*/
#ifndef __TFSCAN__
#define __TFSCAN__
#include
/*----------------------------------------------------------------------
Preprocessor Definitions
----------------------------------------------------------------------*/
/* --- 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