📄 cvars.h
字号:
} *HeadLibs;
global SYMPTR CurFunc; /* current function being worked on */
global SYM_ENTRY CurFuncSym; /* for contents of current function symbol */
global SYM_HANDLE CurFuncHandle;/* sym_handle for current function */
global SYM_HANDLE LastFuncOutOfMem; /* cinfo: */
global SYM_HASHPTR HashFreeList;/* list of available hash entries */
global unsigned SymBufNum; /* current buffer in memory */
global unsigned SymSegNum; /* segment # containing buffer */
global unsigned LastSymBuf; /* # of last symbol table buffer */
global unsigned SymBufDirty; /* 1 => buffer has been changed */
global SEGADDR_T SymSegment; /* segment # for symbol table buffers */
global TYPEPTR StringType; /* "unsigned char *" for use by literals */
global TYPEPTR ConstCharType; /* "const char" type */
global TYPEPTR StringArrayType;/* "unsigned char []" used by literals */
global struct nested_parm_lists {
struct nested_parm_lists *prev_list;
TYPEPTR *next_parm_type;
} *NestedParms;
#ifndef LARGEST_QUAD_INDEX
#define LARGEST_QUAD_INDEX 0xFFFF
#define LARGEST_DATA_QUAD_INDEX 0xFFFFF
#else
#define LARGEST_DATA_QUAD_INDEX LARGEST_QUAD_INDEX
#endif
#define LARGEST_SYM_INDEX 0xFFFF
#define SYM_BUF_SIZE 1024
#define SYMS_PER_BUF (SYM_BUF_SIZE/sizeof(SYM_ENTRY))
#define SYMBUFS_PER_SEG 16
#define SYM_SEG_SIZE (SYM_BUF_SIZE*SYMBUFS_PER_SEG)
#define MAX_SYM_SEGS (LARGEST_SYM_INDEX/(SYMS_PER_BUF*SYMBUFS_PER_SEG)+1)
global struct seg_info SymSegs[MAX_SYM_SEGS]; /* segments for symbols */
#define STRING_HASH_SIZE 1024
global STR_HANDLE StringHash[STRING_HASH_SIZE]; /* string literals */
global char *TextSegName; /* name of the text segment */
global char *DataSegName; /* name of the data segment */
global char *CodeClassName; /* name of the code class */
global char *ModuleName; /* name of module */
global char *ObjectFileName;/* name of object file */
global char *DependFileName;/* name of make style auto depend file */
global char *DependTarget; /* name of target in make style autodep */
global char *SrcDepName; /* name of first depend (sourcefile)*/
global char DependForceSlash;/* type of slash to force to in depend output */
global int PackAmount; /* current packing alignment */
global int GblPackAmount; /* packing alignment given on command line */
global struct textsegment *TextSegList; /* list of #pragma alloc_text segs*/
typedef enum {
SEGTYPE_CODE = 1, /* #pragma code_seg("segname","class") */
SEGTYPE_DATA = 2, /* #pragma data_seg("segname","class") */
SEGTYPE_BASED = 3, /* __based(__segname("segname")) */
SEGTYPE_INITFINI = 4, /* "XI" or "YI" segment */
SEGTYPE_INITFINITR = 5, /* thread data */
}seg_type;
struct user_seg;
global struct user_seg *UserSegments;
#if defined( M_I86 ) && defined(__WATCOMC__)
extern int far_strcmp(char far *, char *, int );
#ifdef __LARGE__
#pragma aux far_strcmp = 0xf3 /* rep */\
0xa6 /* cmpsb */\
0x74 0x03 /* je L1 */\
0xb9 0x01 0x00 /* mov cx,1 */\
parm caller [es di] [ds si] [cx] value [cx] modify exact [si di cx];
#else
#pragma aux far_strcmp = 0xf3 /* rep */\
0xa6 /* cmpsb */\
0x74 0x03 /* je L1 */\
0xb9 0x01 0x00 /* mov cx,1 */\
parm caller [es di] [si] [cx] value [cx] modify exact [si di cx];
#endif
extern int far_strlen_plus1(char far *);
#pragma aux far_strlen_plus1 = 0x29 0xc0 /* sub ax,ax */\
0x4f /* dec di */\
0x47 /* L1:inc di */\
0x40 /* inc ax */\
0x26 0x80 0x3d 0x00 /* cmp es:[di],0 */\
0x75 0xf8 /* jne L1 */\
parm caller [es di] value [ax] modify exact [di ax];
extern void far_memcpy( char far *, char far *, int );
#pragma aux far_memcpy = 0x1e /* push ds */\
0x8e 0xda /* mov ds,dx */\
0xf3 0xa4 /* rep movsb */\
0x1f /* pop ds */\
parm caller [es di] [dx si] [cx] modify exact [si di cx];
#elif defined(__386__) && defined(__FLAT__) && defined(__WATCOMC__)
extern int far_strcmp(char *, char *, int );
#pragma aux far_strcmp = 0xf3 /* rep */\
0xa6 /* cmpsb */\
0x74 0x01 /* je L1 */\
0x41 /* inc ecx */\
parm caller [edi] [esi] [ecx] value [ecx] modify exact [esi edi ecx];
extern int far_strlen_plus1(char *);
#pragma aux far_strlen_plus1 = 0x29 0xc0 /* sub eax,eax */\
0x4f /* dec edi */\
0x47 /* L1:inc edi */\
0x40 /* inc eax */\
0x80 0x3f 0x00 /* cmp [edi],0 */\
0x75 0xf9 /* jne L1 */\
parm caller [edi] value [eax] modify exact [edi eax];
extern void far_memcpy( char *, char *, int );
#pragma aux far_memcpy = 0xf3 0xa4 /* rep movsb */\
parm caller [edi] [esi] [ecx] modify exact [esi edi ecx];
#else
#define far_strcmp(__p1,__p2,__len) memcmp(__p1,__p2,__len)
#define far_strlen_plus1( p ) (strlen( p ) + 1)
#define far_memcpy( p1, p2, len ) memcpy( p1, p2, len )
#endif
global int (*NextChar)();
global struct debug_fwd_types *DebugNameList;
global unsigned Column; /* skip to Column when reading */
global unsigned Trunc; /* stop at Trunc when reading */
global int EnumRecSize; /* size of largest enum entry */
global int PreProcChar;
global TYPEPTR PrevProtoType; /* prev func prototype */
global unsigned SegAlignment[FIRST_PRIVATE_SEGMENT];
global unsigned TargSys;
global unsigned DefDataSegment; /* #pragma data_seg("segname","class") */
global struct textsegment *DefCodeSegment; /* #pragma code_seg("seg","c") */
global unsigned UnrollCount; /* #pragma unroll(#); */
global unsigned char InitialMacroFlag;
global unsigned char Stack87;
global char *ErrorFileName;
global int DataQuadSegIndex; /* cdinit */
global struct undef_names {
struct undef_names *next;
char *name;
} *UndefNames;
//================= Function Prototypes ========================
extern unsigned char TBreak(void); /* casmsupp */
extern void SetDBChar(int); /* casian */
extern struct aux_entry *AuxLookup(char *); /* caux.c */
extern void PragmaFini(void); /* caux.c */
extern int ChkCompatibleFunction( TYPEPTR typ1, TYPEPTR typ2, int topLevelCheck ); /*ccheck*/
extern void TernChk( TYPEPTR typ1, TYPEPTR typ2 ); /*check */
extern void ChkCallParms(void); /* ccheck */
extern void ChkRetType(TREEPTR); /* ccheck */
extern void ChkConst(TREEPTR); /* ccheck */
extern void CompatiblePtrType(TYPEPTR,TYPEPTR); /* ccheck */
extern int IdenticalType(TYPEPTR,TYPEPTR); /* ccheck */
extern int VerifyType(TYPEPTR,TYPEPTR,SYMPTR);/* ccheck */
extern TYPEPTR SkipTypeFluff( TYPEPTR typ ); /* ccheck */
extern void ParmAsgnCheck( TYPEPTR typ1, TREEPTR opnd2, int parm_num ); /* ccheck */
//ccmain.c
extern void FreeRDir( void );
extern void FrontEndInit( bool reuse );
extern int FrontEnd(char **);
extern void FrontEndFini( void );
extern void CppComment(int);
extern int CppPrinting(void);
extern void CppPutc(int);
extern void CppPrtf(char *,...);
extern void SetCppWidth(unsigned);
extern void PrtChar(int);
extern void PrtToken(void);
extern int OpenSrcFile(char *,int);
extern void OpenDefFile(void);
extern FILE *OpenBrowseFile(void);
extern void CloseFiles(void);
extern void FreeFNames(void);
extern char *ErrFileName(void);
extern char *DepFileName(void);
extern char *ObjFileName(char *);
extern char *ForceSlash(char *, char );
extern char *CreateFileName( char *template, char *extension, bool forceext );
extern char *GetSourceDepName( void );
extern FNAMEPTR AddFlist(char const *);
extern FNAMEPTR FileIndexToFName(unsigned);
extern char *FNameFullPath( FNAMEPTR flist );
extern char *FileIndexToCorrectName( unsigned file_index );
extern int FListSrcQue(void);
extern void SrcFileReadOnlyDir( char const *dir );
extern void SrcFileReadOnlyFile( char const *file );
extern bool SrcFileInRDir( FNAMEPTR flist );
extern int SrcFileTime(char const *,time_t *);
extern void SetSrcFNameOnce( void );
extern void GetNextToken(void);
extern void EmitLine(unsigned,char *);
extern void EmitPoundLine(unsigned,char *,int);
// cdata.c
extern void InitGlobalVars( void );
// from cdebug.c
extern dbug_type DBType(TYPEPTR);
extern void EmitDBType(void);
extern dbug_type FEDbgType( CGSYM_HANDLE cgsym_handle );
extern dbug_type FEDbgRetType( CGSYM_HANDLE cgsym_handle );
extern void ParsePgm(void);
extern void AdjParmType(SYMPTR sym);
extern void Chk_Struct_Union_Enum(TYPEPTR);
extern void Declarator( SYMPTR sym, type_modifiers mod, TYPEPTR typ, decl_state state );
extern int DeclList(SYM_HANDLE *);
extern FIELDPTR FieldDecl( TYPEPTR typ, type_modifiers mod, decl_state state );
extern TYPEPTR SkipDummyTypedef(TYPEPTR);
extern TYPEPTR TypeName(void);
// cdecl2.c
extern void InvDecl( void );
// cinfo.c
extern segment_id SymSegId( SYMPTR sym );
extern void InitDataQuads(void); /* cdinit */
extern void FreeDataQuads(void); /* cdinit */
extern int StartDataQuadAccess(void); /* cdinit */
extern DATA_QUAD *NextDataQuad(void); /* cdinit */
extern void InitSymData(TYPEPTR,int); /* cdinit */
extern void StaticInit(SYMPTR,SYM_HANDLE); /* cdinit */
extern void VarDeclEquals(SYMPTR,SYM_HANDLE);/* cdinit */
extern void DumpFuncDefn(void); /* cdump */
extern void SymDump(void); /* cdump */
extern char * DiagGetTypeName(TYPEPTR typ); /* cdump */
extern SEGADDR_T AccessSegment(struct seg_info *); /* cems */
extern SEGADDR_T AllocSegment(struct seg_info *); /* cems */
extern TYPEPTR EnumDecl(int); /* cenum */
extern int EnumLookup(int,char *,ENUM_INFO *); /* cenum */
extern void EnumInit(void); /* cenum */
extern void FreeEnums(void); /* cenum */
//cerror.c
extern void CErr1(int);
extern void CErr2(int,int);
extern void CErr2p(int,char *);
extern void CErr(int,...);
extern void SetErrLoc(char *,unsigned);
extern void SetSymLoc(SYMPTR);
extern void CWarn1(int,int);
extern void CWarn2(int,int,int);
extern void CWarn(int,int,...);
extern void CNote( int msgnum, ... );
extern void PCHNote( int msgnum, ... );
extern void CInfoMsg(int,...);
extern void CSuicide(void);
extern void OpenErrFile(void);
extern void FmtCMsg( char *buff, cmsg_info *info );
extern void SetDiagSymbol(SYMPTR sym, SYM_HANDLE handle);
extern void SetDiagType2(TYPEPTR typ_source, TYPEPTR typ_target);
extern void SetDiagPop(void);
// cexpr2.c
extern void ExprInit(void);
extern void ChkCallNode( TREEPTR tree );
extern TREEPTR Expr(void);
extern TREEPTR AddrExpr(void);
extern TREEPTR BoolExpr(TREEPTR);
extern TREEPTR CommaExpr(void);
extern long int ConstExpr(void);
typedef struct{
int_32 val32;
int64 val64;
DATA_TYPE type;
}const_val;
extern bool ConstExprAndType(const_val *);
extern TREEPTR SingleExpr(void);
extern TREEPTR IntLeaf(target_int);
extern TREEPTR RValue(TREEPTR);
extern TREEPTR LongLeaf(target_long);
extern TREEPTR UIntLeaf(target_uint);
extern TREEPTR VarLeaf(SYMPTR,SYM_HANDLE);
extern TREEPTR BasedPtrNode(TYPEPTR,TREEPTR);
extern int IsLValue(TREEPTR);
extern op_flags OpFlags( type_modifiers flags );
extern type_modifiers FlagOps( op_flags ops );
//cfeinfo.c
extern int VarFunc(SYMPTR);
extern int VarParm(SYMPTR);
extern void GetCallClass(SYM_HANDLE);
extern struct aux_info *FindInfo(SYMPTR,SYM_HANDLE);
extern int FunctionAborts(SYMPTR,SYM_HANDLE);
extern int ParmsToBeReversed(int,struct aux_info *);
extern char *SrcFullPath( char *, char const *, unsigned );
//cfold2.c
extern void CastFloatValue( TREEPTR leaf, DATA_TYPE newtype );
extern void CastConstValue(TREEPTR,DATA_TYPE);
extern void DoConstFold(TREEPTR);
extern void FoldExprTree(TREEPTR);
extern bool BoolConstExpr( void );
//cgen2.c
extern void DoCompile(void);
extern void EmitInit(void);
extern void EmitAbort(void);
extern void EmitStrPtr(STR_HANDLE,int);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -