diptypes.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 235 行

H
235
字号
/****************************************************************************
*
*                            Open Watcom Project
*
*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
*  ========================================================================
*
*    This file contains Original Code and/or Modifications of Original
*    Code as defined in and that are subject to the Sybase Open Watcom
*    Public License version 1.0 (the 'License'). You may not use this file
*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
*    provided with the Original Code and Modifications, and is also
*    available at www.sybase.com/developer/opensource.
*
*    The Original Code and all software distributed under the License are
*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
*    NON-INFRINGEMENT. Please see the License for the specific language
*    governing rights and limitations under the License.
*
*  ========================================================================
*
* Description:  WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
*               DESCRIBE IT HERE!
*
****************************************************************************/


#ifndef DIPTYPES_H
#include "digpck.h"

#include "digtypes.h"

struct process_info;
struct image_handle;
struct type_handle;
struct cue_handle;
struct sym_handle;
struct dip_imp_routines;
struct location_context;

typedef struct process_info     process_info;
typedef struct image_handle     image_handle;
typedef struct type_handle      type_handle;
typedef struct cue_handle       cue_handle;
typedef struct sym_handle       sym_handle;
typedef struct dip_imp_routines dip_imp_routines;
typedef unsigned_32             mod_handle;
typedef unsigned_32             cue_file_id;
typedef struct location_context location_context;


#define NO_MOD          ((mod_handle)0)
#define ILL_MOD         ((mod_handle)1)

#define DP_MIN          0
#define DP_HIGHEST      (DP_DEFAULT-1)
#define DP_DEFAULT      (DP_NORMAL-1)
#define DP_NORMAL       50
#define DP_EXPORTS      75
#define DP_MAX          100

typedef unsigned_8 handle_kind; enum {
                HK_IMAGE,
                HK_TYPE,
                HK_CUE,
                HK_SYM,
                HK_LAST };

typedef unsigned_8 symbol_source; enum {
                SS_MODULE,
                SS_SCOPED,
                SS_TYPE,
                SS_BLOCK,
                SS_SCOPESYM,
                SS_LAST };

typedef unsigned_8 sym_walk_info; enum {
                SWI_SYMBOL,
                SWI_INHERIT_START,
                SWI_INHERIT_END,
                SWI_LAST };

typedef unsigned_8 symbol_name; enum {
                SN_EXPRESSION,
                SN_SOURCE,
                SN_OBJECT,
                SN_DEMANGLED,
                SN_SCOPED,
                SN_LAST };

typedef unsigned_8 default_kind; enum {
                DK_INT,
                DK_DATA_PTR,
                DK_CODE_PTR,
                DK_LAST };

typedef unsigned_16 dip_status; enum {
                DS_OK,
                DS_FAIL,
                DS_TOO_MANY_DIPS,
                DS_INVALID_DIP_VERSION,
                DS_NO_MEM,
                DS_NO_PROCESS,
                DS_TOO_MANY_IMAGES,
                DS_TOO_MANY_POINTERS,
                DS_IMPROPER_TYPE,
                DS_FOPEN_FAILED,
                DS_FREAD_FAILED,
                DS_FWRITE_FAILED,
                DS_FSEEK_FAILED,
                DS_INVALID_DIP,
                DS_BAD_PARM,
                DS_WRAPPED,
                DS_INFO_INVALID,
                DS_INFO_BAD_VERSION,
                DS_NO_PARM,
                DS_BAD_LOCATION,
                DS_NO_CONTEXT,
                DS_CONTEXT_ITEM_INVALID,
                DS_NO_READ_MEM,
                DS_NO_WRITE_MEM,
                DS_INVALID_OPERATOR,
                DS_LAST,
                DS_ERR=0x4000 };


typedef struct {
    address             start;
    addr_off            len;
    unsigned long       unique;
} scope_block;

typedef struct {
    long                low_bound;
    unsigned long       num_elts;
    unsigned long       stride;
    unsigned            num_dims;
    unsigned            column_major    : 1;
} array_info;

typedef unsigned_8 sym_kind; enum {
    SK_NONE,
    SK_CODE,
    SK_DATA,
    SK_CONST,
    SK_TYPE,
    SK_PROCEDURE,
    SK_NAMESPACE,
    SK_LAST
};

typedef struct {
    sym_kind            kind;
    unsigned            global                  : 1;
    unsigned            member                  : 1;
    unsigned            compiler                : 1;
    unsigned            is_private              : 1;
    unsigned            is_protected            : 1;
    unsigned            is_public               : 1;
    /* only valid for SK_PROCEDURE */
    unsigned            rtn_far                 : 1;
    unsigned            rtn_calloc              : 1;
    unsigned            ret_modifier            : 3;
    unsigned            ret_size                : 4;
    /* is_static is valid for all symbols */
    unsigned            is_static               : 1;
    unsigned short      num_parms;
    addr_off            ret_addr_offset;
    addr_off            prolog_size;
    addr_off            epilog_size;
    addr_off            rtn_size;
} sym_info;

typedef unsigned_8 location_type; enum { LT_ADDR, LT_INTERNAL };

typedef struct {
    unsigned    type            : 1;
    unsigned    bit_start       : 15;
    unsigned    bit_length      : 16;
    union {
        address                 addr;
        void                    *p;
    }           u;
} location_entry;

#define MAX_LOC_ENTRIES 16

typedef struct {
    unsigned_8          num;
    unsigned_8          flags;                  /* user defined flags */
    location_entry      e[MAX_LOC_ENTRIES];
} location_list;

typedef struct {
    char        *start;
    unsigned    len;
} lookup_token;

typedef unsigned_8 symbol_type; enum {
    ST_NONE,
    ST_OPERATOR,
    ST_DESTRUCTOR,
    ST_TYPE,
    ST_STRUCT_TAG,
    ST_CLASS_TAG,
    ST_UNION_TAG,
    ST_ENUM_TAG,
    ST_NAMESPACE,
    ST_LAST
};

typedef struct {
    mod_handle          mod;
    lookup_token        name;
    lookup_token        scope;
    lookup_token        source;
    unsigned            file_scope      : 1;
    unsigned            case_sensitive  : 1;
    unsigned            type            : 4; /* symbol_type values */
} lookup_item;

//temp: for ease of transition
#define DIPENTRY        DIGENTRY
//#define DIPCLIENT     DIGCLIENT

#define DIPTYPES_H

#include "digunpck.h"
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?