aboutsummaryrefslogtreecommitdiffstats
path: root/common/scriplib.c
diff options
context:
space:
mode:
authortma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea>2005-09-28 18:55:31 +0000
committertma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea>2005-09-28 18:55:31 +0000
commitec912002d3f75729c627cf467903c4607a529495 (patch)
treeb944aa3ec6a159d4607b3bb25cb09640bca02ddb /common/scriplib.c
parentea1ca0473a510a02fff82788a2a6c8d95a6bf2d3 (diff)
downloadioquake3-aero-ec912002d3f75729c627cf467903c4607a529495.tar.gz
ioquake3-aero-ec912002d3f75729c627cf467903c4607a529495.zip
* Removed q3map and associated common and libs directories
git-svn-id: svn://svn.icculus.org/quake3/trunk@123 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'common/scriplib.c')
-rw-r--r--common/scriplib.c375
1 files changed, 0 insertions, 375 deletions
diff --git a/common/scriplib.c b/common/scriplib.c
deleted file mode 100644
index 9d1f32c..0000000
--- a/common/scriplib.c
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
-===========================================================================
-Copyright (C) 1999-2005 Id Software, Inc.
-
-This file is part of Quake III Arena source code.
-
-Quake III Arena source code 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.
-
-Quake III Arena source code 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 Foobar; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-===========================================================================
-*/
-// scriplib.c
-
-#include "cmdlib.h"
-#include "scriplib.h"
-
-/*
-=============================================================================
-
- PARSING STUFF
-
-=============================================================================
-*/
-
-typedef struct
-{
- char filename[1024];
- char *buffer,*script_p,*end_p;
- int line;
-} script_t;
-
-#define MAX_INCLUDES 8
-script_t scriptstack[MAX_INCLUDES];
-script_t *script;
-int scriptline;
-
-char token[MAXTOKEN];
-qboolean endofscript;
-qboolean tokenready; // only qtrue if UnGetToken was just called
-
-/*
-==============
-AddScriptToStack
-==============
-*/
-void AddScriptToStack( const char *filename ) {
- int size;
-
- script++;
- if (script == &scriptstack[MAX_INCLUDES])
- Error ("script file exceeded MAX_INCLUDES");
- strcpy (script->filename, ExpandPath (filename) );
-
- size = LoadFile (script->filename, (void **)&script->buffer);
-
- printf ("entering %s\n", script->filename);
-
- script->line = 1;
-
- script->script_p = script->buffer;
- script->end_p = script->buffer + size;
-}
-
-
-/*
-==============
-LoadScriptFile
-==============
-*/
-void LoadScriptFile( const char *filename ) {
- script = scriptstack;
- AddScriptToStack (filename);
-
- endofscript = qfalse;
- tokenready = qfalse;
-}
-
-
-/*
-==============
-ParseFromMemory
-==============
-*/
-void ParseFromMemory (char *buffer, int size)
-{
- script = scriptstack;
- script++;
- if (script == &scriptstack[MAX_INCLUDES])
- Error ("script file exceeded MAX_INCLUDES");
- strcpy (script->filename, "memory buffer" );
-
- script->buffer = buffer;
- script->line = 1;
- script->script_p = script->buffer;
- script->end_p = script->buffer + size;
-
- endofscript = qfalse;
- tokenready = qfalse;
-}
-
-
-/*
-==============
-UnGetToken
-
-Signals that the current token was not used, and should be reported
-for the next GetToken. Note that
-
-GetToken (qtrue);
-UnGetToken ();
-GetToken (qfalse);
-
-could cross a line boundary.
-==============
-*/
-void UnGetToken (void)
-{
- tokenready = qtrue;
-}
-
-
-qboolean EndOfScript (qboolean crossline)
-{
- if (!crossline)
- Error ("Line %i is incomplete\n",scriptline);
-
- if (!strcmp (script->filename, "memory buffer"))
- {
- endofscript = qtrue;
- return qfalse;
- }
-
- free (script->buffer);
- if (script == scriptstack+1)
- {
- endofscript = qtrue;
- return qfalse;
- }
- script--;
- scriptline = script->line;
- printf ("returning to %s\n", script->filename);
- return GetToken (crossline);
-}
-
-/*
-==============
-GetToken
-==============
-*/
-qboolean GetToken (qboolean crossline)
-{
- char *token_p;
-
- if (tokenready) // is a token allready waiting?
- {
- tokenready = qfalse;
- return qtrue;
- }
-
- if (script->script_p >= script->end_p)
- return EndOfScript (crossline);
-
-//
-// skip space
-//
-skipspace:
- while (*script->script_p <= 32)
- {
- if (script->script_p >= script->end_p)
- return EndOfScript (crossline);
- if (*script->script_p++ == '\n')
- {
- if (!crossline)
- Error ("Line %i is incomplete\n",scriptline);
- scriptline = script->line++;
- }
- }
-
- if (script->script_p >= script->end_p)
- return EndOfScript (crossline);
-
- // ; # // comments
- if (*script->script_p == ';' || *script->script_p == '#'
- || ( script->script_p[0] == '/' && script->script_p[1] == '/') )
- {
- if (!crossline)
- Error ("Line %i is incomplete\n",scriptline);
- while (*script->script_p++ != '\n')
- if (script->script_p >= script->end_p)
- return EndOfScript (crossline);
- scriptline = script->line++;
- goto skipspace;
- }
-
- // /* */ comments
- if (script->script_p[0] == '/' && script->script_p[1] == '*')
- {
- if (!crossline)
- Error ("Line %i is incomplete\n",scriptline);
- script->script_p+=2;
- while (script->script_p[0] != '*' && script->script_p[1] != '/')
- {
- if ( *script->script_p == '\n' ) {
- scriptline = script->line++;
- }
- script->script_p++;
- if (script->script_p >= script->end_p)
- return EndOfScript (crossline);
- }
- script->script_p += 2;
- goto skipspace;
- }
-
-//
-// copy token
-//
- token_p = token;
-
- if (*script->script_p == '"')
- {
- // quoted token
- script->script_p++;
- while (*script->script_p != '"')
- {
- *token_p++ = *script->script_p++;
- if (script->script_p == script->end_p)
- break;
- if (token_p == &token[MAXTOKEN])
- Error ("Token too large on line %i\n",scriptline);
- }
- script->script_p++;
- }
- else // regular token
- while ( *script->script_p > 32 && *script->script_p != ';')
- {
- *token_p++ = *script->script_p++;
- if (script->script_p == script->end_p)
- break;
- if (token_p == &token[MAXTOKEN])
- Error ("Token too large on line %i\n",scriptline);
- }
-
- *token_p = 0;
-
- if (!strcmp (token, "$include"))
- {
- GetToken (qfalse);
- AddScriptToStack (token);
- return GetToken (crossline);
- }
-
- return qtrue;
-}
-
-
-/*
-==============
-TokenAvailable
-
-Returns qtrue if there is another token on the line
-==============
-*/
-qboolean TokenAvailable (void) {
- int oldLine;
- qboolean r;
-
- oldLine = script->line;
- r = GetToken( qtrue );
- if ( !r ) {
- return qfalse;
- }
- UnGetToken();
- if ( oldLine == script->line ) {
- return qtrue;
- }
- return qfalse;
-}
-
-
-//=====================================================================
-
-
-void MatchToken( char *match ) {
- GetToken( qtrue );
-
- if ( strcmp( token, match ) ) {
- Error( "MatchToken( \"%s\" ) failed at line %i", match, scriptline );
- }
-}
-
-
-void Parse1DMatrix (int x, vec_t *m) {
- int i;
-
- MatchToken( "(" );
-
- for (i = 0 ; i < x ; i++) {
- GetToken( qfalse );
- m[i] = atof(token);
- }
-
- MatchToken( ")" );
-}
-
-void Parse2DMatrix (int y, int x, vec_t *m) {
- int i;
-
- MatchToken( "(" );
-
- for (i = 0 ; i < y ; i++) {
- Parse1DMatrix (x, m + i * x);
- }
-
- MatchToken( ")" );
-}
-
-void Parse3DMatrix (int z, int y, int x, vec_t *m) {
- int i;
-
- MatchToken( "(" );
-
- for (i = 0 ; i < z ; i++) {
- Parse2DMatrix (y, x, m + i * x*y);
- }
-
- MatchToken( ")" );
-}
-
-
-void Write1DMatrix (FILE *f, int x, vec_t *m) {
- int i;
-
- fprintf (f, "( ");
- for (i = 0 ; i < x ; i++) {
- if (m[i] == (int)m[i] ) {
- fprintf (f, "%i ", (int)m[i]);
- } else {
- fprintf (f, "%f ", m[i]);
- }
- }
- fprintf (f, ")");
-}
-
-void Write2DMatrix (FILE *f, int y, int x, vec_t *m) {
- int i;
-
- fprintf (f, "( ");
- for (i = 0 ; i < y ; i++) {
- Write1DMatrix (f, x, m + i*x);
- fprintf (f, " ");
- }
- fprintf (f, ")\n");
-}
-
-
-void Write3DMatrix (FILE *f, int z, int y, int x, vec_t *m) {
- int i;
-
- fprintf (f, "(\n");
- for (i = 0 ; i < z ; i++) {
- Write2DMatrix (f, y, x, m + i*(x*y) );
- }
- fprintf (f, ")\n");
-}
-