; AutoExp.Dat - templates for automaticially expanding data
; Copyright(c) 1997 Microsoft Corporation. All Rights Reserved.
;---------------------------------------------------------------
;
; While debugging, Data Tips and items in the Watch and Variable
; windows are automatically expanded to show their most important
; elements. The expansion follows the format given by the rules
; in this file. You can add rules for your types or change the
; predefined rules.
;
; For good examples, read the rules in this file.
;
; To find what the debugger considers the type of a variable to
; be, add it to the Watch window and right-click and select
; Properties.
;
; An AutoExpand rule is a line with the name of a type, an equals 
; sign, and text with replaceable parts in angle brackets. The 
; part in angle brackets names a member of the type and an 
; optional Watch format specifier.
;
; AutoExpand rules use the following syntax. The equals sign (=), 
; angle brackets (<>), and comma are taken literally. Square
; brackets ([]) indicate optional items.
;
; type=[text]<member[,format]>...
;
; type      Name of the type (may be followed by <*> for template
;           types such as the ATL types listed below).
;
; text      Any text.Usually the name of the member to display, 
;           or a shorthand name for the member.
;
; member    Name of a member to display.
;
; format    Watch format specifier. One of the following:
;
;   Letter  Description                 Sample         Display
;   ------  --------------------------  ------------   -------------
;   d,i     Signed decimal integer      0xF000F065,d   -268373915
;   u       Unsigned decimal integer    0x0065,u       101
;   o       Unsigned octal integer      0xF065,o       0170145
;   x,X     Hexadecimal integer         61541,X        0X0000F065
;   l,h     long or short prefix for    00406042,hx    0x0c22
;             d, i, u, o, x, X
;   f       Signed floating-point       3./2.,f        1.500000
;   e       Signed scientific-notation  3./2.,e        1.500000e+000
;   g       Shorter of e and f          3./2.,g        1.5
;   c       Single character            0x0065,c       'e'
;   s       Zero-terminated string      0x0012fde8,s   "Hello world"
;   su      Unicode string              0x007200c4,su  "Hello world"
;   st      String in ANSI or Unicode depending on current setting
;
; The special format <,t> specifies the name of the most-derived 
; type of the object. This is especially useful with pointers or
; references to a base class.
;
; If there is no rule for a class, the base classes are checked for
; a matching rule.
;
; -------
; Unicode
; -------
;
; If your application is built for Unicode, you'll want Unicode 
; strings to automatically expand as text, rather than arrays of 
; unsigned short.  To automatically display Unicode strings as 
; text, go to Tools/Options/Debug tab and check 'Display Unicode
; strings'.
;
;---------------------------------------------------------------
[AutoExpand]

; from windef.h
tagPOINT =x=<x> y=<y>
tagRECT =top=<top> bottom=<bottom> left=<left> right=<right>

; from winuser.h
tagMSG =msg=<message,x> wp=<wParam,x> lp=<lParam,x>

; from afxwin.h
CDC =hDC=<m_hDC> attrib=<m_hAttribDC>
CPaintDC =<,t> hWnd=<m_hWnd>
CPoint =x=<x> y=<y>
CRect =top=<top> bottom=<bottom> left=<left> right=<right>
CSize =cx=<cx> cy=<cy>
CWnd =<,t> hWnd=<m_hWnd>
CWinApp =<,t> <m_pszAppName,s>
CWinThread =<,t> h=<m_hThread> proc=<m_pfnThreadProc>

; from afxcoll.h
CPtrList =cnt=<m_nCount>

; from afxstat_.h
CProcessLocalObject =<,t>
CThreadLocalObject =<,t>

; from afx.h
CArchiveException =cause=<m_cause>
CFile =hFile=<m_hFile> name=<m_strFileName.m_pchData,s>
CFileException =cause=<m_cause> OS Error=m_lOsError
CMemFile =pos=<m_nPosition> size=<m_nFileSize>
CObject =<,t>
CRuntimeClass =<m_lpszClassName,s>
CStdioFile =FILE*=<m_pStream> name=<m_strFilename.m_pchData,s>
CString =<m_pchData,st>
CTimeSpan =time=<m_time>
CTime =time=<m_time>

; from afxcoll.h
CByteArray =count=<m_nCount>
CStringList =count=<m_nCount>
; same for all CXXXArray classes
; same for CXXXList
; same for CMapXXToXX

; new for VC98
_com_error=<m_hresult,hr>
_bstr_t=<m_Data->m_wstr,su> (<m_Data->m_RefCount,u>)
_com_ptr_t<*>=<m_pInterface>
_LARGE_INTEGER=<QuadPart>
ATL::CComPtr<*>=<p>
ATL::CComBSTR=<m_str,su>
ATL::CComQIPtr<*>=<p>
std::basic_string<*>=<_Ptr>

; new for VC98 using built-ins
tagVARIANT=$BUILTIN(VARIANT)
VARIANT=$BUILTIN(VARIANT)
_GUID=$BUILTIN(GUID)

Vector =x=<x> y=<y> z=<z>
Vector2D =x=<x> y=<y>
Vector4D =x=<x> y=<y> z=<z> w=<w>
VString =str=<m_pStr>
CVertIndex =x=<x> y=<y>
CNodeVert =x=<x> y=<y>
dat =name=<name> size=<size>
QAngle = <x> <y> <z>
CUtlVector<*> =count=<m_Size,d>
cplane_t = <normal.x> <normal.y> <normal.z>, <dist>
RadianEuler=degrees=<x*57.29578> <y*57.29578> <z*57.29578>
IVP_U_Float_Point = <k[0]> <k[1]> <k[2]> <hesse_val>
IVP_U_Point = <k[0]> <k[1]> <k[2]> <hesse_val>
IVP_U_Matrix3 = [<rows[0].k[0]> <rows[0].k[1]> <rows[0].k[2]>] [<rows[1].k[0]> <rows[1].k[1]> <rows[1].k[2]>] [<rows[2].k[0]> <rows[2].k[1]> <rows[2].k[2]>]
IVP_Object <name>
CBaseTrace = FRACTION <fraction>, START <startpos.x> <startpos.y> <startpos.z>, END <endpos.x> <endpos.y> <endpos.z>

CCoreDispInfo =power=<m_Power>

SendProp =<m_pVarName,s>
RecvProp =<m_pVarName,s>

RecvTable =<m_pNetTableName,s>
SendTable =<m_pNetTableName,s>

CBaseHandle =index=<GetEntryIndex()> serial=<GetSerialNumber()>

CNetworkHandleBase<*> =<m_Value>
CNetworkVectorBase<*> =x=<m_Value.x> y=<m_Value.y> z=<m_Value.z>
CNetworkColor32Base<*> =<m_Value>
CNetworkVarBase<*> =<m_Value>


[ExecutionControl]

CUtlVector<*>::Base=NoStepInto
CUtlVector<*>::Count=NoStepInto
Vector::*=NoStepInto
QAngle::*=NoStepInto

MSG_GetReadBuf=NoStepInto

SendProp::*=NoStepInto
RecvProp::*=NoStepInto

bf_write::GetBasePointer=NoStepInto
bf_write::IsOverflowed=NoStepInto
bf_write::GetNumBytesWritten=NoStepInto
bf_write::GetNumBitsWritten=NoStepInto
bf_write::GetMaxNumBits=NoStepInto
bf_write::GetNumBitsLeft=NoStepInto
bf_write::GetNumBytesLeft=NoStepInto
bf_write::GetData=NoStepInto

bf_read::GetBasePointer=NoStepInto
bf_read::ReadOneBit=NoStepInto
bf_read::ReadBitAngle=NoStepInto
bf_read::ReadUBitLong=NoStepInto
bf_read::PeekUBitLong=NoStepInto
bf_read::ReadSBitLong=NoStepInto
bf_read::ReadBitLong=NoStepInto
bf_read::ReadBitCoord=NoStepInto
bf_read::ReadBitFloat=NoStepInto
bf_read::ReadBitNormal=NoStepInto
bf_read::ReadBitVec3Coord=NoStepInto
bf_read::ReadBitAngles=NoStepInto
bf_read::ReadBitVec3Coord=NoStepInto
bf_read::ReadChar=NoStepInto
bf_read::ReadByte=NoStepInto
bf_read::ReadShort=NoStepInto
bf_read::ReadWord=NoStepInto
bf_read::ReadLong=NoStepInto
bf_read::ReadFloat=NoStepInto
bf_read::ReadString=NoStepInto
bf_read::GetNumBytesRead=NoStepInto
bf_read::GetNumBitsLeft=NoStepInto
bf_read::GetNumBitsRead=NoStepInto
bf_read::IsOverflowed=NoStepInto
bf_read::GetNumBitsLeft=NoStepInto
bf_read::GetNumBitsLeft=NoStepInto
bf_read::GetNumBitsLeft=NoStepInto
bf_read::GetNumBitsLeft=NoStepInto
bf_read::GetNumBitsLeft=NoStepInto
bf_read::GetNumBitsLeft=NoStepInto
bf_read::GetNumBitsLeft=NoStepInto
bf_read::GetNumBitsLeft=NoStepInto

PackedEntity::SetNumBits=NoStepInto
PackedEntity::GetNumBits=NoStepInto
PackedEntity::GetNumBytes=NoStepInto
PackedEntity::LockData=NoStepInto
PackedEntity::UnlockData=NoStepInto
PackedEntity::FreeData=NoStepInto
PackedEntity::SetChangeFrameList=NoStepInto
PackedEntity::SnagChangeFrameList=NoStepInto

CDatatableStack::IsCurProxyValid=NoStepInto
CDatatableStack::GetCurPropIndex=NoStepInto
CDatatableStack::GetCurStructBase=NoStepInto