1 /********************************************************************** 2 Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold 3 This program is free software; you can redistribute it and/or modify 4 it under the terms of the GNU General Public License as published by 5 the Free Software Foundation; either version 2, or (at your option) 6 any later version. 7 8 This program is distributed in the hope that it will be useful, 9 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 GNU General Public License for more details. 12 ***********************************************************************/ 13 14 /********************************************************************** 15 A low-level object for reading a registry-format file. 16 See comments in inputfile.c 17 ***********************************************************************/ 18 19 #ifndef FC__INPUTFILE_H 20 #define FC__INPUTFILE_H 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif /* __cplusplus */ 25 26 /* utility */ 27 #include "ioz.h" 28 #include "log.h" /* enum log_level */ 29 #include "support.h" /* bool type and fc__attribute */ 30 31 struct inputfile; /* opaque */ 32 33 typedef const char *(*datafilename_fn_t)(const char *filename); 34 35 struct inputfile *inf_from_file(const char *filename, 36 datafilename_fn_t datafn); 37 struct inputfile *inf_from_stream(fz_FILE * stream, 38 datafilename_fn_t datafn); 39 void inf_close(struct inputfile *inf); 40 bool inf_at_eof(struct inputfile *inf); 41 42 enum inf_token_type { 43 INF_TOK_SECTION_NAME, 44 INF_TOK_ENTRY_NAME, 45 INF_TOK_EOL, 46 INF_TOK_TABLE_START, 47 INF_TOK_TABLE_END, 48 INF_TOK_COMMA, 49 INF_TOK_VALUE, 50 INF_TOK_LAST 51 }; 52 #define INF_TOK_FIRST INF_TOK_SECTION_NAME 53 54 const char *inf_token(struct inputfile *inf, enum inf_token_type type); 55 int inf_discard_tokens(struct inputfile *inf, enum inf_token_type type); 56 57 char *inf_log_str(struct inputfile *inf, const char *message, ...) 58 fc__attribute((__format__ (__printf__, 2, 3))); 59 60 #ifdef __cplusplus 61 } 62 #endif /* __cplusplus */ 63 64 #endif /* FC__INPUTFILE_H */ 65