diff options
author | Simon Howard | 2005-10-03 10:25:37 +0000 |
---|---|---|
committer | Simon Howard | 2005-10-03 10:25:37 +0000 |
commit | aff12461949e9ffc29faed9f238c9a74412be2fa (patch) | |
tree | aca4b7a0babc9cc04cc45bc0e0ce25ef18ea2378 /src/deh_mapping.h | |
parent | 33313564b8d19d495b15f94cfb8ab76a5ce4347f (diff) | |
download | chocolate-doom-aff12461949e9ffc29faed9f238c9a74412be2fa.tar.gz chocolate-doom-aff12461949e9ffc29faed9f238c9a74412be2fa.tar.bz2 chocolate-doom-aff12461949e9ffc29faed9f238c9a74412be2fa.zip |
Add mapping code to map out structures and switch thing/frame code to use
this.
Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 155
Diffstat (limited to 'src/deh_mapping.h')
-rw-r--r-- | src/deh_mapping.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/deh_mapping.h b/src/deh_mapping.h new file mode 100644 index 00000000..d390bbbf --- /dev/null +++ b/src/deh_mapping.h @@ -0,0 +1,89 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// $Id: deh_mapping.h 155 2005-10-03 10:25:37Z fraggle $ +// +// Copyright(C) 2005 Simon Howard +// +// 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, 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. +// +// $Log$ +// Revision 1.1 2005/10/03 10:25:37 fraggle +// Add mapping code to map out structures and switch thing/frame code to use +// this. +// +// +//----------------------------------------------------------------------------- +// +// Dehacked "mapping" code +// Allows the fields in structures to be mapped out and accessed by +// name +// +//----------------------------------------------------------------------------- + +#ifndef DEH_MAPPING_H +#define DEH_MAPPING_H + +#include "doomtype.h" + +#define DEH_BEGIN_MAPPING(mapping_name, structname) \ + static structname deh_mapping_base; \ + static deh_mapping_t mapping_name = \ + { \ + &deh_mapping_base, \ + { + +#define DEH_MAPPING(deh_name, fieldname) \ + {deh_name, &deh_mapping_base.fieldname, \ + sizeof(deh_mapping_base.fieldname)}, + +#define DEH_END_MAPPING \ + {NULL} \ + } \ + }; + + + +#define MAX_MAPPING_ENTRIES 32 + +typedef struct deh_mapping_s deh_mapping_t; +typedef struct deh_mapping_entry_s deh_mapping_entry_t; + +struct deh_mapping_entry_s +{ + // field name + + char *name; + + // location relative to the base in the deh_mapping_t struct + + void *location; + + // field size + + int size; +}; + +struct deh_mapping_s +{ + void *base; + deh_mapping_entry_t entries[MAX_MAPPING_ENTRIES]; +}; + +boolean DEH_SetMapping(deh_mapping_t *mapping, void *structptr, char *name, int value); + +#endif /* #ifndef DEH_MAPPING_H */ + |