symtype.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 1,407 行 · 第 1/5 页

H
1,407
字号
extern void LinkageReset( void );
extern LINKAGE LinkageAdd( char *, AUX_INFO * );
extern void LinkagePush( char * );
extern void LinkagePushC( void );
extern void LinkagePushCpp( void );
extern void LinkageBlock( void );
extern void LinkagePop( void );
extern LINKAGE LinkageMergePop( void );
extern int  LinkageDeclaration( void );
extern void LinkageSet( SYMBOL, char * );
extern boolean LinkageIsCpp( SYMBOL );
extern boolean LinkageIsC( SYMBOL );
extern boolean LinkageIsCurr( SYMBOL );
extern boolean LinkageSpecified( void );

// defined in SCOPE.C

#if 0   /* hate globals! */
extern SCOPE CurrScope;
extern SCOPE FileScope;
extern SCOPE InternalScope;
#endif

extern SCOPE    GetCurrScope(void);
extern SCOPE    SetCurrScope(SCOPE);
extern SCOPE    GetFileScope(void);
extern SCOPE    SetFileScope(SCOPE);
extern SCOPE    GetInternalScope(void);
extern SCOPE    SetInternalScope(SCOPE);

extern SYMBOL ChipBugSym;
extern SYMBOL PCHDebugSym;
extern SYMBOL DFAbbrevSym;

extern boolean ScopeAccessType( scope_type_t );
extern boolean ScopeType( SCOPE, scope_type_t );
extern boolean ScopeEquivalent( SCOPE, scope_type_t );
#define ScopeId( s )    ((s)->id)
#define ScopeEnclosedInUnnamedNameSpace( s )    ((s)->in_unnamed)

typedef enum {
    FVS_VIRTUAL_ABOVE   = 0x01, // sym[0] will be set
    FVS_USE_INDEX       = 0x02, // sym[0] will be set
    FVS_RETURN_THUNK    = 0x04, // sym[0] will be set
    FVS_NAME_SAME_TABLE = 0x08, // sym[1] will be set
    FVS_NULL            = 0x00
} find_virtual_status;
extern find_virtual_status ScopeFindVirtual( SCOPE, SYMBOL [2], char * );

extern void ScopeAddUsing( SCOPE, SCOPE );
extern SCOPE ScopeIsGlobalNameSpace( SCOPE );
extern SCOPE ScopeIsUnnamedNameSpace( SCOPE );
extern void ScopeBeginFunction( SYMBOL );
extern void ScopeBeginBlock( unsigned );
extern SCOPE ScopeBegin( scope_type_t );
extern SCOPE ScopeEnd( scope_type_t );
extern void ScopeEndFileScope( void );
extern SCOPE ScopeCreate( scope_type_t );
extern void ScopeOpen( SCOPE );
extern void ScopeRestoreUsing( SCOPE );
extern void ScopeEstablish( SCOPE );
extern SCOPE ScopeOpenNameSpace( char *, SYMBOL );
extern SCOPE ScopeSetEnclosing( SCOPE, SCOPE );
extern SCOPE ScopeEstablishEnclosing( SCOPE, SCOPE );
extern void ScopeSetClassOwner( SCOPE, TYPE );
extern SCOPE ScopeSetContaining( SYMBOL_NAME, SCOPE );
extern SCOPE ScopeClose( void );
extern void ScopeCreatePCHDebugSym( void );
extern target_offset_t ScopeVBPtrOffset( SCOPE );
extern boolean ScopeHasVirtualBases( SCOPE );
extern boolean ScopeHasVirtualFunctions( SCOPE );
extern void ScopeJumpForward( SCOPE );
extern void ScopeJumpBackward( SCOPE );
extern BASE_CLASS *ScopeFindVFPtrInVBase( TYPE );
extern TYPE ScopeFindBoundBase( TYPE, TYPE );
extern boolean ScopeHasPureFunctions( SCOPE );
extern void ScopeNotePureFunctions( TYPE );
extern SYMBOL ScopePureVirtualThunk( THUNK_ACTION * );
extern SYMBOL ScopeAlreadyExists( SCOPE, char * );
extern SYMBOL_NAME ScopeYYLexical( SCOPE, char * );
extern SYMBOL_NAME ScopeYYMember( SCOPE, char * );
extern SEARCH_RESULT *ScopeFindSymbol( SYMBOL );
extern SEARCH_RESULT *ScopeFindLexicalNameSpace( SCOPE, char * );
extern SEARCH_RESULT *ScopeFindLexicalColonColon( SCOPE, char * );
extern SEARCH_RESULT *ScopeFindMemberColonColon( SCOPE, char * );
extern SEARCH_RESULT *ScopeFindBaseMember( SCOPE, char * );
extern SEARCH_RESULT *ScopeFindLexicalClassType( SCOPE, char * );
extern SEARCH_RESULT *ScopeFindLexicalEnumType( SCOPE, char * );
extern SEARCH_RESULT *ScopeFindNakedFriend( SCOPE, char * );
extern SEARCH_RESULT *ScopeFindNaked( SCOPE, char * );
extern SEARCH_RESULT *ScopeContainsNaked( SCOPE, char * );
extern SEARCH_RESULT *ScopeFindScopedNaked( SCOPE, SCOPE, char * );
extern SEARCH_RESULT *ScopeFindMember( SCOPE, char * );
extern SEARCH_RESULT *ScopeFindScopedMember( SCOPE, SCOPE, char * );
extern SEARCH_RESULT *ScopeFindScopedMemberConversion( SCOPE, SCOPE, TYPE, type_flag );
extern SEARCH_RESULT *ScopeFindNakedConversion( SCOPE, TYPE, type_flag );
extern SEARCH_RESULT *ScopeFindScopedNakedConversion( SCOPE, SCOPE, TYPE, type_flag );
extern FNOV_LIST *ScopeConversionList( SCOPE, type_flag, TYPE );
extern SEARCH_RESULT *ScopeContainsMember( SCOPE, char * );
extern boolean ScopeImmediateCheck( SEARCH_RESULT * );
extern boolean ScopeAmbiguousSymbol( SEARCH_RESULT *, SYMBOL );
extern boolean ScopeCheckSymbol( SEARCH_RESULT *, SYMBOL );
extern void ScopeDontCheckSymbol( SEARCH_RESULT * );
extern void ScopeFreeResult( SEARCH_RESULT * );
extern SEARCH_RESULT *ScopeDupResult( SEARCH_RESULT * );
extern boolean ScopeEnclosed( SCOPE, SCOPE );
extern void ScopeKeep( SCOPE );
extern void ScopeArgumentCheck( SCOPE );
extern void ScopeQualifyPush( SCOPE, SCOPE );
extern SCOPE ScopeQualifyPop( void );
extern SYMBOL ScopeOrderedStart( SCOPE );
extern SYMBOL ScopeOrderedNext( SYMBOL, SYMBOL );
extern SYMBOL ScopeOrderedFirst( SCOPE );
extern SYMBOL ScopeOrderedLast( SCOPE );
extern SCOPE ScopeEnclosingId( SCOPE, scope_type_t );
extern SCOPE ScopeNearestNonClass( SCOPE );
extern SCOPE ScopeNearestFile( SCOPE );
extern SCOPE ScopeNearestFileOrClass( SCOPE );
extern SCOPE ScopeFunctionScopeInProgress( void );
extern SYMBOL ScopeFunctionScope( SCOPE );
extern void ScopeMemberModuleFunction( SCOPE, SCOPE );
extern void ScopeRestoreModuleFunction( SCOPE );
extern boolean ScopeLocalClass( SCOPE );
extern SCOPE ScopeHostClass( SCOPE );
extern BASE_CLASS *ScopeFindVBase( SCOPE, TYPE );
extern void ScopeMemberPtrCastAction( MEMBER_PTR_CAST * );
extern void ScopeEmitIndexMappings( void );
extern void ScopeClear( SCOPE );
extern boolean ScopeDebugable( SCOPE );
extern void ScopeSetParmClass( SCOPE, TEMPLATE_INFO * );
extern void ScopeSetParmFn( SCOPE, FN_TEMPLATE_DEFN * );
extern void ScopeSetParmCopy( SCOPE, SCOPE );

typedef enum {
    SCV_CTOR        = 0x01,     // collect will be used for ctor code
    SCV_NO_DIAGNOSE = 0x02,     // diagnostic msgs are not allowed
    SCV_NULL        = 0x00
} scv_control;

extern CLASS_VBTABLE *ScopeCollectVBTable( SCOPE, scv_control );
extern CLASS_VFTABLE *ScopeCollectVFTable( SCOPE, scv_control );

/* front-end #pragma support */
extern SYMBOL ScopeASMUseSymbol( char *, boolean * );
extern void ScopeASMUsesAuto( void );
extern SYMBOL ScopeASMLookup( char * );
extern SYMBOL ScopeIntrinsic( boolean );
extern void ScopeAuxName( char *, AUX_INFO * );

extern SYMBOL ScopeInsert( SCOPE, SYMBOL, char * );
extern boolean ScopeCarefulInsert( SCOPE, SYMBOL *, char * );
extern SYMBOL ScopePromoteSymbol( SCOPE, SYMBOL, char * );
extern void ScopeInsertErrorSym( SCOPE, PTREE );
extern void ScopeRawAddFriend( CLASSINFO *, SYMBOL );
extern void ScopeAddFriend( SCOPE, SYMBOL );
extern SYMBOL AllocSymbol( void );
extern SYMBOL AllocTypedSymbol( TYPE );
extern SYMBOL_NAME AllocSymbolName( char *, SCOPE );
boolean EnumTypeName( SYMBOL_NAME sym_name );
boolean ClassTypeName( SYMBOL_NAME sym_name );
extern void FreeSymbol( SYMBOL );
extern void FreeSymbolName( SYMBOL_NAME );
extern void ScopeBurn( SCOPE );
extern void ScopeMarkVisibleAutosInMem( void );
extern void ScopeWalkNames( SCOPE, void (*)( SYMBOL_NAME ) );
extern void ScopeWalkSymbols( SCOPE, void (*)( SYMBOL ) );
extern void ScopeWalkOrderedSymbols( SCOPE, void (*)( SYMBOL ) );
extern void ScopeWalkDataMembers( SCOPE, void (*)(SYMBOL,void*), void* );
extern void ScopeWalkAllNameSpaces( void (*)(NAME_SPACE*,void*), void* );
extern unsigned ScopeRttiClasses( TYPE );
extern unsigned ScopeRttiLeaps( TYPE, GEN_LEAP ** );
extern void ScopeRttiFreeLeaps( GEN_LEAP * );
extern derived_status ScopeDerivedCount( SCOPE, SCOPE, unsigned * );
extern derived_status ScopeDerived( SCOPE, SCOPE );
extern SCOPE ScopeCommonBase( SCOPE, SCOPE );
extern target_offset_t ScopeBaseDelta( SCOPE , SCOPE );
extern SEARCH_RESULT *ScopeBaseResult( SCOPE , SCOPE );
extern SEARCH_RESULT *ScopeResultFromBase( TYPE, BASE_CLASS * );
extern BASE_CLASS *ScopeInherits( SCOPE );
extern FRIEND *ScopeFriends( SCOPE );
extern boolean ScopeDirectBase( SCOPE, TYPE );
extern boolean ScopeIndirectVBase( SCOPE, TYPE );
extern char *ScopeUnnamedNamespaceName( TOKEN_LOCN * );
extern char *ScopeNameSpaceName( SCOPE );
extern char *ScopeNameSpaceFormatName( SCOPE );
extern TYPE ScopeClass( SCOPE );
extern SYMBOL ScopeFunction( SCOPE );
extern unsigned ScopeIndex( SCOPE );
extern boolean VariableName( SYMBOL_NAME );
extern SYMBOL ScopeFunctionInProgress( void );
extern SCOPE ScopeForTemps( void );
extern SYMBOL ScopeFuncParm( unsigned );
extern void ScopeResultErrLocn( SEARCH_RESULT*, TOKEN_LOCN* );
extern boolean ScopeSameVFuns( SYMBOL, SYMBOL );

SYMBOL ScopeFindExactVfun(      // FIND EXACT VIRTUAL FUNCTION IN DERIVED CLASS
    SYMBOL vfun,                // - virtual fun in a base class
    SCOPE scope,                // - scope for derived class
    target_offset_t* a_adj_this,// - adjustment for this
    target_offset_t* a_adj_retn)// - adjustment for return
;

void ScopeWalkAncestry(         // VISIT ONCE ALL CLASSES IN ANCESTRY
    SCOPE scope,                // - class scope
    void (*rtn)(                // - walker routine
        SCOPE,                  // -- base class scope
        void * ),               // -- user data
    void *data )                // - user supplied data
;

void ScopeWalkDirectBases(          // WALK DIRECT BASES
    SCOPE scope,                    // - scope
    void (*rtn)(BASE_CLASS*,void*), // - routine
    void *data )                   // - data to be passed
;

void ScopeWalkVirtualBases(         // WALK VIRTUAL BASES
    SCOPE scope,                    // - scope
    void (*rtn)(BASE_CLASS*,void*), // - routine
    void *data )                    // - data to be passed
;

// defined in TYPE.C

extern TYPE TypeError;

extern type_flag BaseTypeClassFlags( TYPE );
extern TYPE TypedefRemove( TYPE );
extern TYPE TypedefModifierRemove( TYPE );
TYPE TypedefModifierRemoveOnly( TYPE );
extern arg_list *TypeArgList( TYPE type );
extern boolean TypeCompareExclude( TYPE, TYPE, type_exclude );
extern boolean TypesSameExclude( TYPE, TYPE, type_exclude );
extern boolean TypesIdentical( TYPE, TYPE );
// extern boolean TypesSame( TYPE, TYPE );
extern SYMBOL MakeTypeidSym( TYPE );
extern SYMBOL MakeVATableSym( SCOPE );
extern SYMBOL MakeVBTableSym( SCOPE, unsigned, target_offset_t );
extern SYMBOL MakeVFTableSym( SCOPE, unsigned, target_offset_t );
extern SYMBOL MakeVMTableSym( SCOPE, SCOPE, boolean * );

extern target_offset_t PackAlignment( target_offset_t, target_size_t );

extern boolean TypePartiallyDefined( TYPE );
extern boolean TypeDefined( TYPE );
extern boolean TypeAbstract( TYPE );
extern TYPE TypeNeedsCtor( TYPE );
extern boolean TypeIsCharString( TYPE );
extern boolean TypeIsClassInstantiation( TYPE );
extern boolean TypeIsConst( TYPE );
extern boolean TypeIsAnonymousEnum( TYPE );
extern boolean TypeHasEllipsisArg( TYPE );
extern boolean TypeHasNumArgs( TYPE, unsigned );
extern boolean TypeHasReverseArgs( TYPE );
extern boolean TypeVAStartWontWork( TYPE, int * );
extern TYPE DefaultIntType( TYPE );
extern TYPE CleanIntType( TYPE );
extern TYPE SegmentShortType( TYPE );
extern TYPE VoidType( TYPE );
extern TYPE ArrayType( TYPE );
extern TYPE ArithType( TYPE );
extern TYPE EnumType( TYPE );
extern TYPE BoolType( TYPE );
extern TYPE GenericType( TYPE );
extern TYPE BasedType( TYPE );
extern TYPE BasedPtrType( TYPE );
extern TYPE IntegralType( TYPE );
extern TYPE Integral64Type( TYPE );
extern TYPE FloatingType( TYPE );
extern TYPE MemberPtrType( TYPE );
extern TYPE MemberPtrClass( TYPE );
extern TYPE PointerType( TYPE );
extern TYPE PointerTypeEquivalent( TYPE );
extern TYPE AlignmentType( TYPE );
extern TYPE ArrayBaseType( TYPE type );
extern TYPE ArrayModifiedBaseType( TYPE type );
extern TYPE FunctionDeclarationType( TYPE );
extern type_flag FunctionThisFlags( SYMBOL );
extern type_flag 

⌨️ 快捷键说明

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