/*
 *      PROJECT:
 *      SUBSYSTEM:
 *      MODULE:
 *
 *      FILE:           $RCSfile: pfparser.h,v $
 *      REVISION:       $Revision: 1.3 $
 *      Date:           $Date: 95/04/27 23:01:16 $
 *      Author:         $Author: bill $
 *      RCS Ident:      $Id: pfparser.h,v 1.3 95/04/27 23:01:16 bill Exp $
 *
 *      FUNCTION:
 *
 * Copyright (c) 1994 Division Ltd.
 *
 * All Rights Reserved.
 *
 * This Document may not, in whole or in part, be copied,
 * photocopied, reproduced, translated, or reduced to any
 * electronic medium or machine readable form without prior
 * written consent from Division Ltd.
 */

#ifndef __PFPARSER_H__
#define __PFPARSER_H__

#include <dsys/divtypes.h>
#ifdef _PF_LOCAL
#include "pgeneral.h"
#else
#include <dsys/pgeneral.h>
#endif

#define dpp_MATCH_CASE  0
#define dpp_ANY_CASE    1

/* On calls which either succeed or fail, dpgSUCCESS (0) or dpgERROR (-1)
 * is returned. On calls to get next token however the following 
 * return values are also used
 */
#define dppEOF          -2
#define dppSTRING       -3
#define dppNUMBER	-4

typedef struct dppKEYTAB 
{
    int32	 tok;
    char 	*name;
    int32	 matchCase;
} dppKEYTAB ;


typedef struct dppFILE 
{
    int32	 lineNo;
    int32	 errorFlag;
    char	*fileName;
    FILE	*file;
    char        *whites ;
    char         comment ;
    int32	 pushedBackToken;
    float	 number;
    char	*buffer;
    int32	 bufSize;
    int32	 bufPos;
    dppKEYTAB	*keyTab;
} dppFILE, *dppFILEPTR ;



dppFILEPTR
dppOpenFile (char *name, FILE *fp, const char *whites, char comment,
             dppKEYTAB *keyTable, int32 bufferSize);
void
dppCloseFile (dppFILEPTR fPtr);
char *
dppTokenToString (dppFILEPTR fptr, const int32 token);
int32 
dppPushToken (dppFILEPTR fptr, const int32 token);
int32
dppNextToken (dppFILEPTR fptr);
int32
dppReadToNextChar(dppFILEPTR fPtr, char endChr) ;
char *
dppMatchString (dppFILEPTR fptr);
int32
dppMatchInt (dppFILEPTR fptr, int32 *num);
int32
dppMatchFloat (dppFILEPTR fptr, float *num);
int32
dppMatchCharacter (dppFILEPTR fptr, char c);
void
dppMoveToNextLine(dppFILEPTR fptr) ;


#endif /* __PFPARSER_H__ */

