home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 113 / EnigmaAmiga113CD.iso / software / sviluppo / glquake_src / pr_comp.h < prev    next >
Text File  |  1999-12-28  |  3KB  |  181 lines

  1. /*
  2. Copyright (C) 1996-1997 Id Software, Inc.
  3.  
  4. This program is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU General Public License
  6. as published by the Free Software Foundation; either version 2
  7. of the License, or (at your option) any later version.
  8.  
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
  12.  
  13. See the GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  
  19. */
  20.  
  21. // this file is shared by quake and qcc
  22.  
  23. typedef int func_t;
  24. typedef int string_t;
  25.  
  26. typedef enum {ev_void, ev_string, ev_float, ev_vector, ev_entity, ev_field, ev_function, ev_pointer} etype_t;
  27.  
  28.  
  29. #define OFS_NULL    0
  30. #define OFS_RETURN    1
  31. #define OFS_PARM0   4   // leave 3 ofs for each parm to hold vectors
  32. #define OFS_PARM1   7
  33. #define OFS_PARM2   10
  34. #define OFS_PARM3   13
  35. #define OFS_PARM4   16
  36. #define OFS_PARM5   19
  37. #define OFS_PARM6   22
  38. #define OFS_PARM7   25
  39. #define RESERVED_OFS  28
  40.  
  41.  
  42. enum {
  43.   OP_DONE,
  44.   OP_MUL_F,
  45.   OP_MUL_V,
  46.   OP_MUL_FV,
  47.   OP_MUL_VF,
  48.   OP_DIV_F,
  49.   OP_ADD_F,
  50.   OP_ADD_V,
  51.   OP_SUB_F,
  52.   OP_SUB_V,
  53.   
  54.   OP_EQ_F,
  55.   OP_EQ_V,
  56.   OP_EQ_S,
  57.   OP_EQ_E,
  58.   OP_EQ_FNC,
  59.   
  60.   OP_NE_F,
  61.   OP_NE_V,
  62.   OP_NE_S,
  63.   OP_NE_E,
  64.   OP_NE_FNC,
  65.   
  66.   OP_LE,
  67.   OP_GE,
  68.   OP_LT,
  69.   OP_GT,
  70.  
  71.   OP_LOAD_F,
  72.   OP_LOAD_V,
  73.   OP_LOAD_S,
  74.   OP_LOAD_ENT,
  75.   OP_LOAD_FLD,
  76.   OP_LOAD_FNC,
  77.  
  78.   OP_ADDRESS,
  79.  
  80.   OP_STORE_F,
  81.   OP_STORE_V,
  82.   OP_STORE_S,
  83.   OP_STORE_ENT,
  84.   OP_STORE_FLD,
  85.   OP_STORE_FNC,
  86.  
  87.   OP_STOREP_F,
  88.   OP_STOREP_V,
  89.   OP_STOREP_S,
  90.   OP_STOREP_ENT,
  91.   OP_STOREP_FLD,
  92.   OP_STOREP_FNC,
  93.  
  94.   OP_RETURN,
  95.   OP_NOT_F,
  96.   OP_NOT_V,
  97.   OP_NOT_S,
  98.   OP_NOT_ENT,
  99.   OP_NOT_FNC,
  100.   OP_IF,
  101.   OP_IFNOT,
  102.   OP_CALL0,
  103.   OP_CALL1,
  104.   OP_CALL2,
  105.   OP_CALL3,
  106.   OP_CALL4,
  107.   OP_CALL5,
  108.   OP_CALL6,
  109.   OP_CALL7,
  110.   OP_CALL8,
  111.   OP_STATE,
  112.   OP_GOTO,
  113.   OP_AND,
  114.   OP_OR,
  115.   
  116.   OP_BITAND,
  117.   OP_BITOR
  118. };
  119.  
  120.  
  121. typedef struct statement_s
  122. {
  123.   unsigned short  op;
  124.   short a,b,c;
  125. } dstatement_t;
  126.  
  127. typedef struct
  128. {
  129.   unsigned short  type;   // if DEF_SAVEGLOBGAL bit is set
  130.                 // the variable needs to be saved in savegames
  131.   unsigned short  ofs;
  132.   int     s_name;
  133. } ddef_t;
  134. #define DEF_SAVEGLOBAL  (1<<15)
  135.  
  136. #define MAX_PARMS 8
  137.  
  138. typedef struct
  139. {
  140.   int   first_statement;  // negative numbers are builtins
  141.   int   parm_start;
  142.   int   locals;       // total ints of parms + locals
  143.   
  144.   int   profile;    // runtime
  145.   
  146.   int   s_name;
  147.   int   s_file;     // source file defined in
  148.   
  149.   int   numparms;
  150.   byte  parm_size[MAX_PARMS];
  151. } dfunction_t;
  152.  
  153.  
  154. #define PROG_VERSION  6
  155. typedef struct
  156. {
  157.   int   version;
  158.   int   crc;      // check of header file
  159.   
  160.   int   ofs_statements;
  161.   int   numstatements;  // statement 0 is an error
  162.  
  163.   int   ofs_globaldefs;
  164.   int   numglobaldefs;
  165.   
  166.   int   ofs_fielddefs;
  167.   int   numfielddefs;
  168.   
  169.   int   ofs_functions;
  170.   int   numfunctions; // function 0 is an empty
  171.   
  172.   int   ofs_strings;
  173.   int   numstrings;   // first string is a null string
  174.  
  175.   int   ofs_globals;
  176.   int   numglobals;
  177.   
  178.   int   entityfields;
  179. } dprograms_t;
  180.  
  181.