Logo Search packages:      
Sourcecode: ksh version File versions  Download package

fcin.h

/***********************************************************************
*                                                                      *
*               This software is part of the ast package               *
*                  Copyright (c) 1982-2005 AT&T Corp.                  *
*                      and is licensed under the                       *
*                  Common Public License, Version 1.0                  *
*                            by AT&T Corp.                             *
*                                                                      *
*                A copy of the License is available at                 *
*            http://www.opensource.org/licenses/cpl1.0.txt             *
*         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
*                                                                      *
*              Information and Software Systems Research               *
*                            AT&T Research                             *
*                           Florham Park NJ                            *
*                                                                      *
*                  David Korn <dgk@research.att.com>                   *
*                                                                      *
***********************************************************************/
#pragma prototyped
#ifndef fcgetc
/*
 * David Korn
 * AT&T Labs
 *
 * Fast character input with sfio text streams and strings
 *
 */

#include    <sfio.h>

typedef struct _fcin
{
      Sfio_t            *_fcfile;   /* input file pointer */
      unsigned char     *fcbuff;    /* pointer to input buffer */
      unsigned char     *fclast;    /* pointer to end of input buffer */
      unsigned char     *fcptr;           /* pointer to next input char */
      unsigned char     fcchar;           /* saved character */
      void (*fcfun)(Sfio_t*,const char*,int);   /* advance function */
      Sfoff_t           fcoff;            /* offset for last read */
} Fcin_t;

#define fcfile()  (_Fcin._fcfile)
#define fcgetc(c) (((c=fcget()) || (c=fcfill())), c)
#define     fcget()           ((int)(*_Fcin.fcptr++))
#define     fcpeek(n)   ((int)_Fcin.fcptr[n])
#define     fcseek(n)   ((char*)(_Fcin.fcptr+=(n)))
#define fcfirst() ((char*)_Fcin.fcbuff)
#define fcsopen(s)      (_Fcin._fcfile=(Sfio_t*)0,_Fcin.fcbuff=_Fcin.fcptr=(unsigned char*)(s))
#define fctell()  (_Fcin.fcoff + (_Fcin.fcptr-_Fcin.fcbuff))
#define fcsave(x) (*(x) = _Fcin)
#define fcrestore(x)    (_Fcin = *(x))
extern int        fcfill(void);
extern int        fcfopen(Sfio_t*);
extern int        fcclose(void);
void              fcnotify(void(*)(Sfio_t*,const char*,int));

extern Fcin_t           _Fcin;            /* used by macros */

#endif /* fcgetc */

Generated by  Doxygen 1.6.0   Back to index