/*
* parser.h - Parser functions
*
* Copyright (C) 1999-2001 by Roman Khnykin <romaroma@rr.org.ua>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program 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
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* Created: 22.06.1999 romaroma Initial revision.
* Changed: 05.03.2000 romaroma Documentation added.
* Changed: 06.03.2000 romaroma Changed mechanism of parse
* svalue tag.
* Changed: 30.03.2000 romaroma Changed to version 1.2.0
* Changed: 19.07.2000 romaroma Changed to version 1.3.1
* Changed: 02.08.2000 romaroma Changed to version 1.3.2
* Changed: 09.08.2000 romaroma Changed to version 1.3.3
* Changed: 17.08.2000 romaroma Changed to version 1.4.0
* Changed: 23.08.2000 romaroma Changed to version 1.4.1
* Changed: 04.09.2000 romaroma Changed to version 1.4.2
*
*/
#ifndef _PARSER_H
#define _PARSER_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
#include "parlist.h"
/*****************************************************************************/
/* External parser data */
/*****************************************************************************/
/*
* parser_file_base - string which will add to any included file name
*/
extern char *parser_file_base;
/*
* parser_extension_proc - Procedure for process external tags
*
* Parameters:
* char *tag - language command
* char *params - command parameters
* pparamslist *params - current parameters list
* void out_proc - pointer to procedure for output text
*
* Return value:
* none
*/
extern void (*parser_extension_proc)(const char *tag, const char *tagparams,
pparamslist *params, void out_proc(const char *txt, int len));
/***** value/svalue tag *****/
/*
* parser_svalue_proc - Type of procedure for process special value ("svalue")
* tag.
* WARNING: This function must allocate new string for result returning.
*
* Parameters:
* char *value - value fetched from svalue command
* char *key - key fetched from svalue command
*
* Return value:
* char * - new string (or NULL if no match key found).
*/
typedef char * (parser_svalue_proc) (const char *value, const char *key);
/*
* parser_svalue_reg, parser_svalue_unreg - Add/remove procedure for process
* special value ("svalue") tag.
* WARNING: Registered function must allocate new string for result returning.
*
* Parameters:
* parser_svalue_proc *proc - procedure address
*
* Return value:
* none
*/
void parser_svalue_reg(parser_svalue_proc *proc);
void parser_svalue_unreg(parser_svalue_proc *proc);
/***** exec tag *****/
/*
* parser_exec_proc - Type of procedure that will be
* executed by exec tag
*
* Parameters:
* int argc - count of parameters in exec tag
* char *argv[] - parameters, specified in exec tag
*
* Return value:
* none
*/
typedef void (parser_exec_proc) (int argc, const char *argv[]);
/*
* parser_exec_reg, parser_exec_unreg - Add/remove procedure that will be
* executed by exec tag
*
* Parameters:
* char *procname - procedure name for exec tag
* parser_exec_proc *proc - procedure address
*
* Return value:
* none
*/
void parser_exec_reg(char *procname, parser_exec_proc *proc);
void parser_exec_unreg(char *procname);
/*****************************************************************************/
/* Parser functions */
/*****************************************************************************/
/*
* fstrparse - Parse source string and put parsed data to file.
*
* Parameters:
* char *plainText - source string
* pparamslist *params - parameters list
* FILE *f - file for output parsed data
*
* Return value:
* none
*/
void fstrparse(const char *plainText, pparamslist *params, FILE *f);
/*
* fstrparse - Parse source string and put parsed data to string.
* WARNING: This function can process memory allocation.
*
* Parameters:
* char *plainText - source string
* pparamslist *params - parameters list
*
* Return value:
* char * - parsed string location
*/
char *sstrparse(const char *plainText, pparamslist *params);
/*
* strparse - Parse process function. It can get source text from string or load
* it from file. Also it has two methods of loading included files: read
* files into memory or use mmap to load theys.
* WARNING: This function can process memory allocation.
*
* Parameters:
* char *fileNameOrSrc - specify file name for parsing or prevousely
* loaded source text.
* char *sizeNameOrSrc - if fileNameOrSrc specified text in memory this
* parameter is specify text length. For NULL-terminated string
* it can be -1.
* pparamslist *params - parameters list
* FILE *outFile - output file or NULL for allocate new string with result
* int srcMode - what is in fileNameOrSrc parameter: filename or loaded
* text
* int loadMode - which mechanism will be used for files loading: load to
* memory or use mmap
*
* Return value:
* char * - parsed string location or NULL if parsed to file
*/
#define PARSER_SRC_STR 0
#define PARSER_SRC_FILE 1
#define PARSER_FLOAD_MEM 0
#define PARSER_FLOAD_MMAP 1
char *strparse(const char *fileNameOrSrc, int sizeNameOrSrc, pparamslist *params,
FILE *outFile, int srcMode, int loadMode);
/*
* loadTextFromFile - load text from file using loading method (memory or mmap)
*
* WARNING: This function can process memory allocation.
*
* Parameters:
* char *filename - name of file
* int loadMode - which mechanism will be used for files loading: load to
* memory or use mmap
* int *size - pointer to int where loaded data size will be stored
*
* Return value:
* char * - loaded text location or NULL if load fails
*/
char *loadTextFromFile(const char *filename, int loadMode, int *size);
/*
* unloadTextFromFile - unload text from memory or mmap file
*
* WARNING: This function can process memory reallocation.
*
* Parameters:
* char *text - prevousely loaded text location
* int loadMode - which mechanism will be used for unloading: free memory
* or munmap
* int size - size of text
*
* Return value:
* none
*/
void unloadTextFromFile(char *text, int loadMode, int size);
#ifdef __cplusplus
}
#endif
#endif
/* _PARSER_H */
syntax highlighted by Code2HTML, v. 0.9.1