/*
Zz Dynamic Parser Library
Copyright (C) 1989 - I.N.F.N - S.Cabasino, P.S.Paolucci, G.M.Todesco
The Zz Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The Zz Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __SOURCE_H__
#define __SOURCE_H__
#define NO_SOURCE 0
#define SOURCE_FILE 1
#define SOURCE_TT 2
#define SOURCE_LIST 3
// Size of input buffer:
#define MAX_INPUT_LINE_LENGTH 256
// Prototype predeclaration:
struct s_source;
struct s_source_file
{
char *filename;
FILE *chan;
char row[MAX_INPUT_LINE_LENGTH],*s,*old;
};
struct s_source_tt
{
const char *prompt;
char row[MAX_INPUT_LINE_LENGTH],*s,*old;
};
struct s_source_list
{
void *id;
struct s_content *list;
int current_pos,line_n;
};
struct s_source
{
int type,eof,line_n;
struct s_content cur_token;
void (*read_next_token)(struct s_source *src);
union
{
struct s_source_file file;
struct s_source_tt tt;
struct s_source_list list;
} src;
};
#endif // __SOURCE_H__
extern struct s_source *new_source(void (*next_token_function)(struct s_source *src));
extern struct s_content cur_token;
extern int (*source_line_routine)();
extern int (*find_prompt_proc)();