Annotation of quakeworld/server/pr_comp.h, revision 1.1

1.1     ! root        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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.