/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* COPYING NOTES
*
* parser.h -- Function to parserize a text file structure like MS'.ini
*
* Copyright (C) 2003 Roberto A. Foglietta <robang@libero.it>
* Copyright (C) 2003 GEA-Automotive <fogliettar@gea-automotive.com>
*
* 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.
*
* 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.
*/
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* REVISION NOTES:
*
* released 22-05-2003 by Roberto A. Foglietta
* static 27-06-2003 by Roberto A. Foglietta
*
*/
#ifndef PARSER_H
#define PARSER_H
#ifndef PARSER_DYNAMIC_VERSION
/* RAF 2003-06-27: Static version of parser with fixed
* number of maximum parameters. This
* number could be changed by users
* only by recompiling the source code.
*/
#ifndef MAX_NUM_PARSER_PARAM
/* The numbers of parameters really useable will
* be one less than the number here defined.
*/
#define MAX_NUM_PARSER_PARAM 16
#endif
#endif
union alltypes {
int d;
float f;
unsigned u;
char *s;
long ld;
double lf;
unsigned long lu;
};
char *grab_section_from_text(const char *pt, const char *name);
/*
* pointer = grab_section_from_text(text, "section name or NULL");
*
* find and return the starting point of the section which has the
* name passed as 2nd parameter or the first section encountered
* if the 2nd parameter is a NULL pointer.
*/
char *dup_n_separate_section(const char *p);
/*
* buffer = dup_n_separate_section(start_text);
*
* get and alloc a copy of the first section contained in the text
* pointend by the parameter *p. Someday you will free this buffer!
*/
union alltypes back_cast_param_from_test(char *str, const char *cast);
/*
* value = back_cast_param_from_test(string, cast_type);
*
* this function keep the text passed as first parameter and trasform it
* in a value backcasting it in the type passed ad 2nd parameter.
* followings are the only cast usable (actually):
* %u, %d, %x, %f, %s, %lu, %ld, %lx, %lf
*/
union alltypes *get_mult_param_value_from_text (const char *pt, const char *pname, const char **cast);
/*
* value_vector = get_mult_param_value_from_text (string, param_name, cast_vector);
*
* this function keep the text passed as first parameter and trasform it
* in a vector of values backcasting it as cast_vector indicate.
* ATTENTION: cast_vector[N+1] = { "type1", "type2", ..., "typeN", NULL};
* ATTENTION: cast_vector has to end with a NULL pointer!
* followings are the only cast usable (actually):
* %u, %d, %x, %f, %s, %lu, %ld, %lx, %lf
*/
#endif /* PARSER_H */