ppintnam.h

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

H
131
字号
/****************************************************************************
*
*                            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!
*
****************************************************************************/


// PPINTNAME -- C++ Internal names
//
// 91/07/01 -- J.W.Welch        -- defined
// 91/10/25 -- J.W.Welch        -- move internal function names to PPOPSDEF.H
// 93/01/18 -- Greg Bentz       -- revamp to match mangle.y grammar

// DELIMITERS

#define IN_TRUNCATE     'T'     // start of truncated name
#define IN_MANGLE       "W?"    // entire start of a mangled name
#define IN_MANGLE1      "W"     // start of a mangled name
#define IN_MANGLE2      "?"     // start of a mangled name
#define IN_NAME_PREFIX  "$"     // start of a name
#define CHR_NAME_PREFIX '$'     // start of a name
#define IN_NAME_SUFFIX  "$"     // end of a name
#define IN_OP_PREFIX    ".@"    // indicates a operator-function name (rest is mangled)
#define IN_ANON_ENUM    "TE"    // indicates anonymous enum
#define IN_SYM_WATCOM   "W"     // indicates internal symbol mangled name
#define CHR_SYM_WATCOM  'W'     // indicates internal symbol mangled name
#define IN_VATABLE_NAME "va"    // a virtual function RTTI adjustor table
#define IN_VBTABLE_NAME "vb"    // a virtual base offset table
#define IN_VFTABLE_NAME "vf"    // a virtual function destination table
#define IN_VMTABLE_NAME "vm"    // a virtual base mapping table
#define IN_VFTHUNK_NAME "vt"    // a virtual function thunk
#define IN_TYPEID_NAME  "ti"    // a typeid descriptor
#define IN_CLASS_DELIM  ':'     // class delimiter
#define IN_THIS_QUAL    '.'     // this qualifier delimiter (if required)
#define IN_NO_TYPE      '_'     // this qualifier delimiter (if required)
#define IN_NAME_MEMPTR_FUNC "mp" // prefix for memb-ptr function names
#define IN_NAME_STATIC_INIT "si" // prefix for static init
#define IN_NAME_STATIC_ONCE "bi00" // prefix for static once only
#define IN_NAME_ARRAY_DTOR "da" // prefix for array DTOR
#define IN_NAME_TYPE_SIG "ts"   // type signature
#define IN_NAME_TYPE_STAB "st"  // state table for object
#define IN_NAME_STAB_CMD "cm"   // prefix for COMDAT'ed command codes
#define IN_NAME_THROW_RO "th"   // prefix for throw R/O block
#define IN_NAME_DTOR_OBJ "do"   // prefix for object DTOR R/O block
#define IN_NAME_DEBUG_INFO "di" // prefix for common debug info
#define IN_NAME_UNNAMED "un"    // prefix for unnamed namespace
#define IN_TYPE_SIG_ELLIPSIS "[...]" // type name for "..."
#define IN_VIRT_SHADOW ".vs"    // conc'ed to original name of virt. func.

#define IN_TEMPARG_INT  '0'             // integer template arg
#define IN_TEMPARG_POSITIVE_INT 'z'     // positive int template arg
#define IN_TEMPARG_NEGATIVE_INT 'y'     // positive int template arg
                                        // 0-9 a-t encode the number in base-32
#define IN_TEMPARG_TYPE         '1'     // template type argument

// basic types:
// 'k', 'o' are still available

#define IN_UNSIGNED     'u'
#define IN_BOOL         'q'
#define IN_CHAR         'a'
#define IN_SCHAR        'c'
#define IN_UCHAR        'c'     // add 'u' prefix
#define IN_WCHAR        'w'
#define IN_SSHORT       's'
#define IN_USHORT       's'     // add 'u' prefix
#define IN_SINT         'i'
#define IN_UINT         'i'     // add 'u' prefix
#define IN_SLONG        'l'
#define IN_ULONG        'l'     // add 'u' prefix
#define IN_SLONG64      'z'
#define IN_ULONG64      'z'     // add 'u' prefix
#define IN_FLOAT        'b'
#define IN_DOUBLE       'd'
#define IN_LONG_DOUBLE  't'
#define IN_POINTER      'p'
#define IN_FUNCTION     '('     // consider oo (o-open)
#define IN_FUNCTION_END ')'     // consider oc (o-close)
#define IN_ARRAY        '['     // consider ol (o-left)
#define IN_ARRAY_END    ']'     // consider or (o-right)
#define IN_DOT_DOT_DOT  'e'
#define IN_VOID         'v'


// modifiers:

#define IN_FAR          'f'
#define IN_FAR16        'g'
#define IN_HUGE         'h'
#define IN_NEAR         'n'
#define IN_VOLATILE     'y'
#define IN_CONST        'x'
#define IN_BASED        'j'

#define IN_BASED_SELF   's'
#define IN_BASED_VOID   'v'
#define IN_BASED_STRING 'l'
#define IN_BASED_ADD    'a'
#define IN_BASED_FETCH  'f'


// declarators:

#define IN_REFER        'r'
#define IN_MEMBER       'm'

⌨️ 快捷键说明

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