added 3dengfx into the repo, probably not the correct version for this
[summerhack] / src / 3dengfx / src / dsys / script.h
1 /*
2 This file is part of the 3dengfx demo system.
3
4 Copyright (c) 2004, 2005 John Tsiombikas <nuclear@siggraph.org>
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program demo is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 */
20
21 #ifndef _SCRIPT_H_
22 #define _SCRIPT_H_
23
24 #include <stdio.h>
25 #include "cmd.h"
26
27 typedef struct DemoScript {
28         char *fname;
29         FILE *file;
30         char *line_buffer;
31         long line;
32 } DemoScript;
33
34 typedef enum CommandType {
35         COMMANDS
36 } CommandType;
37
38 typedef struct DemoCommand {
39         unsigned long time;
40         CommandType type;
41         const char **argv;
42         int argc;
43 } DemoCommand;
44
45 #ifdef __cplusplus
46 extern "C" {
47 #endif  /* __cplusplus */
48
49 DemoScript *open_script(const char *fname);
50 void close_script(DemoScript *ds);
51
52 /* returns EOF on eof, 0 for successfull retrieval of command an 1 if
53  * the command on the next line is to be executed at the future
54  */
55 int get_next_command(DemoScript *ds, DemoCommand *cmd, unsigned long time);
56 void free_command(DemoCommand *cmd);
57
58 long str_to_time(const char *str);
59
60 #ifdef __cplusplus
61 }
62 #endif  /* __cplusplus */
63
64 #endif  /* _SCRIPT_H_ */