raze/polymer/eduke32/source/jmact/_scrplib.h
hendricks266 fcf9beae6a Work-in-progress adjustment to the C code to compile under C++. It builds for me without errors using Win32 MinGW-GCC, but it still generates warning soup. No guarantees about MSVC or anything using SDL. Enable C++ by building with CPLUSPLUS=1. C remains the default and should compile with no change in setup.
Credit to Plagman for the idea and doing the work on the game side, which is included in this commit.

(Building as C++ will give us features with which we can make improvements and optimizations on the multiplayer code and Polymer.)

git-svn-id: https://svn.eduke32.com/eduke32@3116 1a8010ca-5511-0410-912e-c29ae57300e0
2012-11-05 02:49:08 +00:00

209 lines
3.9 KiB
C

//-------------------------------------------------------------------------
/*
Copyright (C) 1996, 2003 - 3D Realms Entertainment
This file is NOT part of Duke Nukem 3D version 1.5 - Atomic Edition
However, it is either an older version of a file that is, or is
some test code written during the development of Duke Nukem 3D.
This file is provided purely for educational interest.
Duke Nukem 3D 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.
Prepared for public release: 03/21/2003 - Charlie Wiederhold, 3D Realms
Modifications for JonoF's port by Jonathon Fowler (jf@jonof.id.au)
*/
//-------------------------------------------------------------------------
// scrplib.h
#ifndef _scriplib_private
#define _scriplib_private
#ifdef EXTERNC
{
#endif
#define SCRIPTSECTIONSTART ('[')
#define SCRIPTSECTIONEND (']')
#define SCRIPTENTRYSEPARATOR ('=')
#define SCRIPTCOMMENT (';')
#define SCRIPTEOL ('\n')
#define SCRIPTNULL ('\0')
#define SCRIPTSTRINGSEPARATOR ('"')
#define SCRIPTHEXFIRST ('0')
#define SCRIPTHEXSECOND ('x')
#define SCRIPTSPACE (' ')
#define SCRIPTDEFAULTVALUE ('~')
#define MAXSCRIPTFILES 20
#define SCRIPT(scripthandle,item) (scriptfiles[(scripthandle)]->item)
typedef enum
{
linetype_comment,
linetype_section,
linetype_entry
} linetype_t;
typedef struct scriptline
{
int32_t type;
void * ptr;
struct scriptline *nextline;
struct scriptline *prevline;
} ScriptLineType;
typedef struct scriptentry
{
char * name;
char * value;
struct scriptentry *nextentry;
struct scriptentry *preventry;
} ScriptEntryType;
typedef struct scriptsection
{
char * name;
ScriptEntryType *entries;
ScriptLineType *lastline;
struct scriptsection *nextsection;
struct scriptsection *prevsection;
} ScriptSectionType;
typedef struct
{
ScriptSectionType * script;
ScriptSectionType * lastsection;
ScriptLineType * scriptlines;
char scriptfilename[128];
} script_t;
/*
==============
=
= SCRIPT_New
=
==============
*/
int32_t SCRIPT_New( void );
/*
==============
=
= SCRIPT_Delete
=
==============
*/
void SCRIPT_Delete( int32_t scripthandle );
/*
==============
=
= SCRIPT_FreeSection
=
==============
*/
void SCRIPT_FreeSection( ScriptSectionType * section );
/*
==============
=
= SafeWriteString
=
==============
*/
void SafeWriteString (int32_t handle, char * string);
/*
==============
=
= SCRIPT_AddLine
=
==============
*/
ScriptLineType * SCRIPT_AddLine
(
ScriptLineType * root,
int32_t type,
void * ptr
);
/*
==============
=
= SCRIPT_SectionExists
=
==============
*/
ScriptSectionType * SCRIPT_SectionExists
(
int32_t scripthandle,
char * sectionname
);
/*
==============
=
= SCRIPT_AddSection
=
==============
*/
ScriptSectionType * SCRIPT_AddSection( int32_t scripthandle, char * sectionname );
/*
==============
=
= SCRIPT_EntryExists
=
==============
*/
ScriptEntryType * SCRIPT_EntryExists
(
ScriptSectionType * section,
char * entryname
);
/*
==============
=
= SCRIPT_AddEntry
=
==============
*/
void SCRIPT_AddEntry
(
int32_t scripthandle,
char * sectionname,
char * entryname,
char * entryvalue
);
/*
==============
=
= SCRIPT_DecodeToken
=
==============
*/
void SCRIPT_DecodeToken ( int32_t scripthandle, char * str );
#ifdef EXTERNC
};
#endif
#endif