Platformer in OpenGL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3896 lines
126 KiB

преди 5 години
  1. ; AutoExp.Dat - templates for automatically expanding data
  2. ; Copyright(c) Microsoft Corporation. All Rights Reserved.
  3. ;---------------------------------------------------------------
  4. ;
  5. ; While debugging, Data Tips and items in the Watch and Variable
  6. ; windows are automatically expanded to show their most important
  7. ; elements. The expansion follows the format given by the rules
  8. ; in this file. You can add rules for your types or change the
  9. ; predefined rules.
  10. ;
  11. ; For good examples, read the rules in this file.
  12. ;
  13. ; To find what the debugger considers the type of a variable to
  14. ; be, add it to the Watch window and look at the Type column.
  15. ;
  16. ; An AutoExpand rule is a line with the name of a type, an equals
  17. ; sign, and text with replaceable parts in angle brackets. The
  18. ; part in angle brackets names a member of the type and an
  19. ; optional Watch format specifier.
  20. ;
  21. ; AutoExpand rules use the following syntax. The equals sign (=),
  22. ; angle brackets (<>), and comma are taken literally. Square
  23. ; brackets ([]) indicate optional items.
  24. ;
  25. ; type=[text]<member[,format]>...
  26. ;
  27. ; type Name of the type (may be followed by <*> for template
  28. ; types such as the ATL types listed below).
  29. ;
  30. ; text Any text.Usually the name of the member to display,
  31. ; or a shorthand name for the member.
  32. ;
  33. ; member Name of a member to display.
  34. ;
  35. ; format Watch format specifier. One of the following:
  36. ;
  37. ; Letter Description Sample Display
  38. ; ------ -------------------------- ------------ -------------
  39. ; d,i Signed decimal integer 0xF000F065,d -268373915
  40. ; u Unsigned decimal integer 0x0065,u 101
  41. ; o Unsigned octal integer 0xF065,o 0170145
  42. ; x,X Hexadecimal integer 61541,X 0X0000F065
  43. ; l,h long or short prefix for 00406042,hx 0x0c22
  44. ; d, i, u, o, x, X
  45. ; f Signed floating-point 3./2.,f 1.500000
  46. ; e Signed scientific-notation 3./2.,e 1.500000e+000
  47. ; g Shorter of e and f 3./2.,g 1.5
  48. ; c Single character 0x0065,c 'e'
  49. ; s Zero-terminated string pVar,s "Hello world"
  50. ; su Unicode string pVar,su "Hello world"
  51. ;
  52. ; For details of other format specifiers see Help under:
  53. ; "format specifiers/watch variable"
  54. ;
  55. ; The special format <,t> specifies the name of the most-derived
  56. ; type of the object. This is especially useful with pointers or
  57. ; references to a base class.
  58. ;
  59. ; If there is no rule for a class, the base classes are checked for
  60. ; a matching rule.
  61. ;
  62. ; There are some special entries allowed in the AutoExpand section:
  63. ; $BUILTIN is used to display more complex types that need to do more
  64. ; than just show a member variable or two.
  65. ; $ADDIN allows external DLLs to be added to display even more complex
  66. ; types via the EE Add-in API. The first argument is the DLL name, the
  67. ; second argument is the name of the export from the DLL to use. For
  68. ; further information on this API see the sample called EEAddIn.
  69. ;
  70. ; WARNING: if hexadecimal mode is on in the watch window, all numbers here are
  71. ; evaluated in hex, e.g. 42 becomes 0x42
  72. [AutoExpand]
  73. ; from windef.h
  74. tagPOINT =x=<x> y=<y>
  75. tagRECT =top=<top> bottom=<bottom> left=<left> right=<right>
  76. ; from winuser.h
  77. tagMSG =msg=<message,x> wp=<wParam,x> lp=<lParam,x>
  78. ; intrinsics
  79. __m64 =<m64_i64,x>
  80. __m128=$BUILTIN(M128)
  81. __m128i=$BUILTIN(M128I)
  82. __m128d=$BUILTIN(M128D)
  83. ; from afxwin.h
  84. CDC =hDC=<m_hDC> attrib=<m_hAttribDC>
  85. CPaintDC =<,t> hWnd=<m_hWnd>
  86. CPoint =x=<x> y=<y>
  87. CRect =top=<top> bottom=<bottom> left=<left> right=<right>
  88. CSize =cx=<cx> cy=<cy>
  89. CWnd =<,t> hWnd=<m_hWnd>
  90. CWinApp =<,t> <m_pszAppName,s>
  91. CWinThread =<,t> h=<m_hThread> proc=<m_pfnThreadProc>
  92. ; from afxcoll.h
  93. CPtrList =cnt=<m_nCount>
  94. ; from afxstat_.h
  95. CProcessLocalObject =<,t>
  96. CThreadLocalObject =<,t>
  97. ; from afx.h
  98. CArchiveException =cause=<m_cause>
  99. CFile =hFile=<m_hFile> name=<m_strFileName.m_pchData,s>
  100. CFileException =cause=<m_cause> OS Error=m_lOsError
  101. CMemFile =pos=<m_nPosition> size=<m_nFileSize>
  102. CObject =<,t>
  103. CRuntimeClass =<m_lpszClassName,s>
  104. CStdioFile =FILE*=<m_pStream> name=<m_strFilename.m_pchData,s>
  105. CTimeSpan =time=<m_time>
  106. CTime =time=<m_time>
  107. ; from afxcoll.h
  108. CByteArray =count=<m_nCount>
  109. CStringList =count=<m_nCount>
  110. ; same for all CXXXArray classes
  111. ; same for CXXXList
  112. ; same for CMapXXToXX
  113. ; various string classes from MFC & ATL
  114. _com_error=<m_hresult,hr>
  115. _bstr_t=<m_Data->m_wstr,su> (<m_Data->m_RefCount,u>)
  116. _com_ptr_t<*>=<m_pInterface>
  117. _LARGE_INTEGER=<QuadPart>
  118. _ULARGE_INTEGER=<QuadPart>
  119. ATL::CComPtr<*>=<p>
  120. ATL::CComQIPtr<*>=<p>
  121. tagVARIANT=$BUILTIN(VARIANT)
  122. VARIANT=$BUILTIN(VARIANT)
  123. _GUID=$BUILTIN(GUID)
  124. ; see EEAddIn sample for how to use these
  125. ;_SYSTEMTIME=$ADDIN(EEAddIn.dll,AddIn_SystemTime)
  126. ;_FILETIME=$ADDIN(EEAddIn.dll,AddIn_FileTime)
  127. [Visualizer]
  128. ; This section contains visualizers for STL and ATL containers
  129. ; DO NOT MODIFY
  130. ATL::CStringT<char,*>|CSimpleStringT<char,*>|ATL::CSimpleStringT<char,*>{
  131. preview ([$e.m_pszData,s])
  132. stringview ([$e.m_pszData,sb])
  133. }
  134. ATL::CStringT<wchar_t,*>|CSimpleStringT<wchar_t,*>|ATL::CSimpleStringT<wchar_t,*>|ATL::CStringT<unsigned short,*>|CSimpleStringT<unsigned short,*>|ATL::CSimpleStringT<unsigned short,*>{
  135. preview ([$e.m_pszData,su])
  136. stringview ([$e.m_pszData,sub])
  137. }
  138. ATL::CComBSTR{
  139. preview ([$e.m_str,su])
  140. stringview ([$e.m_str,sub])
  141. }
  142. ; Many visualizers use nested #()s.
  143. ; Why not use #(foo, bar) instead of #(#(foo), #(bar))?
  144. ; The former alphabetically sorts its fields, while the latter does not.
  145. ;------------------------------------------------------------------------------
  146. ; std::pair from <utility>
  147. ;------------------------------------------------------------------------------
  148. std::pair<*>{
  149. ; pair is previewed with "(<first>, <second>)".
  150. preview (
  151. #(
  152. "(",
  153. $e.first,
  154. ", ",
  155. $e.second,
  156. ")"
  157. )
  158. )
  159. ; We gloss over the fact that first and second are actually stored in _Pair_base.
  160. children (
  161. #(
  162. #(first : $e.first),
  163. #(second : $e.second)
  164. )
  165. )
  166. }
  167. ;------------------------------------------------------------------------------
  168. ; std::plus, etc. from <functional>
  169. ;------------------------------------------------------------------------------
  170. ; STL functors are previewed with their names.
  171. ; They have no state, so they have no children.
  172. std::plus<*>{
  173. preview ( "plus" )
  174. children ( #array(expr: 0, size: 0) )
  175. }
  176. std::minus<*>{
  177. preview ( "minus" )
  178. children ( #array(expr: 0, size: 0) )
  179. }
  180. std::multiplies<*>{
  181. preview ( "multiplies" )
  182. children ( #array(expr: 0, size: 0) )
  183. }
  184. std::divides<*>{
  185. preview ( "divides" )
  186. children ( #array(expr: 0, size: 0) )
  187. }
  188. std::modulus<*>{
  189. preview ( "modulus" )
  190. children ( #array(expr: 0, size: 0) )
  191. }
  192. std::negate<*>{
  193. preview ( "negate" )
  194. children ( #array(expr: 0, size: 0) )
  195. }
  196. std::equal_to<*>{
  197. preview ( "equal_to" )
  198. children ( #array(expr: 0, size: 0) )
  199. }
  200. std::not_equal_to<*>{
  201. preview ( "not_equal_to" )
  202. children ( #array(expr: 0, size: 0) )
  203. }
  204. std::greater<*>{
  205. preview ( "greater" )
  206. children ( #array(expr: 0, size: 0) )
  207. }
  208. std::less<*>{
  209. preview ( "less" )
  210. children ( #array(expr: 0, size: 0) )
  211. }
  212. std::greater_equal<*>{
  213. preview ( "greater_equal" )
  214. children ( #array(expr: 0, size: 0) )
  215. }
  216. std::less_equal<*>{
  217. preview ( "less_equal" )
  218. children ( #array(expr: 0, size: 0) )
  219. }
  220. std::logical_and<*>{
  221. preview ( "logical_and" )
  222. children ( #array(expr: 0, size: 0) )
  223. }
  224. std::logical_or<*>{
  225. preview ( "logical_or" )
  226. children ( #array(expr: 0, size: 0) )
  227. }
  228. std::logical_not<*>{
  229. preview ( "logical_not" )
  230. children ( #array(expr: 0, size: 0) )
  231. }
  232. ;------------------------------------------------------------------------------
  233. ; std::not1() from <functional>
  234. ; std::not2() from <functional>
  235. ;------------------------------------------------------------------------------
  236. ; STL negators are previewed with "not[12](<stored functor>)".
  237. ; They have a child with the fake name of [pred], so that the
  238. ; stored functor can be inspected.
  239. std::unary_negate<*>{
  240. preview (
  241. #(
  242. "not1(",
  243. $e._Functor,
  244. ")"
  245. )
  246. )
  247. children (
  248. #([pred] : $e._Functor)
  249. )
  250. }
  251. std::binary_negate<*>{
  252. preview (
  253. #(
  254. "not2(",
  255. $e._Functor,
  256. ")"
  257. )
  258. )
  259. children (
  260. #([pred] : $e._Functor)
  261. )
  262. }
  263. ;------------------------------------------------------------------------------
  264. ; std::bind1st() from <functional>
  265. ; std::bind2nd() from <functional>
  266. ;------------------------------------------------------------------------------
  267. ; STL binders are previewed with "bind1st(<op>, <value>)" or "bind2nd(<op>, <value>)".
  268. ; We gloss over the fact that they derive from unary_function.
  269. std::binder1st<*>{
  270. preview (
  271. #(
  272. "bind1st(",
  273. $e.op,
  274. ", ",
  275. $e.value,
  276. ")"
  277. )
  278. )
  279. children (
  280. #(
  281. #(op : $e.op),
  282. #(value : $e.value)
  283. )
  284. )
  285. }
  286. std::binder2nd<*>{
  287. preview (
  288. #(
  289. "bind2nd(",
  290. $e.op,
  291. ", ",
  292. $e.value,
  293. ")"
  294. )
  295. )
  296. children (
  297. #(
  298. #(op : $e.op),
  299. #(value : $e.value)
  300. )
  301. )
  302. }
  303. ;------------------------------------------------------------------------------
  304. ; std::ptr_fun() from <functional>
  305. ;------------------------------------------------------------------------------
  306. ; STL function pointer adaptors are previewed with "ptr_fun(<stored function pointer>)".
  307. ; Function pointers have no children, so the adaptors have no children.
  308. std::pointer_to_unary_function<*>|std::pointer_to_binary_function<*>{
  309. preview (
  310. #(
  311. "ptr_fun(",
  312. $e._Pfun,
  313. ")"
  314. )
  315. )
  316. children ( #array(expr: 0, size: 0) )
  317. }
  318. ;------------------------------------------------------------------------------
  319. ; std::mem_fun() from <functional>
  320. ; std::mem_fun_ref() from <functional>
  321. ;------------------------------------------------------------------------------
  322. ; See ptr_fun().
  323. std::mem_fun_t<*>|std::mem_fun1_t<*>|std::const_mem_fun_t<*>|std::const_mem_fun1_t<*>{
  324. preview (
  325. #(
  326. "mem_fun(",
  327. $e._Pmemfun,
  328. ")"
  329. )
  330. )
  331. children ( #array(expr: 0, size: 0) )
  332. }
  333. std::mem_fun_ref_t<*>|std::mem_fun1_ref_t<*>|std::const_mem_fun_ref_t<*>|std::const_mem_fun1_ref_t<*>{
  334. preview (
  335. #(
  336. "mem_fun_ref(",
  337. $e._Pmemfun,
  338. ")"
  339. )
  340. )
  341. children ( #array(expr: 0, size: 0) )
  342. }
  343. ;------------------------------------------------------------------------------
  344. ; std::auto_ptr from <memory>
  345. ;------------------------------------------------------------------------------
  346. std::auto_ptr<*>{
  347. ; An empty auto_ptr is previewed with "empty".
  348. ; Otherwise, it is previewed with "auto_ptr <object>".
  349. preview (
  350. #if ($e._Myptr == 0) (
  351. "empty"
  352. ) #else (
  353. #(
  354. "auto_ptr ",
  355. *$e._Myptr
  356. )
  357. )
  358. )
  359. ; An empty auto_ptr has no children.
  360. ; Otherwise, it has a single child, its stored pointer, with a fake name of [ptr].
  361. children (
  362. #if ($e._Myptr == 0) (
  363. #array(expr: 0, size: 0)
  364. ) #else (
  365. #([ptr] : $e._Myptr)
  366. )
  367. )
  368. }
  369. ;------------------------------------------------------------------------------
  370. ; std::basic_string from <string>
  371. ;------------------------------------------------------------------------------
  372. ; basic_string is previewed with its stored string.
  373. ; It has [size] and [capacity] children, followed by [0], [1], [2], etc. children
  374. ; displaying its stored characters.
  375. ; The ($e._Myres) < ($e._BUF_SIZE) test determines whether the Small String Optimization
  376. ; is in effect.
  377. ; NOTE: The parentheses in ($e._Myres) < ($e._BUF_SIZE) are necessary.
  378. std::basic_string<char,*>{
  379. preview ( #if (($e._Myres) < ($e._BUF_SIZE)) ( [$e._Bx._Buf,s] ) #else ( [$e._Bx._Ptr,s] ))
  380. stringview ( #if (($e._Myres) < ($e._BUF_SIZE)) ( [$e._Bx._Buf,sb] ) #else ( [$e._Bx._Ptr,sb] ))
  381. children (
  382. #(
  383. #([size] : $e._Mysize),
  384. #([capacity] : $e._Myres),
  385. #if (($e._Myres) < ($e._BUF_SIZE)) (
  386. #array(expr: $e._Bx._Buf[$i], size: $e._Mysize)
  387. ) #else (
  388. #array(expr: $e._Bx._Ptr[$i], size: $e._Mysize)
  389. )
  390. )
  391. )
  392. }
  393. std::basic_string<unsigned short,*>|std::basic_string<wchar_t,*>{
  394. preview ( #if (($e._Myres) < ($e._BUF_SIZE)) ( [$e._Bx._Buf,su] ) #else ( [$e._Bx._Ptr,su] ))
  395. stringview ( #if (($e._Myres) < ($e._BUF_SIZE)) ( [$e._Bx._Buf,sub] ) #else ( [$e._Bx._Ptr,sub] ))
  396. children (
  397. #(
  398. #([size] : $e._Mysize),
  399. #([capacity] : $e._Myres),
  400. #if (($e._Myres) < ($e._BUF_SIZE)) (
  401. #array(expr: $e._Bx._Buf[$i], size: $e._Mysize)
  402. ) #else (
  403. #array(expr: $e._Bx._Ptr[$i], size: $e._Mysize)
  404. )
  405. )
  406. )
  407. }
  408. std::_String_iterator<char,*>|std::_String_const_iterator<char,*>{
  409. preview ( [$e._Ptr,s] )
  410. stringview ( [$e._Ptr,sb] )
  411. children ( #([ptr] : $e._Ptr) )
  412. }
  413. std::_String_iterator<unsigned short,*>|std::_String_const_iterator<unsigned short,*>|std::_String_iterator<wchar_t,*>|std::_String_const_iterator<wchar_t,*>{
  414. preview ( [$e._Ptr,su] )
  415. stringview ( [$e._Ptr,sub] )
  416. children ( #([ptr] : $e._Ptr) )
  417. }
  418. ;------------------------------------------------------------------------------
  419. ; std::vector<bool> from <vector>
  420. ;------------------------------------------------------------------------------
  421. ; Despite its packed representation, vector<bool> is visualized like vector<T>.
  422. std::vector<bool,*>{
  423. preview (
  424. #(
  425. "[",
  426. $e._Mysize,
  427. "](",
  428. #array(
  429. expr: (bool)(($e._Myvec._Myfirst[$i / _VBITS] >> ($i % _VBITS)) & 1),
  430. size: $e._Mysize
  431. ),
  432. ")"
  433. )
  434. )
  435. children (
  436. #(
  437. #([size] : $e._Mysize),
  438. #([capacity] : ($e._Myvec._Myend - $e._Myvec._Myfirst) * _VBITS),
  439. #array(
  440. expr: (bool)(($e._Myvec._Myfirst[$i / _VBITS] >> ($i % _VBITS)) & 1),
  441. size: $e._Mysize
  442. )
  443. )
  444. )
  445. }
  446. std::_Vb_reference<*>|std::_Vb_iterator<*>|std::_Vb_const_iterator<*>{
  447. preview (
  448. (bool)((*$e._Myptr >> $e._Myoff) & 1)
  449. )
  450. children (
  451. #(
  452. #([ptr] : $e._Myptr),
  453. #([offset] : $e._Myoff)
  454. )
  455. )
  456. }
  457. ;------------------------------------------------------------------------------
  458. ; std::vector from <vector>
  459. ;------------------------------------------------------------------------------
  460. ; vector is previewed with "[<size>](<elements>)".
  461. ; It has [size] and [capacity] children, followed by its elements.
  462. ; The other containers follow its example.
  463. std::vector<*>{
  464. preview (
  465. #(
  466. "[",
  467. $e._Mylast - $e._Myfirst,
  468. "](",
  469. #array(
  470. expr: $e._Myfirst[$i],
  471. size: $e._Mylast - $e._Myfirst
  472. ),
  473. ")"
  474. )
  475. )
  476. children (
  477. #(
  478. #([size] : $e._Mylast - $e._Myfirst),
  479. #([capacity] : $e._Myend - $e._Myfirst),
  480. #array(
  481. expr: $e._Myfirst[$i],
  482. size: $e._Mylast - $e._Myfirst
  483. )
  484. )
  485. )
  486. }
  487. std::_Vector_iterator<*>|std::_Vector_const_iterator<*>{
  488. preview (
  489. *$e._Ptr
  490. )
  491. children (
  492. #([ptr] : $e._Ptr)
  493. )
  494. }
  495. ;------------------------------------------------------------------------------
  496. ; std::deque from <deque>
  497. ;------------------------------------------------------------------------------
  498. std::deque<*>{
  499. preview (
  500. #(
  501. "[",
  502. $e._Mysize,
  503. "](",
  504. #array(
  505. expr: $e._Map[(($i + $e._Myoff) / $e._EEN_DS) % $e._Mapsize][($i + $e._Myoff) % $e._EEN_DS],
  506. size: $e._Mysize
  507. ),
  508. ")"
  509. )
  510. )
  511. children (
  512. #(
  513. #array(
  514. expr: $e._Map[(($i + $e._Myoff) / $e._EEN_DS) % $e._Mapsize][($i + $e._Myoff) % $e._EEN_DS],
  515. size: $e._Mysize
  516. )
  517. )
  518. )
  519. }
  520. std::_Deque_iterator<*,*>|std::_Deque_const_iterator<*,*>{
  521. preview (
  522. #if ($e._Myoff >= ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_Myoff + ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_Mysize) (
  523. "end"
  524. ) #else (
  525. ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_Map[($e._Myoff / ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_EEN_DS) % ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_Mapsize][$e._Myoff % ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_EEN_DS]
  526. )
  527. )
  528. children (
  529. #if ($e._Myoff >= ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_Myoff + ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_Mysize) (
  530. #array(expr: 0, size: 0)
  531. ) #else (
  532. #(
  533. #([index] : $e._Myoff - ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_Myoff),
  534. #([ptr] : &((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_Map[($e._Myoff / ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_EEN_DS) % ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_Mapsize][$e._Myoff % ((std::deque<$T1,$T2> *)$e._Myproxy->_Mycont)->_EEN_DS] )
  535. )
  536. )
  537. )
  538. }
  539. ;------------------------------------------------------------------------------
  540. ; std::list from <list>
  541. ;------------------------------------------------------------------------------
  542. std::list<*>{
  543. preview (
  544. #(
  545. "[",
  546. $e._Mysize,
  547. "](",
  548. #list(
  549. head: $e._Myhead->_Next,
  550. size: $e._Mysize,
  551. next: _Next
  552. ) : $e._Myval,
  553. ")"
  554. )
  555. )
  556. children (
  557. #list(
  558. head: $e._Myhead->_Next,
  559. size: $e._Mysize,
  560. next: _Next
  561. ) : $e._Myval
  562. )
  563. }
  564. std::_List_iterator<*>|std::_List_const_iterator<*>{
  565. preview ( $e._Ptr->_Myval )
  566. children ( #([ptr] : &$e._Ptr->_Myval) )
  567. }
  568. ;------------------------------------------------------------------------------
  569. ; std::queue from <queue>
  570. ; std::stack from <stack>
  571. ;------------------------------------------------------------------------------
  572. std::queue<*>|std::stack<*>{
  573. preview ( $e.c )
  574. children ( #(c : $e.c) )
  575. }
  576. ;------------------------------------------------------------------------------
  577. ; std::priority_queue from <queue>
  578. ;------------------------------------------------------------------------------
  579. std::priority_queue<*>{
  580. preview ( $e.c )
  581. children (
  582. #(
  583. #(c [heap]: $e.c),
  584. #(comp : $e.comp)
  585. )
  586. )
  587. }
  588. ;------------------------------------------------------------------------------
  589. ; std::map from <map>
  590. ; std::multimap from <map>
  591. ; std::set from <set>
  592. ; std::multiset from <set>
  593. ;------------------------------------------------------------------------------
  594. std::map<*>|std::multimap<*>|std::set<*>|std::multiset<*>{
  595. preview (
  596. #(
  597. "[",
  598. $e._Mysize,
  599. "](",
  600. #tree(
  601. head: $e._Myhead->_Parent,
  602. skip: $e._Myhead,
  603. left: _Left,
  604. right: _Right,
  605. size: $e._Mysize
  606. ) : $e._Myval,
  607. ")"
  608. )
  609. )
  610. children (
  611. #(
  612. #([comp] : $e.comp),
  613. #tree(
  614. head: $e._Myhead->_Parent,
  615. skip: $e._Myhead,
  616. left: _Left,
  617. right: _Right,
  618. size: $e._Mysize
  619. ) : $e._Myval
  620. )
  621. )
  622. }
  623. std::_Tree_iterator<*>|std::_Tree_const_iterator<*>{
  624. preview ( $e._Ptr->_Myval )
  625. children ( #([ptr] : &$e._Ptr->_Myval) )
  626. }
  627. ;------------------------------------------------------------------------------
  628. ; std::bitset from <bitset>
  629. ;------------------------------------------------------------------------------
  630. std::bitset<*>{
  631. preview (
  632. #(
  633. "[",
  634. $e._EEN_BITS,
  635. "](",
  636. #array(
  637. expr: [($e._Array[$i / $e._Bitsperword] >> ($i % $e._Bitsperword)) & 1,d],
  638. size: $e._EEN_BITS
  639. ),
  640. ")"
  641. )
  642. )
  643. children (
  644. #array(
  645. expr: [($e._Array[$i / $e._Bitsperword] >> ($i % $e._Bitsperword)) & 1,d],
  646. size: $e._EEN_BITS
  647. )
  648. )
  649. }
  650. std::bitset<*>::reference{
  651. preview (
  652. [($e._Pbitset->_Array[$i / $e._Pbitset->_Bitsperword] >> ($e._Mypos % $e._Pbitset->_Bitsperword)) & 1,d]
  653. )
  654. children (
  655. #(
  656. #([bitset] : $e._Pbitset),
  657. #([pos] : $e._Mypos)
  658. )
  659. )
  660. }
  661. ;------------------------------------------------------------------------------
  662. ; std::reverse_iterator from <iterator>
  663. ;------------------------------------------------------------------------------
  664. std::reverse_iterator<std::_String_iterator<*> >|std::reverse_iterator<std::_String_const_iterator<*> >{
  665. preview (
  666. #(
  667. "reverse_iterator to ",
  668. $e.current._Ptr[-1]
  669. )
  670. )
  671. children (
  672. #(
  673. #([to] : $e.current._Ptr - 1),
  674. #(current : $e.current)
  675. )
  676. )
  677. }
  678. std::reverse_iterator<std::_Vb_iterator<*> >|std::reverse_iterator<std::_Vb_const_iterator<*> >{
  679. preview (
  680. #(
  681. "reverse_iterator to ",
  682. #if ($e.current._Myoff != 0) (
  683. (bool)((*$e.current._Myptr >> ($e.current._Myoff - 1)) & 1)
  684. ) #else (
  685. (bool)(($e.current._Myptr[-1] >> (_VBITS - 1)) & 1)
  686. )
  687. )
  688. )
  689. children (
  690. #if ($e.current._Myoff != 0) (
  691. #(
  692. #([to ptr] : $e.current._Myptr),
  693. #([to offset] : $e.current._Myoff - 1),
  694. #(current : $e.current)
  695. )
  696. ) #else (
  697. #(
  698. #([to ptr] : $e.current._Myptr - 1),
  699. #([to offset] : _VBITS - 1),
  700. #(current : $e.current)
  701. )
  702. )
  703. )
  704. }
  705. std::reverse_iterator<std::_Vector_iterator<*> >|std::reverse_iterator<std::_Vector_const_iterator<*> >{
  706. preview (
  707. #(
  708. "reverse_iterator to ",
  709. $e.current._Ptr[-1]
  710. )
  711. )
  712. children (
  713. #(
  714. #([to] : $e.current._Ptr - 1),
  715. #(current : $e.current)
  716. )
  717. )
  718. }
  719. std::reverse_iterator<std::_Deque_iterator<*,*> >|std::reverse_iterator<std::_Deque_const_iterator<*,*> >{
  720. preview (
  721. #(
  722. "reverse_iterator to ",
  723. #if ($e.current._Myoff == ((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_Myoff) (
  724. "end"
  725. ) #else (
  726. ((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_Map[(($e.current._Myoff - 1) / ((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_EEN_DS) % ((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_Mapsize][($e.current._Myoff - 1) % ((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_EEN_DS]
  727. )
  728. )
  729. )
  730. children (
  731. #if ($e.current._Myoff == ((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_Myoff) (
  732. #(current : $e.current)
  733. ) #else (
  734. #(
  735. #([to index] : ($e.current._Myoff - 1) - ((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_Myoff),
  736. #([to ptr] : &((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_Map[(($e.current._Myoff - 1) / ((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_EEN_DS) % ((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_Mapsize][($e.current._Myoff - 1) % ((std::deque<$T1,$T2> *)$e.current._Myproxy->_Mycont)->_EEN_DS] ),
  737. #(current : $e.current)
  738. )
  739. )
  740. )
  741. }
  742. std::reverse_iterator<std::_List_iterator<*> >|std::reverse_iterator<std::_List_const_iterator<*> >{
  743. preview (
  744. #(
  745. "reverse_iterator to ",
  746. $e.current._Ptr->_Prev->_Myval
  747. )
  748. )
  749. children (
  750. #(
  751. #([to] : &$e.current._Ptr->_Prev->_Myval),
  752. #(current : $e.current)
  753. )
  754. )
  755. }
  756. std::reverse_iterator<std::_Array_iterator<*> >|std::reverse_iterator<std::_Array_const_iterator<*> >{
  757. preview (
  758. #(
  759. "reverse_iterator to ",
  760. #if ($e.current._EEN_IDL == 0) (
  761. $e.current._Ptr[-1]
  762. ) #else (
  763. #if ($e.current._Idx == 0) (
  764. "end"
  765. ) #else (
  766. $e.current._Ptr[$e.current._Idx - 1]
  767. )
  768. )
  769. )
  770. )
  771. children (
  772. #if ($e.current._EEN_IDL == 0) (
  773. #(
  774. #([to] : $e.current._Ptr - 1),
  775. #(current : $e.current)
  776. )
  777. ) #else (
  778. #if ($e.current._Idx == 0) (
  779. #(current : $e.current)
  780. ) #else (
  781. #(
  782. #([to] : $e.current._Ptr + $e.current._Idx - 1),
  783. #(current : $e.current)
  784. )
  785. )
  786. )
  787. )
  788. }
  789. std::reverse_iterator<*>{
  790. preview (
  791. #(
  792. "reverse_iterator current ",
  793. $e.current
  794. )
  795. )
  796. children (
  797. #(current : $e.current)
  798. )
  799. }
  800. ;------------------------------------------------------------------------------
  801. ; std::complex from <complex>
  802. ;------------------------------------------------------------------------------
  803. std::complex<*>{
  804. preview (
  805. #if ($e._Val[1] == 0) (
  806. ; Purely real.
  807. $e._Val[0]
  808. ) #else (
  809. #if ($e._Val[0] == 0) (
  810. ; Purely imaginary.
  811. #if ($e._Val[1] < 0) (
  812. #("-i*", -$e._Val[1])
  813. ) #else (
  814. #("i*", $e._Val[1])
  815. )
  816. ) #else (
  817. ; Mixed.
  818. #if ($e._Val[1] < 0) (
  819. #($e._Val[0], "-i*", -$e._Val[1])
  820. ) #else (
  821. #($e._Val[0], "+i*", $e._Val[1])
  822. )
  823. )
  824. )
  825. )
  826. children (
  827. #(
  828. #(real : $e._Val[0]),
  829. #(imag : $e._Val[1])
  830. )
  831. )
  832. }
  833. ;------------------------------------------------------------------------------
  834. ; std::valarray from <valarray>
  835. ;------------------------------------------------------------------------------
  836. std::valarray<*>{
  837. preview (
  838. #(
  839. "[",
  840. $e._Mysize,
  841. "](",
  842. #array(
  843. expr: $e._Myptr[$i],
  844. size: $e._Mysize
  845. ),
  846. ")"
  847. )
  848. )
  849. children (
  850. #array(
  851. expr: $e._Myptr[$i],
  852. size: $e._Mysize
  853. )
  854. )
  855. }
  856. ;------------------------------------------------------------------------------
  857. ; std::tr1::reference_wrapper from <functional>
  858. ;------------------------------------------------------------------------------
  859. std::tr1::reference_wrapper<*>{
  860. preview (
  861. #if ($e._Callee._EEN_INDIRECT == 1) (
  862. ; For ordinary T, reference_wrapper<T> stores a T * _Callee._Ptr
  863. ; which is non-null. Actual references are previewed with what they
  864. ; refer to, so reference_wrapper<T> is previewed with dereferencing its
  865. ; stored pointer.
  866. *$e._Callee._Ptr
  867. ) #else (
  868. ; When T is a pointer to data member type, reference_wrapper<T>
  869. ; stores a T _Callee._Object directly.
  870. $e._Callee._Object
  871. )
  872. )
  873. children (
  874. #if ($e._Callee._EEN_INDIRECT == 1) (
  875. ; Actual references have the same children as what they refer to.
  876. ; Unfortunately, there appears to be no way to imitate this exactly.
  877. ; Therefore, we make reference_wrapper<T> appear to have a single
  878. ; child, its stored pointer, with a fake name of [ptr].
  879. #([ptr] : $e._Callee._Ptr)
  880. ) #else (
  881. ; When T is a pointer to data member type, T has no children,
  882. ; so we make reference_wrapper<T> appear to have no children.
  883. #array(expr: 0, size: 0)
  884. )
  885. )
  886. }
  887. ;------------------------------------------------------------------------------
  888. ; std::tr1::shared_ptr from <memory>
  889. ;------------------------------------------------------------------------------
  890. std::tr1::_Ref_count<*>{
  891. preview ( "default" )
  892. children ( #array(expr: 0, size: 0) )
  893. }
  894. std::tr1::_Ref_count_del<*>{
  895. preview ( "custom deleter" )
  896. children ( #([deleter] : $e._Dtor) )
  897. }
  898. std::tr1::_Ref_count_del_alloc<*>{
  899. preview ( "custom deleter, custom allocator" )
  900. children (
  901. #(
  902. #([deleter] : $e._Dtor),
  903. #([allocator] : $e._Myal)
  904. )
  905. )
  906. }
  907. std::tr1::_Ref_count_obj<*>{
  908. preview ( "make_shared" )
  909. children ( #array(expr: 0, size: 0) )
  910. }
  911. std::tr1::_Ref_count_obj_alloc<*>{
  912. preview ( "allocate_shared" )
  913. children ( #([allocator] : $e._Myal) )
  914. }
  915. std::tr1::shared_ptr<*>{
  916. preview (
  917. ; shared_ptr<T> stores a T * _Ptr .
  918. #if ($e._Ptr == 0) (
  919. ; A default-constructed shared_ptr has a null _Ptr and a null _Rep,
  920. ; and is formally said to be empty.
  921. ; A shared_ptr constructed from a null pointer has a null _Ptr
  922. ; and a NON-null _Rep . It is formally said to own the null pointer.
  923. ; We preview both with "empty".
  924. "empty"
  925. ) #else (
  926. ; Raw pointers are previewed with "<pointer value> <object>".
  927. ; auto_ptr is previewed with "auto_ptr <object>".
  928. ; Following these examples, shared_ptr is previewed with
  929. ; "shared_ptr <object> [N strong refs, M weak refs]".
  930. #(
  931. "shared_ptr ",
  932. *$e._Ptr,
  933. " [",
  934. $e._Rep->_Uses,
  935. #if ($e._Rep->_Uses == 1) (" strong ref") #else (" strong refs"),
  936. #if ($e._Rep->_Weaks - 1 > 0) (
  937. #(
  938. ", ",
  939. $e._Rep->_Weaks - 1,
  940. #if ($e._Rep->_Weaks - 1 == 1) (" weak ref") #else (" weak refs")
  941. )
  942. ),
  943. "] [",
  944. *$e._Rep,
  945. "]"
  946. )
  947. ; Note: _Rep->_Uses counts how many shared_ptrs share ownership of the object,
  948. ; so we directly display it as the strong reference count.
  949. ; _Rep->_Weaks counts how many shared_ptrs and weak_ptrs share ownership of
  950. ; the "representation object" (or "control block"). All of the shared_ptrs are
  951. ; counted as a single owner. That is, _Weaks is initialized to 1, and when
  952. ; _Uses falls to 0, _Weaks is decremented. This avoids incrementing and decrementing
  953. ; _Weaks every time that a shared_ptr gains or loses ownership. Therefore,
  954. ; _Weaks - 1 is the weak reference count, the number of weak_ptrs that are observing
  955. ; the shared object.
  956. )
  957. )
  958. children (
  959. #if ($e._Ptr == 0) (
  960. ; We make empty shared_ptrs (and shared_ptrs that own
  961. ; the null pointer) appear to have no children.
  962. #array(expr: 0, size: 0)
  963. ) #else (
  964. #(
  965. ; We make shared_ptr appear to have two children:
  966. ; Its stored pointer, with a fake name of [ptr].
  967. #([ptr] : $e._Ptr),
  968. ; Its deleter and allocator, which may be default or custom.
  969. #([deleter and allocator] : *$e._Rep)
  970. )
  971. )
  972. )
  973. }
  974. ;------------------------------------------------------------------------------
  975. ; std::tr1::weak_ptr from <memory>
  976. ;------------------------------------------------------------------------------
  977. std::tr1::weak_ptr<*>{
  978. preview (
  979. #if ($e._Ptr == 0) (
  980. "empty"
  981. ) #elif ($e._Rep->_Uses == 0) (
  982. ; weak_ptr is just like shared_ptr, except that a weak_ptr can be expired.
  983. #(
  984. "expired [",
  985. *$e._Rep,
  986. "]"
  987. )
  988. ) #else (
  989. #(
  990. "weak_ptr ",
  991. *$e._Ptr,
  992. " [",
  993. $e._Rep->_Uses,
  994. #if ($e._Rep->_Uses == 1) (" strong ref") #else (" strong refs"),
  995. #if ($e._Rep->_Weaks - 1 > 0) (
  996. #(
  997. ", ",
  998. $e._Rep->_Weaks - 1,
  999. #if ($e._Rep->_Weaks - 1 == 1) (" weak ref") #else (" weak refs")
  1000. )
  1001. ),
  1002. "] [",
  1003. *$e._Rep,
  1004. "]"
  1005. )
  1006. )
  1007. )
  1008. children (
  1009. #if ($e._Ptr == 0) (
  1010. #array(expr: 0, size: 0)
  1011. ) #elif ($e._Rep->_Uses == 0) (
  1012. ; When a weak_ptr is expired, we show its deleter and allocator.
  1013. ; The deleter has already been used, but the control block has not yet been deallocated.
  1014. #([deleter and allocator] : *$e._Rep)
  1015. ) #else (
  1016. #(
  1017. #([ptr] : $e._Ptr),
  1018. #([deleter and allocator] : *$e._Rep)
  1019. )
  1020. )
  1021. )
  1022. }
  1023. ;------------------------------------------------------------------------------
  1024. ; std::tr1::mem_fn() from <functional>
  1025. ;------------------------------------------------------------------------------
  1026. ; Note that when mem_fn() is given a data member pointer, it returns a _Call_wrapper<_Callable_pmd<*> > .
  1027. ; Data member pointers themselves don't have useful previews, so we don't attempt to visualize this.
  1028. ; When mem_fn() is given a member function pointer, it returns a _Mem_fn[N], which we can visualize.
  1029. std::tr1::_Mem_fn1<*>|std::tr1::_Mem_fn2<*>|std::tr1::_Mem_fn3<*>|std::tr1::_Mem_fn4<*>|std::tr1::_Mem_fn5<*>|std::tr1::_Mem_fn6<*>|std::tr1::_Mem_fn7<*>|std::tr1::_Mem_fn8<*>|std::tr1::_Mem_fn9<*>|std::tr1::_Mem_fn10<*>{
  1030. preview (
  1031. ; We preview the functor returned by mem_fn() with "mem_fn(<stored member function pointer>)".
  1032. #(
  1033. "mem_fn(",
  1034. $e._Callee._Object,
  1035. ")"
  1036. )
  1037. )
  1038. children (
  1039. ; Member function pointers have no children.
  1040. #array(expr: 0, size: 0)
  1041. )
  1042. }
  1043. ;------------------------------------------------------------------------------
  1044. ; std::tr1::bind() from <functional>
  1045. ;------------------------------------------------------------------------------
  1046. ; bind() placeholders are previewed with their names.
  1047. ; They have no state, so they have no children.
  1048. std::tr1::_Ph<1>{
  1049. preview ( "_1" )
  1050. children ( #array(expr: 0, size: 0) )
  1051. }
  1052. std::tr1::_Ph<2>{
  1053. preview ( "_2" )
  1054. children ( #array(expr: 0, size: 0) )
  1055. }
  1056. std::tr1::_Ph<3>{
  1057. preview ( "_3" )
  1058. children ( #array(expr: 0, size: 0) )
  1059. }
  1060. std::tr1::_Ph<4>{
  1061. preview ( "_4" )
  1062. children ( #array(expr: 0, size: 0) )
  1063. }
  1064. std::tr1::_Ph<5>{
  1065. preview ( "_5" )
  1066. children ( #array(expr: 0, size: 0) )
  1067. }
  1068. std::tr1::_Ph<6>{
  1069. preview ( "_6" )
  1070. children ( #array(expr: 0, size: 0) )
  1071. }
  1072. std::tr1::_Ph<7>{
  1073. preview ( "_7" )
  1074. children ( #array(expr: 0, size: 0) )
  1075. }
  1076. std::tr1::_Ph<8>{
  1077. preview ( "_8" )
  1078. children ( #array(expr: 0, size: 0) )
  1079. }
  1080. std::tr1::_Ph<9>{
  1081. preview ( "_9" )
  1082. children ( #array(expr: 0, size: 0) )
  1083. }
  1084. std::tr1::_Ph<10>{
  1085. preview ( "_10" )
  1086. children ( #array(expr: 0, size: 0) )
  1087. }
  1088. ; The functor returned by bind(f, t1, t2) is previewed with "bind(f, t1, t2)".
  1089. ; It has children with the fake names of [f], [t1], [t2], etc.
  1090. std::tr1::_Bind<*,*,std::tr1::_Bind0<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind0<*> >{
  1091. preview (
  1092. #(
  1093. "bind(", $e._Bx._Callee._Object,
  1094. ")"
  1095. )
  1096. )
  1097. children (
  1098. #(
  1099. #([f] : $e._Bx._Callee._Object)
  1100. )
  1101. )
  1102. }
  1103. std::tr1::_Bind<*,*,std::tr1::_Bind1<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind1<*> >{
  1104. preview (
  1105. #(
  1106. "bind(", $e._Bx._Callee._Object,
  1107. ", ", $e._Bx._Vx0,
  1108. ")"
  1109. )
  1110. )
  1111. children (
  1112. #(
  1113. #([f] : $e._Bx._Callee._Object),
  1114. #([t1] : $e._Bx._Vx0)
  1115. )
  1116. )
  1117. }
  1118. std::tr1::_Bind<*,*,std::tr1::_Bind2<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind2<*> >{
  1119. preview (
  1120. #(
  1121. "bind(", $e._Bx._Callee._Object,
  1122. ", ", $e._Bx._Vx0,
  1123. ", ", $e._Bx._Vx1,
  1124. ")"
  1125. )
  1126. )
  1127. children (
  1128. #(
  1129. #([f] : $e._Bx._Callee._Object),
  1130. #([t1] : $e._Bx._Vx0),
  1131. #([t2] : $e._Bx._Vx1)
  1132. )
  1133. )
  1134. }
  1135. std::tr1::_Bind<*,*,std::tr1::_Bind3<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind3<*> >{
  1136. preview (
  1137. #(
  1138. "bind(", $e._Bx._Callee._Object,
  1139. ", ", $e._Bx._Vx0,
  1140. ", ", $e._Bx._Vx1,
  1141. ", ", $e._Bx._Vx2,
  1142. ")"
  1143. )
  1144. )
  1145. children (
  1146. #(
  1147. #([f] : $e._Bx._Callee._Object),
  1148. #([t1] : $e._Bx._Vx0),
  1149. #([t2] : $e._Bx._Vx1),
  1150. #([t3] : $e._Bx._Vx2)
  1151. )
  1152. )
  1153. }
  1154. std::tr1::_Bind<*,*,std::tr1::_Bind4<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind4<*> >{
  1155. preview (
  1156. #(
  1157. "bind(", $e._Bx._Callee._Object,
  1158. ", ", $e._Bx._Vx0,
  1159. ", ", $e._Bx._Vx1,
  1160. ", ", $e._Bx._Vx2,
  1161. ", ", $e._Bx._Vx3,
  1162. ")"
  1163. )
  1164. )
  1165. children (
  1166. #(
  1167. #([f] : $e._Bx._Callee._Object),
  1168. #([t1] : $e._Bx._Vx0),
  1169. #([t2] : $e._Bx._Vx1),
  1170. #([t3] : $e._Bx._Vx2),
  1171. #([t4] : $e._Bx._Vx3)
  1172. )
  1173. )
  1174. }
  1175. std::tr1::_Bind<*,*,std::tr1::_Bind5<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind5<*> >{
  1176. preview (
  1177. #(
  1178. "bind(", $e._Bx._Callee._Object,
  1179. ", ", $e._Bx._Vx0,
  1180. ", ", $e._Bx._Vx1,
  1181. ", ", $e._Bx._Vx2,
  1182. ", ", $e._Bx._Vx3,
  1183. ", ", $e._Bx._Vx4,
  1184. ")"
  1185. )
  1186. )
  1187. children (
  1188. #(
  1189. #([f] : $e._Bx._Callee._Object),
  1190. #([t1] : $e._Bx._Vx0),
  1191. #([t2] : $e._Bx._Vx1),
  1192. #([t3] : $e._Bx._Vx2),
  1193. #([t4] : $e._Bx._Vx3),
  1194. #([t5] : $e._Bx._Vx4)
  1195. )
  1196. )
  1197. }
  1198. std::tr1::_Bind<*,*,std::tr1::_Bind6<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind6<*> >{
  1199. preview (
  1200. #(
  1201. "bind(", $e._Bx._Callee._Object,
  1202. ", ", $e._Bx._Vx0,
  1203. ", ", $e._Bx._Vx1,
  1204. ", ", $e._Bx._Vx2,
  1205. ", ", $e._Bx._Vx3,
  1206. ", ", $e._Bx._Vx4,
  1207. ", ", $e._Bx._Vx5,
  1208. ")"
  1209. )
  1210. )
  1211. children (
  1212. #(
  1213. #([f] : $e._Bx._Callee._Object),
  1214. #([t1] : $e._Bx._Vx0),
  1215. #([t2] : $e._Bx._Vx1),
  1216. #([t3] : $e._Bx._Vx2),
  1217. #([t4] : $e._Bx._Vx3),
  1218. #([t5] : $e._Bx._Vx4),
  1219. #([t6] : $e._Bx._Vx5)
  1220. )
  1221. )
  1222. }
  1223. std::tr1::_Bind<*,*,std::tr1::_Bind7<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind7<*> >{
  1224. preview (
  1225. #(
  1226. "bind(", $e._Bx._Callee._Object,
  1227. ", ", $e._Bx._Vx0,
  1228. ", ", $e._Bx._Vx1,
  1229. ", ", $e._Bx._Vx2,
  1230. ", ", $e._Bx._Vx3,
  1231. ", ", $e._Bx._Vx4,
  1232. ", ", $e._Bx._Vx5,
  1233. ", ", $e._Bx._Vx6,
  1234. ")"
  1235. )
  1236. )
  1237. children (
  1238. #(
  1239. #([f] : $e._Bx._Callee._Object),
  1240. #([t1] : $e._Bx._Vx0),
  1241. #([t2] : $e._Bx._Vx1),
  1242. #([t3] : $e._Bx._Vx2),
  1243. #([t4] : $e._Bx._Vx3),
  1244. #([t5] : $e._Bx._Vx4),
  1245. #([t6] : $e._Bx._Vx5),
  1246. #([t7] : $e._Bx._Vx6)
  1247. )
  1248. )
  1249. }
  1250. std::tr1::_Bind<*,*,std::tr1::_Bind8<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind8<*> >{
  1251. preview (
  1252. #(
  1253. "bind(", $e._Bx._Callee._Object,
  1254. ", ", $e._Bx._Vx0,
  1255. ", ", $e._Bx._Vx1,
  1256. ", ", $e._Bx._Vx2,
  1257. ", ", $e._Bx._Vx3,
  1258. ", ", $e._Bx._Vx4,
  1259. ", ", $e._Bx._Vx5,
  1260. ", ", $e._Bx._Vx6,
  1261. ", ", $e._Bx._Vx7,
  1262. ")"
  1263. )
  1264. )
  1265. children (
  1266. #(
  1267. #([f] : $e._Bx._Callee._Object),
  1268. #([t1] : $e._Bx._Vx0),
  1269. #([t2] : $e._Bx._Vx1),
  1270. #([t3] : $e._Bx._Vx2),
  1271. #([t4] : $e._Bx._Vx3),
  1272. #([t5] : $e._Bx._Vx4),
  1273. #([t6] : $e._Bx._Vx5),
  1274. #([t7] : $e._Bx._Vx6),
  1275. #([t8] : $e._Bx._Vx7)
  1276. )
  1277. )
  1278. }
  1279. std::tr1::_Bind<*,*,std::tr1::_Bind9<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind9<*> >{
  1280. preview (
  1281. #(
  1282. "bind(", $e._Bx._Callee._Object,
  1283. ", ", $e._Bx._Vx0,
  1284. ", ", $e._Bx._Vx1,
  1285. ", ", $e._Bx._Vx2,
  1286. ", ", $e._Bx._Vx3,
  1287. ", ", $e._Bx._Vx4,
  1288. ", ", $e._Bx._Vx5,
  1289. ", ", $e._Bx._Vx6,
  1290. ", ", $e._Bx._Vx7,
  1291. ", ", $e._Bx._Vx8,
  1292. ")"
  1293. )
  1294. )
  1295. children (
  1296. #(
  1297. #([f] : $e._Bx._Callee._Object),
  1298. #([t1] : $e._Bx._Vx0),
  1299. #([t2] : $e._Bx._Vx1),
  1300. #([t3] : $e._Bx._Vx2),
  1301. #([t4] : $e._Bx._Vx3),
  1302. #([t5] : $e._Bx._Vx4),
  1303. #([t6] : $e._Bx._Vx5),
  1304. #([t7] : $e._Bx._Vx6),
  1305. #([t8] : $e._Bx._Vx7),
  1306. #([t9] : $e._Bx._Vx8)
  1307. )
  1308. )
  1309. }
  1310. std::tr1::_Bind<*,*,std::tr1::_Bind10<*> >|std::tr1::_Bind_fty<*,*,std::tr1::_Bind10<*> >{
  1311. preview (
  1312. #(
  1313. "bind(", $e._Bx._Callee._Object,
  1314. ", ", $e._Bx._Vx0,
  1315. ", ", $e._Bx._Vx1,
  1316. ", ", $e._Bx._Vx2,
  1317. ", ", $e._Bx._Vx3,
  1318. ", ", $e._Bx._Vx4,
  1319. ", ", $e._Bx._Vx5,
  1320. ", ", $e._Bx._Vx6,
  1321. ", ", $e._Bx._Vx7,
  1322. ", ", $e._Bx._Vx8,
  1323. ", ", $e._Bx._Vx9,
  1324. ")"
  1325. )
  1326. )
  1327. children (
  1328. #(
  1329. #([f] : $e._Bx._Callee._Object),
  1330. #([t1] : $e._Bx._Vx0),
  1331. #([t2] : $e._Bx._Vx1),
  1332. #([t3] : $e._Bx._Vx2),
  1333. #([t4] : $e._Bx._Vx3),
  1334. #([t5] : $e._Bx._Vx4),
  1335. #([t6] : $e._Bx._Vx5),
  1336. #([t7] : $e._Bx._Vx6),
  1337. #([t8] : $e._Bx._Vx7),
  1338. #([t9] : $e._Bx._Vx8),
  1339. #([t10] : $e._Bx._Vx9)
  1340. )
  1341. )
  1342. }
  1343. ;------------------------------------------------------------------------------
  1344. ; std::tr1::function from <functional>
  1345. ;------------------------------------------------------------------------------
  1346. std::tr1::_Impl_no_alloc0<*>|std::tr1::_Impl_no_alloc1<*>|std::tr1::_Impl_no_alloc2<*>|std::tr1::_Impl_no_alloc3<*>|std::tr1::_Impl_no_alloc4<*>|std::tr1::_Impl_no_alloc5<*>|std::tr1::_Impl_no_alloc6<*>|std::tr1::_Impl_no_alloc7<*>|std::tr1::_Impl_no_alloc8<*>|std::tr1::_Impl_no_alloc9<*>|std::tr1::_Impl_no_alloc10<*>{
  1347. preview ( $e._Callee._Object )
  1348. children ( #([functor] : $e._Callee._Object) )
  1349. }
  1350. std::tr1::_Impl0<*>|std::tr1::_Impl1<*>|std::tr1::_Impl2<*>|std::tr1::_Impl3<*>|std::tr1::_Impl4<*>|std::tr1::_Impl5<*>|std::tr1::_Impl6<*>|std::tr1::_Impl7<*>|std::tr1::_Impl8<*>|std::tr1::_Impl9<*>|std::tr1::_Impl10<*>{
  1351. preview ( $e._Callee._Object )
  1352. children (
  1353. #(
  1354. #([functor] : $e._Callee._Object),
  1355. #([allocator] : $e._Myal)
  1356. )
  1357. )
  1358. }
  1359. std::tr1::function<*>{
  1360. preview (
  1361. #if ($e._Impl == 0) (
  1362. ; Detecting empty functions is trivial.
  1363. "empty"
  1364. ) #else (
  1365. *$e._Impl
  1366. )
  1367. )
  1368. children (
  1369. #if ($e._Impl == 0) (
  1370. ; We make empty functions appear to have no children.
  1371. #array(expr: 0, size: 0)
  1372. ) #else (
  1373. #([functor and allocator] : *$e._Impl)
  1374. )
  1375. )
  1376. }
  1377. ;------------------------------------------------------------------------------
  1378. ; std::tr1::tuple from <tuple>
  1379. ;------------------------------------------------------------------------------
  1380. ; tuple is visualized like pair, except that we have to give fake names to tuple's children.
  1381. std::tr1::tuple<std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil>{
  1382. preview (
  1383. "()"
  1384. )
  1385. children (
  1386. #array(expr: 0, size: 0)
  1387. )
  1388. }
  1389. std::tr1::tuple<*,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil>{
  1390. preview (
  1391. #(
  1392. "(", $e._Impl._Value,
  1393. ")"
  1394. )
  1395. )
  1396. children (
  1397. #(
  1398. [0] : $e._Impl._Value
  1399. )
  1400. )
  1401. }
  1402. std::tr1::tuple<*,*,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil>{
  1403. preview (
  1404. #(
  1405. "(", $e._Impl._Value,
  1406. ", ", $e._Impl._Tail._Value,
  1407. ")"
  1408. )
  1409. )
  1410. children (
  1411. #(
  1412. [0] : $e._Impl._Value,
  1413. [1] : $e._Impl._Tail._Value
  1414. )
  1415. )
  1416. }
  1417. std::tr1::tuple<*,*,*,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil>{
  1418. preview (
  1419. #(
  1420. "(", $e._Impl._Value,
  1421. ", ", $e._Impl._Tail._Value,
  1422. ", ", $e._Impl._Tail._Tail._Value,
  1423. ")"
  1424. )
  1425. )
  1426. children (
  1427. #(
  1428. [0] : $e._Impl._Value,
  1429. [1] : $e._Impl._Tail._Value,
  1430. [2] : $e._Impl._Tail._Tail._Value
  1431. )
  1432. )
  1433. }
  1434. std::tr1::tuple<*,*,*,*,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil>{
  1435. preview (
  1436. #(
  1437. "(", $e._Impl._Value,
  1438. ", ", $e._Impl._Tail._Value,
  1439. ", ", $e._Impl._Tail._Tail._Value,
  1440. ", ", $e._Impl._Tail._Tail._Tail._Value,
  1441. ")"
  1442. )
  1443. )
  1444. children (
  1445. #(
  1446. [0] : $e._Impl._Value,
  1447. [1] : $e._Impl._Tail._Value,
  1448. [2] : $e._Impl._Tail._Tail._Value,
  1449. [3] : $e._Impl._Tail._Tail._Tail._Value
  1450. )
  1451. )
  1452. }
  1453. std::tr1::tuple<*,*,*,*,*,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil>{
  1454. preview (
  1455. #(
  1456. "(", $e._Impl._Value,
  1457. ", ", $e._Impl._Tail._Value,
  1458. ", ", $e._Impl._Tail._Tail._Value,
  1459. ", ", $e._Impl._Tail._Tail._Tail._Value,
  1460. ", ", $e._Impl._Tail._Tail._Tail._Tail._Value,
  1461. ")"
  1462. )
  1463. )
  1464. children (
  1465. #(
  1466. [0] : $e._Impl._Value,
  1467. [1] : $e._Impl._Tail._Value,
  1468. [2] : $e._Impl._Tail._Tail._Value,
  1469. [3] : $e._Impl._Tail._Tail._Tail._Value,
  1470. [4] : $e._Impl._Tail._Tail._Tail._Tail._Value
  1471. )
  1472. )
  1473. }
  1474. std::tr1::tuple<*,*,*,*,*,*,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil>{
  1475. preview (
  1476. #(
  1477. "(", $e._Impl._Value,
  1478. ", ", $e._Impl._Tail._Value,
  1479. ", ", $e._Impl._Tail._Tail._Value,
  1480. ", ", $e._Impl._Tail._Tail._Tail._Value,
  1481. ", ", $e._Impl._Tail._Tail._Tail._Tail._Value,
  1482. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Value,
  1483. ")"
  1484. )
  1485. )
  1486. children (
  1487. #(
  1488. [0] : $e._Impl._Value,
  1489. [1] : $e._Impl._Tail._Value,
  1490. [2] : $e._Impl._Tail._Tail._Value,
  1491. [3] : $e._Impl._Tail._Tail._Tail._Value,
  1492. [4] : $e._Impl._Tail._Tail._Tail._Tail._Value,
  1493. [5] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Value
  1494. )
  1495. )
  1496. }
  1497. std::tr1::tuple<*,*,*,*,*,*,*,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil>{
  1498. preview (
  1499. #(
  1500. "(", $e._Impl._Value,
  1501. ", ", $e._Impl._Tail._Value,
  1502. ", ", $e._Impl._Tail._Tail._Value,
  1503. ", ", $e._Impl._Tail._Tail._Tail._Value,
  1504. ", ", $e._Impl._Tail._Tail._Tail._Tail._Value,
  1505. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Value,
  1506. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1507. ")"
  1508. )
  1509. )
  1510. children (
  1511. #(
  1512. [0] : $e._Impl._Value,
  1513. [1] : $e._Impl._Tail._Value,
  1514. [2] : $e._Impl._Tail._Tail._Value,
  1515. [3] : $e._Impl._Tail._Tail._Tail._Value,
  1516. [4] : $e._Impl._Tail._Tail._Tail._Tail._Value,
  1517. [5] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Value,
  1518. [6] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Value
  1519. )
  1520. )
  1521. }
  1522. std::tr1::tuple<*,*,*,*,*,*,*,*,std::tr1::_Nil,std::tr1::_Nil>{
  1523. preview (
  1524. #(
  1525. "(", $e._Impl._Value,
  1526. ", ", $e._Impl._Tail._Value,
  1527. ", ", $e._Impl._Tail._Tail._Value,
  1528. ", ", $e._Impl._Tail._Tail._Tail._Value,
  1529. ", ", $e._Impl._Tail._Tail._Tail._Tail._Value,
  1530. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Value,
  1531. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1532. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1533. ")"
  1534. )
  1535. )
  1536. children (
  1537. #(
  1538. [0] : $e._Impl._Value,
  1539. [1] : $e._Impl._Tail._Value,
  1540. [2] : $e._Impl._Tail._Tail._Value,
  1541. [3] : $e._Impl._Tail._Tail._Tail._Value,
  1542. [4] : $e._Impl._Tail._Tail._Tail._Tail._Value,
  1543. [5] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Value,
  1544. [6] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1545. [7] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value
  1546. )
  1547. )
  1548. }
  1549. std::tr1::tuple<*,*,*,*,*,*,*,*,*,std::tr1::_Nil>{
  1550. preview (
  1551. #(
  1552. "(", $e._Impl._Value,
  1553. ", ", $e._Impl._Tail._Value,
  1554. ", ", $e._Impl._Tail._Tail._Value,
  1555. ", ", $e._Impl._Tail._Tail._Tail._Value,
  1556. ", ", $e._Impl._Tail._Tail._Tail._Tail._Value,
  1557. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Value,
  1558. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1559. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1560. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1561. ")"
  1562. )
  1563. )
  1564. children (
  1565. #(
  1566. [0] : $e._Impl._Value,
  1567. [1] : $e._Impl._Tail._Value,
  1568. [2] : $e._Impl._Tail._Tail._Value,
  1569. [3] : $e._Impl._Tail._Tail._Tail._Value,
  1570. [4] : $e._Impl._Tail._Tail._Tail._Tail._Value,
  1571. [5] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Value,
  1572. [6] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1573. [7] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1574. [8] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value
  1575. )
  1576. )
  1577. }
  1578. std::tr1::tuple<*,*,*,*,*,*,*,*,*,*>{
  1579. preview (
  1580. #(
  1581. "(", $e._Impl._Value,
  1582. ", ", $e._Impl._Tail._Value,
  1583. ", ", $e._Impl._Tail._Tail._Value,
  1584. ", ", $e._Impl._Tail._Tail._Tail._Value,
  1585. ", ", $e._Impl._Tail._Tail._Tail._Tail._Value,
  1586. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Value,
  1587. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1588. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1589. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1590. ", ", $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1591. ")"
  1592. )
  1593. )
  1594. children (
  1595. #(
  1596. [0] : $e._Impl._Value,
  1597. [1] : $e._Impl._Tail._Value,
  1598. [2] : $e._Impl._Tail._Tail._Value,
  1599. [3] : $e._Impl._Tail._Tail._Tail._Value,
  1600. [4] : $e._Impl._Tail._Tail._Tail._Tail._Value,
  1601. [5] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Value,
  1602. [6] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1603. [7] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1604. [8] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value,
  1605. [9] : $e._Impl._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Value
  1606. )
  1607. )
  1608. }
  1609. ;------------------------------------------------------------------------------
  1610. ; std::tr1::array from <array>
  1611. ;------------------------------------------------------------------------------
  1612. std::tr1::array<*>{
  1613. preview (
  1614. ; An actual array is previewed with its address.
  1615. ; array<T, N> is previewed like vector<T>.
  1616. #(
  1617. "[",
  1618. $e._EEN_SIZE,
  1619. "](",
  1620. #array(expr: $e._Elems[$i], size: $e._EEN_SIZE),
  1621. ")"
  1622. )
  1623. )
  1624. children (
  1625. ; Just like an actual array.
  1626. #array(expr: $e._Elems[$i], size: $e._EEN_SIZE)
  1627. )
  1628. }
  1629. std::_Array_iterator<*>|std::_Array_const_iterator<*>{
  1630. preview (
  1631. #if ($e._EEN_IDL == 0) (
  1632. *$e._Ptr
  1633. ) #else (
  1634. #if ($e._Idx == $e._EEN_SIZE) (
  1635. ; array iterators are represented by _Ptr + _Idx,
  1636. ; and they know how large their parent arrays are. Therefore, detecting
  1637. ; end iterators is trivial.
  1638. "end"
  1639. ) #else (
  1640. ; Like vector iterators, array iterators are previewed with what they point to.
  1641. $e._Ptr[$e._Idx]
  1642. )
  1643. )
  1644. )
  1645. children (
  1646. #if ($e._EEN_IDL == 0) (
  1647. #([ptr] : $e._Ptr)
  1648. ) #else (
  1649. #if ($e._Idx == $e._EEN_SIZE) (
  1650. ; We make end iterators appear to have no children.
  1651. #array(expr: 0, size: 0)
  1652. ) #else (
  1653. ; An array iterator is conceptually a pointer, so we make it appear to store one.
  1654. #([ptr] : $e._Ptr + $e._Idx)
  1655. )
  1656. )
  1657. )
  1658. }
  1659. ;------------------------------------------------------------------------------
  1660. ; stdext::hash_map from <hash_map>
  1661. ; stdext::hash_multimap from <hash_map>
  1662. ; stdext::hash_set from <hash_set>
  1663. ; stdext::hash_multiset from <hash_set>
  1664. ;------------------------------------------------------------------------------
  1665. stdext::hash_map<*>|stdext::hash_multimap<*>|stdext::hash_set<*>|stdext::hash_multiset<*>{
  1666. preview (
  1667. #(
  1668. "[",
  1669. $e._List._Mysize,
  1670. "](",
  1671. #list(
  1672. head: $e._List._Myhead->_Next,
  1673. size: $e._List._Mysize,
  1674. next: _Next
  1675. ) : $e._Myval,
  1676. ")"
  1677. )
  1678. )
  1679. children (
  1680. #list(
  1681. head: $e._List._Myhead->_Next,
  1682. size: $e._List._Mysize,
  1683. next: _Next
  1684. ) : $e._Myval
  1685. )
  1686. }
  1687. ;------------------------------------------------------------------------------
  1688. ; std::tr1::unordered_map from <unordered_map>
  1689. ; std::tr1::unordered_multimap from <unordered_map>
  1690. ; std::tr1::unordered_set from <unordered_set>
  1691. ; std::tr1::unordered_multiset from <unordered_set>
  1692. ;------------------------------------------------------------------------------
  1693. std::hash<*>{
  1694. preview ( "hash" )
  1695. children ( #array(expr: 0, size: 0) )
  1696. }
  1697. std::tr1::unordered_map<*>|std::tr1::unordered_multimap<*>|std::tr1::unordered_set<*>|std::tr1::unordered_multiset<*>{
  1698. preview (
  1699. #(
  1700. "[",
  1701. $e._List._Mysize,
  1702. "](",
  1703. #list(
  1704. head: $e._List._Myhead->_Next,
  1705. size: $e._List._Mysize,
  1706. next: _Next
  1707. ) : $e._Myval,
  1708. ")"
  1709. )
  1710. )
  1711. children (
  1712. #(
  1713. #([hash] : $e.comp._Hashobj),
  1714. #([equal] : $e.comp._Keyeqobj),
  1715. #list(
  1716. head: $e._List._Myhead->_Next,
  1717. size: $e._List._Mysize,
  1718. next: _Next
  1719. ) : $e._Myval
  1720. )
  1721. )
  1722. }
  1723. ;------------------------------------------------------------------------------
  1724. ; std::tr1::basic_regex from <regex>
  1725. ;------------------------------------------------------------------------------
  1726. std::tr1::basic_regex<*>{
  1727. preview (
  1728. #if ($e._Rep == 0) (
  1729. ; Default construction creates an empty basic_regex.
  1730. "empty"
  1731. ) #elif ($e._EEN_VIS == 1) (
  1732. ; By default, _ENHANCED_REGEX_VISUALIZER is defined to be 1 in debug and 0 in ship.
  1733. ; When it is 1, basic_regex stores the string from which it was constructed.
  1734. ; When it is 0, basic_regex stores only the resulting finite state machine.
  1735. $e._Visualization
  1736. ) #else (
  1737. ; basic_regex contains many static const flags, which would be shown in the preview by default.
  1738. ; Its actual members are _Rep and _Traits. _Rep holds the finite state machine, so we
  1739. ; use it to preview basic_regex. (It does contain some human-readable information.)
  1740. *$e._Rep
  1741. )
  1742. )
  1743. children (
  1744. #if ($e._Rep == 0) (
  1745. ; We make empty basic_regexes appear to have no children.
  1746. #array(expr: 0, size: 0)
  1747. ) #elif ($e._EEN_VIS == 1) (
  1748. ; We want to hide those static const flags.
  1749. ; We also want to give _Visualization a fake name.
  1750. #(
  1751. #([str] : $e._Visualization),
  1752. #(_Rep : $e._Rep),
  1753. #(_Traits : $e._Traits)
  1754. )
  1755. ) #else (
  1756. ; We want to hide those static const flags.
  1757. #(
  1758. _Rep : $e._Rep,
  1759. _Traits : $e._Traits
  1760. )
  1761. )
  1762. )
  1763. }
  1764. ;------------------------------------------------------------------------------
  1765. ; std::tr1::sub_match from <regex>
  1766. ;------------------------------------------------------------------------------
  1767. std::tr1::sub_match<char const *>|std::tr1::sub_match<wchar_t const *>|std::tr1::sub_match<unsigned short const *>|std::tr1::sub_match<char *>|std::tr1::sub_match<wchar_t *>|std::tr1::sub_match<unsigned short *>{
  1768. preview (
  1769. ; It would be nice if we could preview sub_match with its str().
  1770. ; However, visualizers cannot handle strings represented by pointer pairs.
  1771. ; Therefore, our preview contains more limited information.
  1772. #if ($e.matched) (
  1773. ; If this sub_match participated in a match,
  1774. ; we preview it with its length().
  1775. $e.second - $e.first
  1776. ) #else (
  1777. ; Otherwise, we preview it with its matched bool (i.e. "false").
  1778. ; (Why not length() (i.e. "0")? It's meaningful to have
  1779. ; matched == true and length() == 0.
  1780. "false"
  1781. )
  1782. )
  1783. children (
  1784. #(
  1785. ; sub_match's three data members are public, but we list them here
  1786. ; (a) to display matched before first and second, and
  1787. ; (b) to gloss over the fact that sub_match derives from std::pair.
  1788. #(matched : $e.matched),
  1789. #(first : $e.first),
  1790. #(second : $e.second)
  1791. )
  1792. )
  1793. }
  1794. std::tr1::sub_match<std::_String_const_iterator<*> >|std::tr1::sub_match<std::_String_iterator<*> >{
  1795. preview (
  1796. #if ($e.matched) (
  1797. ; We visualize ssub_match and wssub_match just like csub_match and wcsub_match,
  1798. ; except that when determining the length(), we can't subtract iterators.
  1799. ; We have to subtract their stored pointers.
  1800. $e.second._Ptr - $e.first._Ptr
  1801. ) #else (
  1802. "false"
  1803. )
  1804. )
  1805. children (
  1806. #(
  1807. #(matched : $e.matched),
  1808. #(first : $e.first),
  1809. #(second : $e.second)
  1810. )
  1811. )
  1812. }
  1813. ;------------------------------------------------------------------------------
  1814. ; std::tr1::match_results from <regex>
  1815. ;------------------------------------------------------------------------------
  1816. std::tr1::match_results<*>{
  1817. preview (
  1818. ; A match_results object is empty iff its vector _Matches is empty.
  1819. #if ($e._Matches._Myfirst == $e._Matches._Mylast) (
  1820. "empty"
  1821. ) #else (
  1822. ; We preview a non-empty match_results object with its vector.
  1823. $e._Matches
  1824. )
  1825. )
  1826. children (
  1827. #if ($e._Matches._Myfirst == $e._Matches._Mylast) (
  1828. ; We make empty match_results appear to have no children.
  1829. #array(expr: 0, size: 0)
  1830. ) #else (
  1831. ; As match_results has operator[](), prefix(), and suffix() member functions,
  1832. ; we make it appear to directly contain [0], [1], [2], etc. elements,
  1833. ; as well as [prefix] and [suffix] elements.
  1834. #(
  1835. #array(expr: $e._Matches._Myfirst[$i], size: $e._Matches._Mylast - $e._Matches._Myfirst),
  1836. #([prefix] : $e._Prefix),
  1837. #([suffix] : $e._Suffix)
  1838. )
  1839. )
  1840. )
  1841. }
  1842. ;------------------------------------------------------------------------------
  1843. ; std::tr1::regex_iterator from <regex>
  1844. ;------------------------------------------------------------------------------
  1845. std::tr1::regex_iterator<*>{
  1846. preview (
  1847. #if ($e._MyRe == 0) (
  1848. ; We represent end-of-sequence regex_iterators with null regex pointers.
  1849. "end"
  1850. ) #else (
  1851. ; Dereferenceable regex_iterators return match_results when dereferenced,
  1852. ; so we'll preview them with that.
  1853. $e._MyVal
  1854. )
  1855. )
  1856. children (
  1857. #if ($e._MyRe == 0) (
  1858. ; We make end-of-sequence regex_iterators appear to have no children.
  1859. #array(expr: 0, size: 0)
  1860. ) #else (
  1861. ; For ease of understanding, we make dereferenceable regex_iterators
  1862. ; appear to have data members with the "for exposition only" names from TR1.
  1863. #(
  1864. #([begin] : $e._Begin),
  1865. #([end] : $e._End),
  1866. #([pregex] : $e._MyRe),
  1867. #([flags] : $e._Flags),
  1868. #([match] : $e._MyVal)
  1869. )
  1870. )
  1871. )
  1872. }
  1873. ;------------------------------------------------------------------------------
  1874. ; std::tr1::regex_token_iterator from <regex>
  1875. ;------------------------------------------------------------------------------
  1876. std::tr1::regex_token_iterator<*>{
  1877. preview (
  1878. #if ($e._Res == 0) (
  1879. ; We represent end-of-sequence regex_token_iterators with null result pointers.
  1880. "end"
  1881. ) #else (
  1882. ; Dereferenceable regex_token_iterators return *result when dereferenced,
  1883. ; so we'll preview them with that.
  1884. *$e._Res
  1885. )
  1886. )
  1887. children (
  1888. #if ($e._Res == 0) (
  1889. ; We make end-of-sequence regex_token_iterators appear to have no children.
  1890. #array(expr: 0, size: 0)
  1891. ) #else (
  1892. ; For ease of understanding, we make dereferenceable regex_token_iterators
  1893. ; appear to have data members with the "for exposition only" names from TR1.
  1894. #(
  1895. #([position] : $e._Pos),
  1896. #([result] : $e._Res),
  1897. #([suffix] : $e._Suffix),
  1898. #([N] : $e._Cur),
  1899. #([subs] : $e._Subs)
  1900. )
  1901. )
  1902. )
  1903. }
  1904. ;------------------------------------------------------------------------------
  1905. ; std::identity, etc. from <functional>
  1906. ;------------------------------------------------------------------------------
  1907. std::identity<*>{
  1908. preview ( "identity" )
  1909. children ( #array(expr: 0, size: 0) )
  1910. }
  1911. std::bit_and<*>{
  1912. preview ( "bit_and" )
  1913. children ( #array(expr: 0, size: 0) )
  1914. }
  1915. std::bit_or<*>{
  1916. preview ( "bit_or" )
  1917. children ( #array(expr: 0, size: 0) )
  1918. }
  1919. std::bit_xor<*>{
  1920. preview ( "bit_xor" )
  1921. children ( #array(expr: 0, size: 0) )
  1922. }
  1923. ;------------------------------------------------------------------------------
  1924. ; std::unique_ptr from <memory>
  1925. ;------------------------------------------------------------------------------
  1926. std::unique_ptr<*>{
  1927. preview (
  1928. #if ($e._Myptr == 0) (
  1929. "empty"
  1930. ) #else (
  1931. #(
  1932. "unique_ptr ",
  1933. *$e._Myptr
  1934. )
  1935. )
  1936. )
  1937. children (
  1938. #if ($e._Myptr == 0) (
  1939. #array(expr: 0, size: 0)
  1940. ) #else (
  1941. #([ptr] : $e._Myptr)
  1942. )
  1943. )
  1944. }
  1945. ;------------------------------------------------------------------------------
  1946. ; std::forward_list from <forward_list>
  1947. ;------------------------------------------------------------------------------
  1948. std::forward_list<*>{
  1949. preview (
  1950. #(
  1951. "(",
  1952. #list(
  1953. head: $e._Myhead,
  1954. next: _Next
  1955. ) : $e._Myval,
  1956. ")"
  1957. )
  1958. )
  1959. children (
  1960. #list(
  1961. head: $e._Myhead,
  1962. next: _Next
  1963. ) : $e._Myval
  1964. )
  1965. }
  1966. std::_Flist_iterator<*>|std::_Flist_const_iterator<*>{
  1967. preview (
  1968. #if ($e._Ptr == 0) (
  1969. "end"
  1970. ) #else (
  1971. $e._Ptr->_Myval
  1972. )
  1973. )
  1974. children (
  1975. #if ($e._Ptr == 0) (
  1976. #array(expr: 0, size: 0)
  1977. ) #else (
  1978. #([ptr] : &$e._Ptr->_Myval)
  1979. )
  1980. )
  1981. }
  1982. ;------------------------------------------------------------------------------
  1983. ; PROPVARIANT
  1984. ;------------------------------------------------------------------------------
  1985. ; Visualizers for VT_VECTOR C arrays
  1986. tagCAC|tagCAUB|tagCAI|tagCAUI|tagCAL|tagCAUL|tagCAFLT|tagCADBL|tagCACY|tagCADATE|tagCABSTR|tagCABSTRBLOB|tagCABOOL|tagCASCODE|tagCAPROPVARIANT|tagCAH|tagCAUH|tagCALPSTR|tagCALPWSTR|tagCAFILETIME|tagCACLIPDATA|tagCACLSID{
  1987. preview(
  1988. #(
  1989. "[", $e.cElems , "](",
  1990. #array
  1991. (
  1992. expr : ($e.pElems)[$i],
  1993. size : $e.cElems
  1994. ),
  1995. ")"
  1996. )
  1997. )
  1998. children
  1999. (
  2000. #array
  2001. (
  2002. expr : ($e.pElems)[$i],
  2003. size : $e.cElems
  2004. )
  2005. )
  2006. }
  2007. ; Visualizers for SAFE ARRAY
  2008. tagSAFEARRAY|SAFEARRAY{
  2009. preview(
  2010. #if ($e.fFeatures & 0x0080) ; FADF_HAVEVARTYPE
  2011. (
  2012. ; Switch on the variant type field - which is stored 4 bytes
  2013. ; before the beginning of the SAFEARRAY type
  2014. #switch( ((unsigned *)&($e))[-1] )
  2015. #case 0x2 ; VT_I2 | VT_ARRAY
  2016. (
  2017. #(
  2018. "safearray of I2 = [",
  2019. ; output the rank array
  2020. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2021. "](",
  2022. ; output the data elements
  2023. #array(
  2024. expr: ((signed short *)$e.pvData)[$i],
  2025. size: $e.rgsabound[$r].cElements,
  2026. rank: $e.cDims,
  2027. base: $e.rgsabound[$r].lLbound
  2028. ),
  2029. ")"
  2030. )
  2031. )
  2032. #case 0x3 ; VT_I4 | VT_ARRAY
  2033. (
  2034. #(
  2035. "safearray of I4 = [",
  2036. ; output the rank array
  2037. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2038. "](",
  2039. ; output the data elements
  2040. #array(
  2041. expr: ((signed int *)$e.pvData)[$i],
  2042. size: $e.rgsabound[$r].cElements,
  2043. rank: $e.cDims,
  2044. base: $e.rgsabound[$r].lLbound
  2045. ),
  2046. ")"
  2047. )
  2048. )
  2049. #case 0x4 ; VT_R4 | VT_ARRAY
  2050. (
  2051. #(
  2052. "safearray of R4 = [",
  2053. ; output the rank array
  2054. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2055. "](",
  2056. ; output the data elements
  2057. #array(
  2058. expr: ((float *)$e.pvData)[$i],
  2059. size: $e.rgsabound[$r].cElements,
  2060. rank: $e.cDims,
  2061. base: $e.rgsabound[$r].lLbound
  2062. ),
  2063. ")"
  2064. )
  2065. )
  2066. #case 0x5 ; VT_R8 | VT_ARRAY
  2067. (
  2068. #(
  2069. "safearray of R8 = [",
  2070. ; output the rank array
  2071. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2072. "](",
  2073. ; output the data elements
  2074. #array(
  2075. expr: ((double *)$e.pvData)[$i],
  2076. size: $e.rgsabound[$r].cElements,
  2077. rank: $e.cDims,
  2078. base: $e.rgsabound[$r].lLbound
  2079. ),
  2080. ")"
  2081. )
  2082. )
  2083. #case 0x6 ; VT_CY | VT_ARRAY
  2084. (
  2085. #(
  2086. "safearray of CY = [",
  2087. ; output the rank array
  2088. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2089. "](",
  2090. ; output the data elements
  2091. #array(
  2092. expr: ((CY *)$e.pvData)[$i],
  2093. size: $e.rgsabound[$r].cElements,
  2094. rank: $e.cDims,
  2095. base: $e.rgsabound[$r].lLbound
  2096. ),
  2097. ")"
  2098. )
  2099. )
  2100. #case 0x7 ; VT_DATE | VT_ARRAY
  2101. (
  2102. #(
  2103. "safearray of DATE = [",
  2104. ; output the rank array
  2105. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2106. "](",
  2107. ; output the data elements
  2108. #array(
  2109. expr: ((DATE *)$e.pvData)[$i],
  2110. size: $e.rgsabound[$r].cElements,
  2111. rank: $e.cDims,
  2112. base: $e.rgsabound[$r].lLbound
  2113. ),
  2114. ")"
  2115. )
  2116. )
  2117. #case 0x8 ; VT_BSTR | VT_ARRAY
  2118. (
  2119. #(
  2120. "safearray of BSTR = [",
  2121. ; output the rank array
  2122. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2123. "](",
  2124. ; output the data elements
  2125. #array(
  2126. expr: ((wchar_t **)$e.pvData)[$i],
  2127. size: $e.rgsabound[$r].cElements,
  2128. rank: $e.cDims,
  2129. base: $e.rgsabound[$r].lLbound
  2130. ),
  2131. ")"
  2132. )
  2133. )
  2134. #case 0xa ; VT_ERROR | VT_ARRAY
  2135. (
  2136. #(
  2137. "safearray of ERROR = [",
  2138. ; output the rank array
  2139. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2140. "](",
  2141. ; output the data elements
  2142. #array(
  2143. expr: ((long *)$e.pvData)[$i],
  2144. size: $e.rgsabound[$r].cElements,
  2145. rank: $e.cDims,
  2146. base: $e.rgsabound[$r].lLbound
  2147. ),
  2148. ")"
  2149. )
  2150. )
  2151. #case 0xb ; VT_BOOL | VT_ARRAY
  2152. (
  2153. #(
  2154. "safearray of BOOL = [",
  2155. ; output the rank array
  2156. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2157. "](",
  2158. ; output the data elements
  2159. #array(
  2160. expr: ((short *)$e.pvData)[$i],
  2161. size: $e.rgsabound[$r].cElements,
  2162. rank: $e.cDims,
  2163. base: $e.rgsabound[$r].lLbound
  2164. ),
  2165. ")"
  2166. )
  2167. )
  2168. #case 0xc ; VT_VARIANT | VT_ARRAY
  2169. (
  2170. #(
  2171. "safearray of VARIANT = [",
  2172. ; output the rank array
  2173. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2174. "](",
  2175. ; output the data elements
  2176. #array(
  2177. expr: ((tagVARIANT *)$e.pvData)[$i],
  2178. size: $e.rgsabound[$r].cElements,
  2179. rank: $e.cDims,
  2180. base: $e.rgsabound[$r].lLbound
  2181. ),
  2182. ")"
  2183. )
  2184. )
  2185. #case 0x10 ; VT_I1 | VT_ARRAY
  2186. (
  2187. #(
  2188. "safearray of I1 = [",
  2189. ; output the rank array
  2190. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2191. "](",
  2192. ; output the data elements
  2193. #array(
  2194. expr: ((signed char *)$e.pvData)[$i],
  2195. size: $e.rgsabound[$r].cElements,
  2196. rank: $e.cDims,
  2197. base: $e.rgsabound[$r].lLbound
  2198. ),
  2199. ")"
  2200. )
  2201. )
  2202. #case 0x11 ; VT_UI1 | VT_ARRAY
  2203. (
  2204. #(
  2205. "safearray of UI1 = [",
  2206. ; output the rank array
  2207. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2208. "](",
  2209. ; output the data elements
  2210. #array(
  2211. expr: ((unsigned char *)$e.pvData)[$i],
  2212. size: $e.rgsabound[$r].cElements,
  2213. rank: $e.cDims,
  2214. base: $e.rgsabound[$r].lLbound
  2215. ),
  2216. ")"
  2217. )
  2218. )
  2219. #case 0x12 ; VT_UI2 | VT_ARRAY
  2220. (
  2221. #(
  2222. "safearray of UI2 = [",
  2223. ; output the rank array
  2224. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2225. "](",
  2226. ; output the data elements
  2227. #array(
  2228. expr: ((unsigned short *)$e.pvData)[$i],
  2229. size: $e.rgsabound[$r].cElements,
  2230. rank: $e.cDims,
  2231. base: $e.rgsabound[$r].lLbound
  2232. ),
  2233. ")"
  2234. )
  2235. )
  2236. #case 0x13 ; VT_UI4 | VT_ARRAY
  2237. (
  2238. #(
  2239. "safearray of UI4 = [",
  2240. ; output the rank array
  2241. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2242. "](",
  2243. ; output the data elements
  2244. #array(
  2245. expr: ((unsigned int *)$e.pvData)[$i],
  2246. size: $e.rgsabound[$r].cElements,
  2247. rank: $e.cDims,
  2248. base: $e.rgsabound[$r].lLbound
  2249. ),
  2250. ")"
  2251. )
  2252. )
  2253. #case 0x14 ; VT_I8 | VT_ARRAY
  2254. (
  2255. #(
  2256. "safearray of I8 = [",
  2257. ; output the rank array
  2258. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2259. "](",
  2260. ; output the data elements
  2261. #array(
  2262. expr: ((signed __int64 *)$e.pvData)[$i],
  2263. size: $e.rgsabound[$r].cElements,
  2264. rank: $e.cDims,
  2265. base: $e.rgsabound[$r].lLbound
  2266. ),
  2267. ")"
  2268. )
  2269. )
  2270. #case 0x15 ; VT_UI8 | VT_ARRAY
  2271. (
  2272. #(
  2273. "safearray of UI8 = [",
  2274. ; output the rank array
  2275. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2276. "](",
  2277. ; output the data elements
  2278. #array(
  2279. expr: ((unsigned __int64 *)$e.pvData)[$i],
  2280. size: $e.rgsabound[$r].cElements,
  2281. rank: $e.cDims,
  2282. base: $e.rgsabound[$r].lLbound
  2283. ),
  2284. ")"
  2285. )
  2286. )
  2287. #case 0x16 ; VT_INT | VT_ARRAY
  2288. (
  2289. #(
  2290. "safearray of INT = [",
  2291. ; output the rank array
  2292. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2293. "](",
  2294. ; output the data elements
  2295. #array(
  2296. expr: ((int *)$e.pvData)[$i],
  2297. size: $e.rgsabound[$r].cElements,
  2298. rank: $e.cDims,
  2299. base: $e.rgsabound[$r].lLbound
  2300. ),
  2301. ")"
  2302. )
  2303. )
  2304. #case 0x17 ; VT_UINT | VT_ARRAY
  2305. (
  2306. #(
  2307. "safearray of UINT = [",
  2308. ; output the rank array
  2309. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2310. "](",
  2311. ; output the data elements
  2312. #array(
  2313. expr: ((unsigned *)$e.pvData)[$i],
  2314. size: $e.rgsabound[$r].cElements,
  2315. rank: $e.cDims,
  2316. base: $e.rgsabound[$r].lLbound
  2317. ),
  2318. ")"
  2319. )
  2320. )
  2321. #case 0x1e ; VT_LPSTR | VT_ARRAY
  2322. (
  2323. #(
  2324. "safearray of LPSTR = [",
  2325. ; output the rank array
  2326. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2327. "](",
  2328. ; output the data elements
  2329. #array(
  2330. expr: ((char **)$e.pvData)[$i],
  2331. size: $e.rgsabound[$r].cElements,
  2332. rank: $e.cDims,
  2333. base: $e.rgsabound[$r].lLbound
  2334. ),
  2335. ")"
  2336. )
  2337. )
  2338. #case 0x1f ; VT_LPWSTR | VT_ARRAY
  2339. (
  2340. #(
  2341. "safearray of LPWSTR = [",
  2342. ; output the rank array
  2343. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2344. "](",
  2345. ; output the data elements
  2346. #array(
  2347. expr: ((wchar_t **)$e.pvData)[$i],
  2348. size: $e.rgsabound[$r].cElements,
  2349. rank: $e.cDims,
  2350. base: $e.rgsabound[$r].lLbound
  2351. ),
  2352. ")"
  2353. )
  2354. )
  2355. #case 0x40 ; VT_FILETIME | VT_ARRAY
  2356. (
  2357. #(
  2358. "safearray of FILETIME = [",
  2359. ; output the rank array
  2360. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2361. "](",
  2362. ; output the data elements
  2363. #array(
  2364. expr: ((FILETIME *)$e.pvData)[$i],
  2365. size: $e.rgsabound[$r].cElements,
  2366. rank: $e.cDims,
  2367. base: $e.rgsabound[$r].lLbound
  2368. ),
  2369. ")"
  2370. )
  2371. )
  2372. #case 0x47 ; VT_CLIPDATA | VT_ARRAY
  2373. (
  2374. #(
  2375. "safearray of CLIPDATA = [",
  2376. ; output the rank array
  2377. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2378. "](",
  2379. ; output the data elements
  2380. #array(
  2381. expr: ((CLIPDATA *)$e.pvData)[$i],
  2382. size: $e.rgsabound[$r].cElements,
  2383. rank: $e.cDims,
  2384. base: $e.rgsabound[$r].lLbound
  2385. ),
  2386. ")"
  2387. )
  2388. )
  2389. #case 0x48 ; VT_CLSID | VT_ARRAY
  2390. (
  2391. #(
  2392. "safearray of CLSID = [",
  2393. ; output the rank array
  2394. #array( expr: $e.rgsabound[$i].cElements, size: $e.cDims),
  2395. "](",
  2396. ; output the data elements
  2397. #array(
  2398. expr: ((CLSID *)$e.pvData)[$i],
  2399. size: $e.rgsabound[$r].cElements,
  2400. rank: $e.cDims,
  2401. base: $e.rgsabound[$r].lLbound
  2402. ),
  2403. ")"
  2404. )
  2405. )
  2406. )
  2407. #elif ($e.fFeatures & 0x0100) ; FADF_BSTR
  2408. (
  2409. #("safearray of BSTR = ",#array(expr: $e.rgsabound[$i].cElements, size: $e.cDims) : #("[",$e,"]"), "(", #array(expr: ((wchar_t * *)$e.pvData)[$i], size: $e.rgsabound[$r].cElements, rank: $e.cDims, base: $e.rgsabound[$r].lLbound ), ")")
  2410. )
  2411. #elif ($e.fFeatures & 0x0200) ; FADF_UNKNOWN
  2412. (
  2413. #("safearray of IUnknown* = [",#array(expr: $e.rgsabound[$i].cElements, size: $e.cDims), "](", #array(expr: ((IUnknown * *)$e.pvData)[$i], size: $e.rgsabound[$r].cElements, rank: $e.cDims, base: $e.rgsabound[$r].lLbound ), ")")
  2414. )
  2415. #elif ($e.fFeatures & 0x0400) ; FADF_DISPATCH
  2416. (
  2417. #("safearray of IDispatch* = [",#array(expr: $e.rgsabound[$i].cElements, size: $e.cDims), "](", #array(expr: ((IDispatch * *)$e.pvData)[$i], size: $e.rgsabound[$r].cElements, rank: $e.cDims, base: $e.rgsabound[$r].lLbound ), ")")
  2418. )
  2419. #elif ($e.fFeatures & 0x0800) ; FADF_VARIANT
  2420. (
  2421. #("safearray of VARIANT = ",#array(expr: $e.rgsabound[$i].cElements, size: $e.cDims) : #("[",$e,"]"), "(", #array(expr: ((tagVARIANT *)$e.pvData)[$i], size: $e.rgsabound[$r].cElements, rank: $e.cDims, base: $e.rgsabound[$r].lLbound ), ")")
  2422. )
  2423. )
  2424. children
  2425. (
  2426. #( ;[actual members]: [$e,!],
  2427. #if ($e.fFeatures & 0x0080) ; FADF_HAVEVARTYPE
  2428. (
  2429. #switch( ((unsigned *)&($e))[-1] ) ; for some reason the VT field is before the SAFEARRAY struct
  2430. #case 2 ; VT_I2|VT_ARRAY
  2431. (
  2432. #array(
  2433. expr: ((signed short *)$e.pvData)[$i],
  2434. size: $e.rgsabound[$r].cElements,
  2435. rank: $e.cDims,
  2436. base: $e.rgsabound[$r].lLbound
  2437. )
  2438. )
  2439. #case 3 ; VT_I4|VT_ARRAY
  2440. (
  2441. #array(
  2442. expr: ((signed int *)$e.pvData)[$i],
  2443. size: $e.rgsabound[$r].cElements,
  2444. rank: $e.cDims,
  2445. base: $e.rgsabound[$r].lLbound
  2446. )
  2447. )
  2448. #case 4 ; VT_R4|VT_ARRAY
  2449. (
  2450. #array(
  2451. expr: ((float *)$e.pvData)[$i],
  2452. size: $e.rgsabound[$r].cElements,
  2453. rank: $e.cDims,
  2454. base: $e.rgsabound[$r].lLbound
  2455. )
  2456. )
  2457. #case 5 ; VT_R8|VT_ARRAY
  2458. (
  2459. #array(
  2460. expr: ((double *)$e.pvData)[$i],
  2461. size: $e.rgsabound[$r].cElements,
  2462. rank: $e.cDims,
  2463. base: $e.rgsabound[$r].lLbound
  2464. )
  2465. )
  2466. #case 0x10 ; VT_I1|VT_ARRAY
  2467. (
  2468. #array(
  2469. expr: ((signed char *)$e.pvData)[$i],
  2470. size: $e.rgsabound[$r].cElements,
  2471. rank: $e.cDims,
  2472. base: $e.rgsabound[$r].lLbound
  2473. )
  2474. )
  2475. #case 0x11 ; VT_UI1|VT_ARRAY
  2476. (
  2477. #array(
  2478. expr: ((unsigned char *)$e.pvData)[$i],
  2479. size: $e.rgsabound[$r].cElements,
  2480. rank: $e.cDims,
  2481. base: $e.rgsabound[$r].lLbound
  2482. )
  2483. )
  2484. #case 0x12 ; VT_UI2|VT_ARRAY
  2485. (
  2486. #array(
  2487. expr: ((unsigned short *)$e.pvData)[$i],
  2488. size: $e.rgsabound[$r].cElements,
  2489. rank: $e.cDims,
  2490. base: $e.rgsabound[$r].lLbound
  2491. )
  2492. )
  2493. #case 0x13 ; VT_UI4|VT_ARRAY
  2494. (
  2495. #array(
  2496. expr: ((unsigned int *)$e.pvData)[$i],
  2497. size: $e.rgsabound[$r].cElements,
  2498. rank: $e.cDims,
  2499. base: $e.rgsabound[$r].lLbound
  2500. )
  2501. )
  2502. #case 0x14 ; VT_I8|VT_ARRAY
  2503. (
  2504. #array(
  2505. expr: ((signed __int64 *)$e.pvData)[$i],
  2506. size: $e.rgsabound[$r].cElements,
  2507. rank: $e.cDims,
  2508. base: $e.rgsabound[$r].lLbound
  2509. )
  2510. )
  2511. #case 0x15 ; VT_UI8|VT_ARRAY
  2512. (
  2513. #array(
  2514. expr: ((unsigned __int64 *)$e.pvData)[$i],
  2515. size: $e.rgsabound[$r].cElements,
  2516. rank: $e.cDims,
  2517. base: $e.rgsabound[$r].lLbound
  2518. )
  2519. )
  2520. #case 0x1e ; VT_LPSTR|VT_ARRAY
  2521. (
  2522. #array(
  2523. expr: ((char * *)$e.pvData)[$i],
  2524. size: $e.rgsabound[$r].cElements,
  2525. rank: $e.cDims,
  2526. base: $e.rgsabound[$r].lLbound
  2527. )
  2528. )
  2529. #case 0x1f ; VT_LPWSTR|VT_ARRAY
  2530. (
  2531. #array(
  2532. expr: ((wchar_t **)$e.pvData)[$i],
  2533. size: $e.rgsabound[$r].cElements,
  2534. rank: $e.cDims,
  2535. base: $e.rgsabound[$r].lLbound
  2536. )
  2537. )
  2538. #case 0xc ; VT_VARIANT|VT_ARRAY
  2539. (
  2540. #array(
  2541. expr: ((tagVARIANT *)$e.pvData)[$i],
  2542. size: $e.rgsabound[$r].cElements,
  2543. rank: $e.cDims,
  2544. base: $e.rgsabound[$r].lLbound
  2545. )
  2546. )
  2547. #case 0xb ; VT_BOOL|VT_ARRAY
  2548. (
  2549. #array(
  2550. expr: ((short *)$e.pvData)[$i],
  2551. size: $e.rgsabound[$r].cElements,
  2552. rank: $e.cDims,
  2553. base: $e.rgsabound[$r].lLbound
  2554. )
  2555. )
  2556. #case 0xa ; VT_ERROR|VT_ARRAY
  2557. (
  2558. #array(
  2559. expr: ((long *)$e.pvData)[$i],
  2560. size: $e.rgsabound[$r].cElements,
  2561. rank: $e.cDims,
  2562. base: $e.rgsabound[$r].lLbound
  2563. )
  2564. )
  2565. #case 6 ; VT_CY|VT_ARRAY
  2566. (
  2567. #array(
  2568. expr: ((CY *)$e.pvData)[$i],
  2569. size: $e.rgsabound[$r].cElements,
  2570. rank: $e.cDims,
  2571. base: $e.rgsabound[$r].lLbound
  2572. )
  2573. )
  2574. #case 7 ; VT_DATE|VT_ARRAY
  2575. (
  2576. #array(
  2577. expr: ((DATE *)$e.pvData)[$i],
  2578. size: $e.rgsabound[$r].cElements,
  2579. rank: $e.cDims,
  2580. base: $e.rgsabound[$r].lLbound
  2581. )
  2582. )
  2583. #case 0x40 ; VT_FILETIME|VT_ARRAY
  2584. (
  2585. #array(
  2586. expr: ((FILETIME *)$e.pvData)[$i],
  2587. size: $e.rgsabound[$r].cElements,
  2588. rank: $e.cDims,
  2589. base: $e.rgsabound[$r].lLbound
  2590. )
  2591. )
  2592. #case 0x48 ; VT_CLSID|VT_ARRAY
  2593. (
  2594. #array(
  2595. expr: ((CLSID *)$e.pvData)[$i],
  2596. size: $e.rgsabound[$r].cElements,
  2597. rank: $e.cDims,
  2598. base: $e.rgsabound[$r].lLbound
  2599. )
  2600. )
  2601. #case 0x47 ; VT_CF|VT_ARRAY
  2602. (
  2603. #array(
  2604. expr: ((CLIPDATA *)$e.pvData)[$i],
  2605. size: $e.rgsabound[$r].cElements,
  2606. rank: $e.cDims,
  2607. base: $e.rgsabound[$r].lLbound
  2608. )
  2609. )
  2610. #case 8 ; VT_BSTR|VT_ARRAY
  2611. (
  2612. #array(
  2613. expr: ((wchar_t * *)$e.pvData)[$i],
  2614. size: $e.rgsabound[$r].cElements,
  2615. rank: $e.cDims,
  2616. base: $e.rgsabound[$r].lLbound
  2617. )
  2618. )
  2619. #case 0x16 ; VT_INT|VT_ARRAY
  2620. (
  2621. #array(
  2622. expr: ((int *)$e.pvData)[$i],
  2623. size: $e.rgsabound[$r].cElements,
  2624. rank: $e.cDims,
  2625. base: $e.rgsabound[$r].lLbound
  2626. )
  2627. )
  2628. #case 0x17 ; VT_UINT|VT_ARRAY
  2629. (
  2630. #array(
  2631. expr: ((unsigned int*)$e.pvData)[$i],
  2632. size: $e.rgsabound[$r].cElements,
  2633. rank: $e.cDims,
  2634. base: $e.rgsabound[$r].lLbound
  2635. )
  2636. )
  2637. #default
  2638. (
  2639. #([actual members]: [$e,!])
  2640. )
  2641. #except
  2642. (
  2643. #([actual members]: [$e,!])
  2644. )
  2645. )
  2646. #elif ($e.fFeatures & 0x0100) ; FADF_BSTR
  2647. (
  2648. #array(expr: ((wchar_t * *)$e.pvData)[$i], size: $e.rgsabound[$r].cElements, rank: $e.cDims, base: $e.rgsabound[$r].lLbound )
  2649. )
  2650. #elif ($e.fFeatures & 0x0200) ; FADF_UNKNOWN
  2651. (
  2652. #array(expr: ((IUnknown * *)$e.pvData)[$i], size: $e.rgsabound[$r].cElements, rank: $e.cDims, base: $e.rgsabound[$r].lLbound )
  2653. )
  2654. #elif ($e.fFeatures & 0x0400) ; FADF_DISPATCH
  2655. (
  2656. #array(expr: ((IDispatch * *)$e.pvData)[$i], size: $e.rgsabound[$r].cElements, rank: $e.cDims, base: $e.rgsabound[$r].lLbound )
  2657. )
  2658. #elif ($e.fFeatures & 0x0800) ; FADF_VARIANT
  2659. (
  2660. #array(expr: ((tagVARIANT *)$e.pvData)[$i], size: $e.rgsabound[$r].cElements, rank: $e.cDims, base: $e.rgsabound[$r].lLbound )
  2661. )
  2662. )
  2663. )
  2664. }
  2665. tagPROPVARIANT|tagVARIANT|PROPVARIANT|VARIANT{
  2666. preview(
  2667. #switch ($e.vt)
  2668. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2669. ;; Base Types ;;
  2670. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2671. #case 0 ( #("Empty") ) ; VT_EMPTY
  2672. #case 1 ( #("NULL") ) ; VT_NULL
  2673. #case 2 ( #("I2 = ", $e.iVal) ) ; VT_I2
  2674. #case 3 ( #("I4 = ", $e.lVal) ) ; VT_I4
  2675. #case 4 ( #("R4 = ", $e.fltVal) ) ; VT_R4
  2676. #case 5 ( #("R8 = ", $e.dblVal) ) ; VT_R8
  2677. #case 6 ( #("CY = ", $e.cyVal) ) ; VT_CY
  2678. #case 7 ( #("DATE = ", $e.date) ) ; VT_DATE
  2679. #case 8 ( #("BSTR = ", $e.bstrVal) ) ; VT_BSTR
  2680. #case 9 ( #("DISPATCH = ", $e.pdispVal) ) ; VT_DISPATCH
  2681. #case 10 ( #("ERROR = ", $e.scode) ) ; VT_ERROR
  2682. #case 0xB ( #("BOOL = ", $e.boolVal) ) ; VT_BOOL
  2683. #case 0xC ( #("VARIANT ") ) ; VT_VARIANT
  2684. #case 0xD ( #("UNKNOWN = ", $e.punkVal) ) ; VT_UNKOWN
  2685. #case 0xE ( #("DECIMAL = ", $e.decVal) ) ; VT_DECIMAL
  2686. #case 0x10 ( #("I1 = ", $e.cVal) ) ; VT_I1
  2687. #case 0x11 ( #("UI1 = ", $e.bVal) ) ; VT_UI1
  2688. #case 0x12 ( #("UI2 = ", $e.uiVal) ) ; VT_UI2
  2689. #case 0x13 ( #("UI4 = ", $e.ulVal) ) ; VT_UI4
  2690. #case 0x14 ( #("I8 = ", *(__int64*)&$e.dblVal) ) ; VT_I8
  2691. #case 0x15 ( #("UI8 = ", *(unsigned __int64*)&$e.dblVal) ) ; VT_UI8
  2692. #case 0x16 ( #("INT = ", $e.intVal) ) ; VT_INT
  2693. #case 0x17 ( #("UINT = ", $e.uintVal) ) ; VT_UINT
  2694. #case 0x18 ( #("VOID ") ) ; VT_VOID
  2695. #case 0x19 ( #("HRESULT ") ) ; VT_HRESULT
  2696. #case 0x1A ( #("PTR ") ) ; VT_PTR
  2697. #case 0x1B ( #("SAFEARRAY ") ) ; VT_SAFEARRAY
  2698. #case 0x1C ( #("CARRAY ") ) ; VT_CARRAY
  2699. #case 0x1D ( #("USERDEFINED ") ) ; VT_USERDEFINED
  2700. #case 0x1E ( #("LPSTR = ", $e.pszVal) ) ; VT_LPSTR
  2701. #case 0x1F ( #("LPWSTR = ", $e.pwszVal) ) ; VT_LPWSTR
  2702. #case 0x24 ( #("RECORD ") ) ; VT_RECORD
  2703. #case 0x26 ( #("UINT_PTR ") ) ; VT_UINT_PTR
  2704. #case 0x40 ( #("FILETIME = ", $e.filetime) ) ; VT_FILETIME
  2705. #case 0x42 ( #("STREAM = ", $e.pStream) ) ; VT_STREAM
  2706. #case 0x43 ( #("STORAGE = ", $e.pStorage) ) ; VT_STORAGE
  2707. #case 0x44 ( #("STREAMED_OBJECT = ", $e.pStream) ) ; VT_STREAMED_OBJECT
  2708. #case 0x45 ( #("STORED_OBJECT = ", $e.pStorage) ) ; VT_STORED_OBJECT
  2709. #case 0x46 ( #("BLOB_OBJECT = ", $e.blob ) ) ; VT_BLOB_OBJECT
  2710. #case 0x47 ( #("CF = ", $e.pclipdata) ) ; VT_CF
  2711. #case 0x48 ( #("CLSID = ", $e.puuid) ) ; VT_CLSID
  2712. #case 0x49 ( #("VERSIONED_STREAM = ", $e.pVersionedStream) ) ; VT_VERSIONED_STREAM
  2713. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2714. ;; Vector types ;;
  2715. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2716. #case 0x1002 ( #("vector of I2 = ", $e.cai) ) ; VT_I2|VT_VECTOR
  2717. #case 0x1003 ( #("vector of I4 = ", $e.cal) ) ; VT_I4|VT_VECTOR
  2718. #case 0x1004 ( #("vector of R4 = ", $e.caflt) ) ; VT_R4|VT_VECTOR
  2719. #case 0x1005 ( #("vector of R8 = ", $e.cadbl) ) ; VT_R8|VT_VECTOR
  2720. #case 0x1010 ( #("vector of I1 = ", $e.cac) ) ; VT_I1|VT_VECTOR
  2721. #case 0x1011 ( #("vector of UI1 = ", $e.caub) ) ; VT_UI1|VT_VECTOR
  2722. #case 0x1012 ( #("vector of UI2 = ", $e.caui) ) ; VT_UI2|VT_VECTOR
  2723. #case 0x1013 ( #("vector of UI4 = ", $e.caul) ) ; VT_UI4|VT_VECTOR
  2724. #case 0x1014 ( #("vector of I8 = ", $e.cah) ) ; VT_I8|VT_VECTOR
  2725. #case 0x1015 ( #("vector of UI8 = ", $e.cauh) ) ; VT_UI8|VT_VECTOR
  2726. #case 0x101E ( #("vector of LPSTR = ", $e.calpstr) ) ; VT_LPSTR|VT_VECTOR
  2727. #case 0x101F ( #("vector of LPWSTR = ", $e.calpwstr) ) ; VT_LPWSTR|VT_VECTOR
  2728. #case 0x100C ( #("vector of VARIANT ", $e.capropvar) ) ; VT_VARIANT|VT_VECTOR
  2729. #case 0x100B ( #("vector of BOOL = ", $e.cabool) ) ; VT_BOOL|VT_VECTOR
  2730. #case 0x100A ( #("vector of ERROR = ", $e.cascode) ) ; VT_ERROR|VT_VECTOR
  2731. #case 0x1006 ( #("vector of CY = ", $e.cacy) ) ; VT_CY|VT_VECTOR
  2732. #case 0x1007 ( #("vector of DATE = ", $e.cadate) ) ; VT_DATE|VT_VECTOR
  2733. #case 0x1040 ( #("vector of FILETIME = ", $e.cafiletime) ) ; VT_FILETIME|VT_VECTOR
  2734. #case 0x1048 ( #("vector of CLSID = ", $e.cauuid) ) ; VT_CLSID|VT_VECTOR
  2735. #case 0x1047 ( #("vector of CF = ", $e.caclipdata) ) ; VT_CF|VT_VECTOR
  2736. #case 0x1008 ( #("vector of BSTR = ", $e.cabstr) ) ; VT_BSTR|VT_VECTOR
  2737. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2738. ;; Byref Types ;;
  2739. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2740. #case 0x4016 ( #("byref of INT = ", $e.pintVal) ) ; VT_INT|VT_BYREF
  2741. #case 0x4017 ( #("byref of UINT = ", $e.puintVal) ) ; VT_UINT|VT_BYREF
  2742. #case 0x4002 ( #("byref of I2 = ", $e.piVal) ) ; VT_I2|VT_BYREF
  2743. #case 0x4003 ( #("byref of I4 = ", $e.plVal) ) ; VT_I4|VT_BYREF
  2744. #case 0x4004 ( #("byref of R4 = ", $e.pfltVal) ) ; VT_R4|VT_BYREF
  2745. #case 0x4005 ( #("byref of R8 = ", $e.pdblVal) ) ; VT_R8|VT_BYREF
  2746. #case 0x4010 ( #("byref of I1 = ", $e.pcVal) ) ; VT_I1|VT_BYREF
  2747. #case 0x4011 ( #("byref of UI1 = ", $e.pbVal) ) ; VT_UI1|VT_BYREF
  2748. #case 0x4012 ( #("byref of UI2 = ", $e.puiVal) ) ; VT_UI2|VT_BYREF
  2749. #case 0x4013 ( #("byref of UI4 = ", $e.pulVal) ) ; VT_UI4|VT_BYREF
  2750. #case 0x4014 ( #("byref of I8 = ", (__int64*)$e.pdblVal) ) ; VT_I8|VT_BYREF
  2751. #case 0x4015 ( #("byref of UI8 = ", (unsigned __int64*)$e.pudblVal) ) ; VT_UI8|VT_BYREF
  2752. #case 0x400C ( #("byref of VARIANT ", $e.pvarVal) ) ; VT_VARIANT|VT_BYREF
  2753. #case 0x400B ( #("byref of BOOL = ", $e.pboolVal) ) ; VT_BOOL|VT_BYREF
  2754. #case 0x400A ( #("byref of ERROR = ", $e.pscode) ) ; VT_ERROR|VT_BYREF
  2755. #case 0x4006 ( #("byref of CY = ", $e.pcyVal) ) ; VT_CY|VT_BYREF
  2756. #case 0x4007 ( #("byref of DATE = ", $e.pdate) ) ; VT_DATE|VT_BYREF
  2757. #case 0x4008 ( #("byref of BSTR = ", $e.pbstrVal) ) ; VT_BSTR|VT_BYREF
  2758. #case 0x400E ( #("byref of DECIMAL = ", $e.pdecVal) ) ; VT_DECIMAL|VT_BYREF
  2759. #case 0x400D ( #("byref of UNKNOWN = ", $e.ppunkVal) ) ; VT_UNKOWN|VT_BYREF
  2760. #case 0x4009 ( #("byref of DISPATCH = ", $e.ppdispVal) ) ; VT_DISPATCH|VT_BYREF
  2761. #case 0x6000 ( #("byref of ARRAY = ", $e.pparray) ) ; VT_ARRAY|VT_BYREF
  2762. #default
  2763. (
  2764. #if ($e.vt & 0x2000) ( $e.parray)
  2765. #else ( #("Unknown vt type = ", $e.vt))
  2766. )
  2767. )
  2768. children(
  2769. #(
  2770. vt: $e.vt,
  2771. #switch ($e.vt)
  2772. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2773. ;; Base Types ;;
  2774. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2775. #case 0x2 ( #(I2 : $e.iVal) ) ; VT_I2
  2776. #case 0x3 ( #(I4 : $e.lVal) ) ; VT_I4
  2777. #case 0x4 ( #(R4 : $e.fltVal) ) ; VT_R4
  2778. #case 0x5 ( #(R8 : $e.dblVal) ) ; VT_R8
  2779. #case 0x6 ( #(CY : $e.cyVal) ) ; VT_CY
  2780. #case 0x7 ( #(DATE : $e.date) ) ; VT_DATE
  2781. #case 0x8 ( #(BSTR : $e.bstrVal) ) ; VT_BSTR
  2782. #case 0x9 ( #(DISPATCH : $e.pdispVal) ) ; VT_DISPATCH
  2783. #case 0xA ( #(ERROR : $e.scode) ) ; VT_ERROR
  2784. #case 0xB ( #(BOOL : $e.boolVal) ) ; VT_BOOL
  2785. #case 0xD ( #(UNKNOWN : $e.punkVal) ) ; VT_UNKOWN
  2786. #case 0xE ( #(DECIMAL : $e.decVal) ) ; VT_DECIMAL
  2787. #case 0x10 ( #(I1 : $e.cVal) ) ; VT_I1
  2788. #case 0x11 ( #(UI1 : $e.bVal) ) ; VT_UI1
  2789. #case 0x12 ( #(UI2 : $e.uiVal) ) ; VT_UI2
  2790. #case 0x13 ( #(UI4 : $e.ulVal) ) ; VT_UI4
  2791. #case 0x14 ( #(I8 : *(__int64*)&$e.dblVal) ) ; VT_I8
  2792. #case 0x15 ( #(UI8 : *(unsigned __int64*)&$e.dblVal) ) ; VT_UI8
  2793. #case 0x16 ( #(INT : $e.intVal) ) ; VT_INT
  2794. #case 0x17 ( #(UINT : $e.uintVal) ) ; VT_UINT
  2795. #case 0x1E ( #(LPSTR : $e.pszVal) ) ; VT_LPSTR
  2796. #case 0x1F ( #(LPWSTR : $e.pwszVal) ) ; VT_LPWSTR
  2797. #case 0x40 ( #(FILETIME : $e.filetime) ) ; VT_FILETIME
  2798. #case 0x42 ( #(STREAM : $e.pStream) ) ; VT_STREAM
  2799. #case 0x43 ( #(STORAGE : $e.pStorage) ) ; VT_STORAGE
  2800. #case 0x44 ( #(STREAMED_OBJECT : $e.pStream) ) ; VT_STREAMED_OBJECT
  2801. #case 0x45 ( #(STORED_OBJECT : $e.pStorage) ) ; VT_STORED_OBJECT
  2802. #case 0x46 ( #(BLOB_OBJECT : $e.blob ) ) ; VT_BLOB_OBJECT
  2803. #case 0x47 ( #(CF : $e.pclipdata) ) ; VT_CF
  2804. #case 0x48 ( #(CLSID : $e.puuid) ) ; VT_CLSID
  2805. #case 0x49 ( #(VERSIONED_STREAM : $e.pVersionedStream) ) ; VT_VERSIONED_STREAM
  2806. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2807. ;; Vector types ;;
  2808. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2809. #case 0x1002 ( #(vector of I2 : $e.cai) ) ; VT_I2|VT_VECTOR
  2810. #case 0x1003 ( #(vector of I4 : $e.cal) ) ; VT_I4|VT_VECTOR
  2811. #case 0x1004 ( #(vector of R4 : $e.caflt) ) ; VT_R4|VT_VECTOR
  2812. #case 0x1005 ( #(vector of R8 : $e.cadbl) ) ; VT_R8|VT_VECTOR
  2813. #case 0x1010 ( #(vector of I1 : $e.cac) ) ; VT_I1|VT_VECTOR
  2814. #case 0x1011 ( #(vector of UI1 : $e.caub) ) ; VT_UI1|VT_VECTOR
  2815. #case 0x1012 ( #(vector of UI2 : $e.caui) ) ; VT_UI2|VT_VECTOR
  2816. #case 0x1013 ( #(vector of UI4 : $e.caul) ) ; VT_UI4|VT_VECTOR
  2817. #case 0x1014 ( #(vector of I8 : $e.cah) ) ; VT_I8|VT_VECTOR
  2818. #case 0x1015 ( #(vector of UI8 : $e.cauh) ) ; VT_UI8|VT_VECTOR
  2819. #case 0x101E ( #(vector of LPSTR : $e.calpstr) ) ; VT_LPSTR|VT_VECTOR
  2820. #case 0x101F ( #(vector of LPWSTR : $e.calpwstr) ) ; VT_LPWSTR|VT_VECTOR
  2821. #case 0x100C ( #(vector of VARIANT : $e.capropvar) ) ; VT_VARIANT|VT_VECTOR
  2822. #case 0x100B ( #(vector of BOOL : $e.cabool) ) ; VT_BOOL|VT_VECTOR
  2823. #case 0x100A ( #(vector of ERROR : $e.cascode) ) ; VT_ERROR|VT_VECTOR
  2824. #case 0x1006 ( #(vector of CY : $e.cacy) ) ; VT_CY|VT_VECTOR
  2825. #case 0x1007 ( #(vector of DATE : $e.cadate) ) ; VT_DATE|VT_VECTOR
  2826. #case 0x1040 ( #(vector of FILETIME : $e.cafiletime) ) ; VT_FILETIME|VT_VECTOR
  2827. #case 0x1048 ( #(vector of CLSID : $e.cauuid) ) ; VT_CLSID|VT_VECTOR
  2828. #case 0x1047 ( #(vector of CF : $e.caclipdata) ) ; VT_CF|VT_VECTOR
  2829. #case 0x1008 ( #(vector of BSTR : $e.cabstr) ) ; VT_BSTR|VT_VECTOR
  2830. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2831. ;; Byref Types ;;
  2832. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2833. #case 0x4016 ( #(byref of INT : $e.pintVal) ) ; VT_INT|VT_BYREF
  2834. #case 0x4017 ( #(byref of UINT : $e.puintVal) ) ; VT_UINT|VT_BYREF
  2835. #case 0x4002 ( #(byref of I2 : $e.piVal) ) ; VT_I2|VT_BYREF
  2836. #case 0x4003 ( #(byref of I4 : $e.plVal) ) ; VT_I4|VT_BYREF
  2837. #case 0x4004 ( #(byref of R4 : $e.pfltVal) ) ; VT_R4|VT_BYREF
  2838. #case 0x4005 ( #(byref of R8 : $e.pdblVal) ) ; VT_R8|VT_BYREF
  2839. #case 0x4010 ( #(byref of I1 : $e.pcVal) ) ; VT_I1|VT_BYREF
  2840. #case 0x4011 ( #(byref of UI1 : $e.pbVal) ) ; VT_UI1|VT_BYREF
  2841. #case 0x4012 ( #(byref of UI2 : $e.puiVal) ) ; VT_UI2|VT_BYREF
  2842. #case 0x4013 ( #(byref of UI4 : $e.pulVal) ) ; VT_UI4|VT_BYREF
  2843. #case 0x4014 ( #(byref of I8 : (__int64*)$e.pdblVal) ) ; VT_I8|VT_BYREF
  2844. #case 0x4015 ( #(byref of UI8 : (unsigned __int64*)$e.pdblVal) ) ; VT_UI8|VT_BYREF
  2845. #case 0x400C ( #(byref of VARIANT : $e.pvarVal) ) ; VT_VARIANT|VT_BYREF
  2846. #case 0x400B ( #(byref of BOOL : $e.pboolVal) ) ; VT_BOOL|VT_BYREF
  2847. #case 0x400A ( #(byref of ERROR : $e.pscode) ) ; VT_ERROR|VT_BYREF
  2848. #case 0x4006 ( #(byref of CY : $e.pcyVal) ) ; VT_CY|VT_BYREF
  2849. #case 0x4007 ( #(byref of DATE : $e.pdate) ) ; VT_DATE|VT_BYREF
  2850. #case 0x4008 ( #(byref of BSTR : $e.pbstrVal) ) ; VT_BSTR|VT_BYREF
  2851. #case 0x400E ( #(byref of DECIMAL : $e.pdecVal) ) ; VT_DECIMAL|VT_BYREF
  2852. #case 0x400D ( #(byref of UNKNOWN : $e.ppunkVal) ) ; VT_UNKOWN|VT_BYREF
  2853. #case 0x4009 ( #(byref of DISPATCH : $e.ppdispVal) ) ; VT_DISPATCH|VT_BYREF
  2854. #case 0x6000 ( #(byref of ARRAY : $e.pparray) ) ; VT_ARRAY|VT_BYREF
  2855. ; the following are either empty or invalid vt values for a variant
  2856. ; #case 0 ( #(Empty :) ) ; VT_EMPTY
  2857. ; #case 0x1 ( #(NULL :) ) ; VT_NULL
  2858. ; #case 0xC ( #(VARIANT :) ) ; VT_VARIANT
  2859. ; #case 0x18 ( #(VOID :) ) ; VT_VOID
  2860. ; #case 0x19 ( #(HRESULT :) ) ; VT_HRESULT
  2861. ; #case 0x1A ( #(PTR :) ) ; VT_PTR
  2862. ; #case 0x1B ( #(SAFEARRAY :) ) ; VT_SAFEARRAY
  2863. ; #case 0x1C ( #(CARRAY :) ) ; VT_CARRAY
  2864. ; #case 0x1D ( #(USERDEFINED :) ) ; VT_USERDEFINED
  2865. ; #case 0x24 ( #(RECORD :) ) ; VT_RECORD
  2866. ; #case 0x26 ( #(UINT_PTR :) ) ; VT_UINT_PTR
  2867. #default
  2868. (
  2869. #if ($e.vt & 0x2000 )
  2870. ( #(safearray: $e.parray))
  2871. #else
  2872. (
  2873. #(
  2874. [raw members]: [$e,!] ; unformatted data members
  2875. )
  2876. )
  2877. )
  2878. #except
  2879. (
  2880. #(
  2881. [raw members]: [$e,!] ; unformatted data members
  2882. )
  2883. )
  2884. )
  2885. )
  2886. }
  2887. ; Visualizers for data structures in namespace Concurrency
  2888. ;------------------------------------------------------------------------------
  2889. ; Concurrency::message from <agents.h>
  2890. ;------------------------------------------------------------------------------
  2891. Concurrency::message<*>{
  2892. preview (
  2893. #(
  2894. $e.payload
  2895. )
  2896. )
  2897. children (
  2898. #(
  2899. #(payload: $e.payload),
  2900. #([msg_id]: $e._M_id)
  2901. )
  2902. )
  2903. }
  2904. ;------------------------------------------------------------------------------
  2905. ; Concurrency::multi_link_registry from <agents.h>
  2906. ;------------------------------------------------------------------------------
  2907. Concurrency::multi_link_registry<*>{
  2908. preview (
  2909. #(
  2910. "[",
  2911. $e._M_vector._M_index,
  2912. "](",
  2913. #array(
  2914. expr: *($e._M_vector._M_array[$i]),
  2915. size: $e._M_vector._M_index
  2916. ),
  2917. ")"
  2918. )
  2919. )
  2920. children (
  2921. #(
  2922. #([size]: $e._M_vector._M_index),
  2923. #array(
  2924. expr: *($e._M_vector._M_array[$i]),
  2925. size: $e._M_vector._M_index
  2926. )
  2927. )
  2928. )
  2929. }
  2930. ;------------------------------------------------------------------------------
  2931. ; Concurrency::details::_Queue from <agents.h>
  2932. ;------------------------------------------------------------------------------
  2933. Concurrency::details::_Queue<*>{
  2934. preview (
  2935. #(
  2936. "[",
  2937. $e._M_count,
  2938. "](",
  2939. #list(
  2940. head: $e._M_pHead,
  2941. next: _M_pNext,
  2942. size: _M_count
  2943. ),
  2944. ")"
  2945. )
  2946. )
  2947. children (
  2948. #(
  2949. #([size]: $e._M_count),
  2950. #list(
  2951. head: $e._M_pHead,
  2952. next: _M_pNext,
  2953. size: _M_count
  2954. )
  2955. )
  2956. )
  2957. }
  2958. ;------------------------------------------------------------------------------
  2959. ; Concurrency::unbounded_buffer from <agents.h>
  2960. ;------------------------------------------------------------------------------
  2961. Concurrency::unbounded_buffer<*>{
  2962. preview (
  2963. #(
  2964. $e._M_messageBuffer
  2965. )
  2966. )
  2967. children (
  2968. #(
  2969. #(unprocessed_messages: $e._M_messageProcessor._M_queuedMessages._M_queue),
  2970. #(messages: $e._M_messageBuffer),
  2971. #(message_filter: *($e._M_pFilter)),
  2972. #(linked_sources: $e._M_connectedSources._M_links),
  2973. #(linked_targets: $e._M_connectedTargets),
  2974. #(reserving_target: *($e._M_pReservedFor)),
  2975. #(Scheduler: *($e._M_messageProcessor._M_pScheduler)),
  2976. #(ScheduleGroup: *($e._M_messageProcessor._M_pScheduleGroup))
  2977. )
  2978. )
  2979. }
  2980. ;------------------------------------------------------------------------------
  2981. ; Concurrency::overwrite_buffer from <agents.h>
  2982. ;------------------------------------------------------------------------------
  2983. Concurrency::overwrite_buffer<*>{
  2984. preview (
  2985. #(
  2986. $e._M_pMessage
  2987. )
  2988. )
  2989. children (
  2990. #(
  2991. #(value: *($e._M_pMessage)),
  2992. #(unprocessed_messages: $e._M_messageProcessor._M_queuedMessages._M_queue),
  2993. #(message_filter: *($e._M_pFilter)),
  2994. #(linked_sources: $e._M_connectedSources._M_links),
  2995. #(linked_targets: $e._M_connectedTargets),
  2996. #(reserving_target: *($e._M_pReservedFor)),
  2997. #(reserved_message: *($e._M_pReservedMessage)),
  2998. #(Scheduler: *($e._M_messageProcessor._M_pScheduler)),
  2999. #(ScheduleGroup: *($e._M_messageProcessor._M_pScheduleGroup))
  3000. )
  3001. )
  3002. }
  3003. ;------------------------------------------------------------------------------
  3004. ; Concurrency::single_assignment from <agents.h>
  3005. ;------------------------------------------------------------------------------
  3006. Concurrency::single_assignment<*>{
  3007. preview (
  3008. #(
  3009. $e._M_pMessage
  3010. )
  3011. )
  3012. children (
  3013. #(
  3014. #(value: *($e._M_pMessage)),
  3015. #(unprocessed_messages: $e._M_messageProcessor._M_queuedMessages._M_queue),
  3016. #(message_filter: *($e._M_pFilter)),
  3017. #(linked_sources: $e._M_connectedSources._M_links),
  3018. #(linked_targets: $e._M_connectedTargets),
  3019. #(reserving_target: *($e._M_pReservedFor)),
  3020. #(Scheduler: *($e._M_messageProcessor._M_pScheduler)),
  3021. #(ScheduleGroup: *($e._M_messageProcessor._M_pScheduleGroup))
  3022. )
  3023. )
  3024. }
  3025. ;------------------------------------------------------------------------------
  3026. ; Concurrency::call from <agents.h>
  3027. ;------------------------------------------------------------------------------
  3028. Concurrency::call<*>{
  3029. preview (
  3030. #(
  3031. $e._M_pFunc
  3032. )
  3033. )
  3034. children (
  3035. #(
  3036. #(call_method: $e._M_pFunc),
  3037. #(unprocessed_messages: $e._M_messageProcessor._M_queuedMessages._M_queue),
  3038. #(message_filter: *($e._M_pFilter)),
  3039. #(linked_sources: $e._M_connectedSources._M_links),
  3040. #(Scheduler: *($e._M_messageProcessor._M_pScheduler)),
  3041. #(ScheduleGroup: *($e._M_messageProcessor._M_pScheduleGroup))
  3042. )
  3043. )
  3044. }
  3045. ;------------------------------------------------------------------------------
  3046. ; Concurrency::transformer from <agents.h>
  3047. ;------------------------------------------------------------------------------
  3048. Concurrency::transformer<*>{
  3049. preview (
  3050. #(
  3051. $e._M_pFunc
  3052. )
  3053. )
  3054. children (
  3055. #(
  3056. #(transform_method: $e._M_pFunc),
  3057. #(unprocessed_messages: $e._M_messageProcessor._M_queuedMessages._M_queue),
  3058. #(messages: $e._M_messageBuffer),
  3059. #(message_filter: *($e._M_pFilter)),
  3060. #(linked_sources: $e._M_connectedSources._M_links),
  3061. #(linked_target: *($e._M_connectedTargets._M_connectedLink)),
  3062. #(reserving_target: *($e._M_pReservedFor)),
  3063. #(Scheduler: *($e._M_messageProcessor._M_pScheduler)),
  3064. #(ScheduleGroup: *($e._M_messageProcessor._M_pScheduleGroup))
  3065. )
  3066. )
  3067. }
  3068. ;------------------------------------------------------------------------------
  3069. ; Concurrency::choice from <agents.h>
  3070. ;------------------------------------------------------------------------------
  3071. Concurrency::choice<*>{
  3072. preview (
  3073. #(
  3074. "[",
  3075. #if ($e._M_pSingleAssignment->_M_fIsInitialized) ("initialized")
  3076. #else ("not_initialized"),
  3077. "] ",
  3078. $e._M_sourceTuple
  3079. )
  3080. )
  3081. children (
  3082. #(
  3083. #([input_count]: $e._M_pSingleAssignment->_M_connectedSources._M_links._M_vector._M_index),
  3084. #(index: $e._M_pSingleAssignment->_M_pMessage->payload),
  3085. #(source_tuple: $e._M_sourceTuple),
  3086. #(linked_sources: $e._M_pSingleAssignment->_M_connectedSources._M_links),
  3087. #(linked_targets: $e._M_pSingleAssignment->_M_connectedTargets),
  3088. #(reserving_target: *($e._M_pSingleAssignment->_M_pReservedFor)),
  3089. #(Scheduler: *($e._M_pScheduler)),
  3090. #(ScheduleGroup: *($e._M_pScheduleGroup)),
  3091. #([raw _M_pSourceChoices] : $e._M_pSourceChoices)
  3092. )
  3093. )
  3094. }
  3095. ;------------------------------------------------------------------------------
  3096. ; Concurrency::join<*,*>::_MessageArray from <agents.h>
  3097. ;------------------------------------------------------------------------------
  3098. Concurrency::join<*,*>::_MessageArray{
  3099. preview (
  3100. #(
  3101. "[",
  3102. $e._M_count,
  3103. "](",
  3104. #array(
  3105. expr: *(((Concurrency::message<$T1>**)$e._M_messages)[$i]),
  3106. size: $e._M_count
  3107. ),
  3108. ")"
  3109. )
  3110. )
  3111. children (
  3112. #(
  3113. #([size]: $e._M_count),
  3114. #array(
  3115. expr: *(((Concurrency::message<$T1>**)$e._M_messages)[$i]),
  3116. size: $e._M_count
  3117. )
  3118. )
  3119. )
  3120. }
  3121. ;------------------------------------------------------------------------------
  3122. ; Concurrency::join<*,*>::_SavedMessageIdArray from <agents.h>
  3123. ;------------------------------------------------------------------------------
  3124. Concurrency::join<*,*>::_SavedMessageIdArray{
  3125. preview (
  3126. #(
  3127. "[",
  3128. $e._M_count,
  3129. "](",
  3130. #array(
  3131. expr: ((int*)$e._M_savedIds)[$i],
  3132. size: $e._M_count
  3133. ),
  3134. ")"
  3135. )
  3136. )
  3137. children (
  3138. #(
  3139. #([size]: $e._M_count),
  3140. #array(
  3141. expr: ((int*)$e._M_savedIds)[$i],
  3142. size: $e._M_count
  3143. )
  3144. )
  3145. )
  3146. }
  3147. ;------------------------------------------------------------------------------
  3148. ; Concurrency::join from <agents.h>
  3149. ;------------------------------------------------------------------------------
  3150. Concurrency::join<*,*>{
  3151. preview (
  3152. #(
  3153. "[",
  3154. $e._M_messageArray._M_count - $e._M_messagesRemaining,
  3155. "/",
  3156. $e._M_messageArray._M_count,
  3157. "](",
  3158. #array(
  3159. expr: *($e._M_connectedSources._M_links._M_vector._M_array[$i]),
  3160. size: $e._M_connectedSources._M_links._M_vector._M_index
  3161. ),
  3162. ")"
  3163. )
  3164. )
  3165. children (
  3166. #(
  3167. #([join_type]: (Concurrency::join_type)$T2),
  3168. #([offer_count]: $e._M_messageArray._M_count - $e._M_messagesRemaining),
  3169. #(offer_IDs: $e._M_savedMessageIdArray),
  3170. #([input_count]: $e._M_messageArray._M_count),
  3171. #(input_values: $e._M_messageArray),
  3172. #(messages: $e._M_messageBuffer),
  3173. #(message_filter: *($e._M_pFilter)),
  3174. #(linked_sources: $e._M_connectedSources._M_links),
  3175. #(linked_target: $e._M_connectedTargets._M_connectedLink),
  3176. #(reserving_target: *($e._M_pReservedFor)),
  3177. #(Scheduler: *($e._M_messageProcessor._M_pScheduler)),
  3178. #(ScheduleGroup: *($e._M_messageProcessor._M_pScheduleGroup))
  3179. )
  3180. )
  3181. }
  3182. ;------------------------------------------------------------------------------
  3183. ; Concurrency::multitype_join from <agents.h>
  3184. ;------------------------------------------------------------------------------
  3185. Concurrency::multitype_join<*,*>{
  3186. preview (
  3187. #(
  3188. "[",
  3189. $e._M_pJoinNode->_M_connectedSources._M_links._M_vector._M_index - $e._M_pJoinNode->_M_counter,
  3190. "/",
  3191. $e._M_pJoinNode->_M_connectedSources._M_links._M_vector._M_index,
  3192. "]",
  3193. $e._M_sourceTuple
  3194. )
  3195. )
  3196. children (
  3197. #(
  3198. #([join_type]: (Concurrency::join_type)$T2),
  3199. #([offer_count]: $e._M_pJoinNode->_M_connectedSources._M_links._M_vector._M_index - $e._M_pJoinNode->_M_counter),
  3200. #([input_count]: $e._M_pJoinNode->_M_connectedSources._M_links._M_vector._M_index),
  3201. #(source_tuple: $e._M_sourceTuple),
  3202. #(messages: $e._M_pJoinNode->_M_messageBuffer),
  3203. #(linked_sources: $e._M_pJoinNode->_M_connectedSources._M_links),
  3204. #(linked_target: $e._M_pJoinNode->_M_connectedTargets._M_connectedLink),
  3205. #(reserving_target: *($e._M_pJoinNode->_M_pReservedFor)),
  3206. #(Scheduler: *($e._M_pJoinNode->_M_messageProcessor._M_pScheduler)),
  3207. #(ScheduleGroup: *($e._M_pJoinNode->_M_messageProcessor._M_pScheduleGroup)),
  3208. #([raw _M_pSourceJoins] : $e._M_pSourceJoins)
  3209. )
  3210. )
  3211. }
  3212. ;------------------------------------------------------------------------------
  3213. ; Concurrency::timer from <agents.h>
  3214. ;------------------------------------------------------------------------------
  3215. Concurrency::timer<*>{
  3216. preview (
  3217. #(
  3218. $e._M_state
  3219. )
  3220. )
  3221. children (
  3222. #(
  3223. #(state: $e._M_state),
  3224. #(value: $e._M_value),
  3225. #(repeating: $e._M_fRepeating),
  3226. #(interval_ms: $e._M_ms),
  3227. #(linked_target: *($e._M_connectedTargets._M_connectedLink)),
  3228. #(reserving_target: *($e._M_pReservedFor)),
  3229. #(Scheduler: *($e._M_messageProcessor._M_pScheduler)),
  3230. #(ScheduleGroup: *($e._M_messageProcessor._M_pScheduleGroup))
  3231. )
  3232. )
  3233. }
  3234. ;------------------------------------------------------------------------------
  3235. ; Concurrency::details::SchedulerBase from <SchedulerBase.h>
  3236. ; Concurrency::details::ThreadScheduler from <ThreadScheduler.h>
  3237. ; Concurrency::details::UMSThreadScheduler from <UMSThreadScheduler.h>
  3238. ;------------------------------------------------------------------------------
  3239. Concurrency::details::SchedulerBase|Concurrency::details::ThreadScheduler|Concurrency::details::UMSThreadScheduler{
  3240. preview (
  3241. #(
  3242. "[",
  3243. $e.m_id,
  3244. "] ",
  3245. #if ($e.m_schedulerKind == 0) ("ThreadScheduler")
  3246. #else ("UmsScheduler"),
  3247. #if ($e.m_id == $e.s_pDefaultScheduler->m_id) (", default")
  3248. #else ("")
  3249. )
  3250. )
  3251. children (
  3252. #(
  3253. #(ID: $e.m_id),
  3254. #(SchedulerPolicy: $e.m_policy),
  3255. #(VirtualProcessorCount: $e.m_virtualProcessorCount),
  3256. #(ReferenceCount: $e.m_refCount),
  3257. #([isDefaultScheduler]: $e.m_id == $e.s_pDefaultScheduler->m_id)
  3258. )
  3259. )
  3260. }
  3261. ;------------------------------------------------------------------------------
  3262. ; Concurrency::details::ScheduleGroupBase from <ScheduleGroupBase.h>
  3263. ; Concurrency::details::CacheLocalScheduleGroup from <CacheLocalScheduleGroup.h>
  3264. ; Concurrency::details::FairScheduleGroup from <FairScheduleGroup.h>
  3265. ;------------------------------------------------------------------------------
  3266. Concurrency::details::ScheduleGroupBase|Concurrency::details::CacheLocalScheduleGroup|Concurrency::details::FairScheduleGroup{
  3267. preview (
  3268. #(
  3269. "[",
  3270. $e.m_id,
  3271. "]",
  3272. #if ($e.m_kind & 4) (" AnonymousScheduleGroup")
  3273. #else ("")
  3274. )
  3275. )
  3276. children (
  3277. #(
  3278. #(ID: $e.m_id),
  3279. #(Scheduler: *($e.m_pScheduler))
  3280. )
  3281. )
  3282. }
  3283. ;------------------------------------------------------------------------------
  3284. ; Concurrency::details::ContextBase from <ContextBase.h>
  3285. ; Concurrency::details::InternalContextBase from <InternalContextBase.h>
  3286. ; Concurrency::details::ThreadInternalContext from <ThreadInternalContext.h>
  3287. ; Concurrency::details::UMSThreadInternalContext from <UMSThreadInternalContext.h>
  3288. ;------------------------------------------------------------------------------
  3289. Concurrency::details::ContextBase|Concurrency::details::InternalContextBase|Concurrency::details::ThreadInternalContext|Concurrency::details::UMSThreadInternalContext{
  3290. preview (
  3291. #(
  3292. "[",
  3293. $e.m_threadId,
  3294. "] ",
  3295. #if ($e.m_blockedState == 0) ("not_concrt_blocked")
  3296. #elif ($e.m_blockedState == 1) ("concrt_blocked")
  3297. #elif ($e.m_blockedState == 2) ("ums_sync_blocked")
  3298. #elif ($e.m_blockedState == 4) ("ums_async_blocked")
  3299. #else ("")
  3300. )
  3301. )
  3302. children (
  3303. #(
  3304. #(ID: $e.m_id),
  3305. #(ThreadID: $e.m_threadId),
  3306. #(Scheduler: *($e.m_pScheduler)),
  3307. #(ScheduleGroup: *($e.m_pGroup))
  3308. )
  3309. )
  3310. }
  3311. ;------------------------------------------------------------------------------
  3312. ; Concurrency::details::ExternalContextBase from <ExternalContextBase.h>
  3313. ;------------------------------------------------------------------------------
  3314. Concurrency::details::ExternalContextBase{
  3315. preview (
  3316. #(
  3317. "[",
  3318. $e.m_threadId,
  3319. "] ",
  3320. #if ($e.m_contextSwitchingFence == 1) ("concrt_blocked")
  3321. #else ("not_concrt_blocked")
  3322. )
  3323. )
  3324. children (
  3325. #(
  3326. #(ID: $e.m_id),
  3327. #(ThreadID: $e.m_threadId),
  3328. #(Scheduler: *($e.m_pScheduler)),
  3329. #(ScheduleGroup: *($e.m_pGroup))
  3330. )
  3331. )
  3332. }
  3333. ;------------------------------------------------------------------------------
  3334. ; Concurrency::SchedulerPolicy from <concrt.h>
  3335. ;------------------------------------------------------------------------------
  3336. Concurrency::SchedulerPolicy{
  3337. preview (
  3338. #(
  3339. $e._M_pPolicyBag->_M_values._M_specificValues._M_schedulerKind,
  3340. ", Min=",
  3341. $e._M_pPolicyBag->_M_values._M_specificValues._M_minConcurrency,
  3342. ", Max=",
  3343. $e._M_pPolicyBag->_M_values._M_specificValues._M_maxConcurrency
  3344. )
  3345. )
  3346. children (
  3347. #(
  3348. #(SchedulerKind: $e._M_pPolicyBag->_M_values._M_specificValues._M_schedulerKind),
  3349. #(MinConcurrency: $e._M_pPolicyBag->_M_values._M_specificValues._M_minConcurrency),
  3350. #(MaxConcurrency: $e._M_pPolicyBag->_M_values._M_specificValues._M_maxConcurrency),
  3351. #(TargetOversubscriptionFactor: $e._M_pPolicyBag->_M_values._M_specificValues._M_targetOversubscriptionFactor),
  3352. #(LocalContextCacheSize: $e._M_pPolicyBag->_M_values._M_specificValues._M_localContextCacheSize),
  3353. #(ContextStackSize: $e._M_pPolicyBag->_M_values._M_specificValues._M_contextStackSize),
  3354. #(ContextPriority: $e._M_pPolicyBag->_M_values._M_specificValues._M_contextPriority),
  3355. #(SchedulingProtocol: $e._M_pPolicyBag->_M_values._M_specificValues._M_schedulingProtocol),
  3356. #(DynamicProgressFeedback: $e._M_pPolicyBag->_M_values._M_specificValues._M_dynamicProgressFeedback)
  3357. )
  3358. )
  3359. }
  3360. ;------------------------------------------------------------------------------
  3361. ; Concurrency::event from <concrt.h>
  3362. ;------------------------------------------------------------------------------
  3363. Concurrency::event{
  3364. preview (
  3365. #(
  3366. #if ($e._M_pWaitChain == 1) ("set")
  3367. #else ("not_set")
  3368. )
  3369. )
  3370. children (
  3371. #(
  3372. #([is_set]: ($e._M_pWaitChain == 1)),
  3373. #([has_waiters]: (($e._M_pWaitChain != 0) && ($e._M_pWaitChain != 1)))
  3374. )
  3375. )
  3376. }
  3377. ;------------------------------------------------------------------------------
  3378. ; Concurrency::critical_section from <concrt.h>
  3379. ;------------------------------------------------------------------------------
  3380. Concurrency::critical_section{
  3381. preview (
  3382. #(
  3383. #if ($e._M_pHead != 0) ("locked")
  3384. #else ("not_locked")
  3385. )
  3386. )
  3387. children (
  3388. #(
  3389. #([is_locked]: ($e._M_pHead != 0)),
  3390. #(OwningContext: *((Concurrency::Context*)($e._M_activeNode[0])))
  3391. )
  3392. )
  3393. }
  3394. ;------------------------------------------------------------------------------
  3395. ; Concurrency::critical_section::scoped_lock from <concrt.h>
  3396. ;------------------------------------------------------------------------------
  3397. Concurrency::critical_section::scoped_lock{
  3398. preview (
  3399. #(
  3400. $e._M_critical_section
  3401. )
  3402. )
  3403. children (
  3404. #(
  3405. CriticalSection: $e._M_critical_section
  3406. )
  3407. )
  3408. }
  3409. ;------------------------------------------------------------------------------
  3410. ; Concurrency::reader_writer_lock from <concrt.h>
  3411. ;------------------------------------------------------------------------------
  3412. Concurrency::reader_writer_lock{
  3413. preview (
  3414. #(
  3415. #if (($e._M_lockState < 8) && ($e._M_lockState & 2)) ("held_by_writer")
  3416. #elif ($e._M_lockState >= 8) (
  3417. #(
  3418. "held_by_reader(s) [",
  3419. ($e._M_lockState / 8),
  3420. "]"
  3421. )
  3422. )
  3423. #else ("not_held")
  3424. )
  3425. )
  3426. children (
  3427. #(
  3428. #([is_reader_lock_held]: ($e._M_lockState >= 8)),
  3429. #([num_reader_lock_holders]: ($e._M_lockState / 8)),
  3430. #([is_writer_lock_held]: ($e._M_lockState < 8) && ($e._M_lockState & 2)),
  3431. #(OwningWriterContext: *((Concurrency::Context*)($e._M_activeWriter[0])))
  3432. )
  3433. )
  3434. }
  3435. ;------------------------------------------------------------------------------
  3436. ; Concurrency::reader_writer_lock::scoped_lock from <concrt.h>
  3437. ; Concurrency::reader_writer_lock::scoped_lock_read from <concrt.h>
  3438. ;------------------------------------------------------------------------------
  3439. Concurrency::reader_writer_lock::scoped_lock|Concurrency::reader_writer_lock::scoped_lock_read{
  3440. preview (
  3441. #(
  3442. $e._M_reader_writer_lock
  3443. )
  3444. )
  3445. children (
  3446. #(
  3447. ReaderWriterLock: $e._M_reader_writer_lock
  3448. )
  3449. )
  3450. }
  3451. ;------------------------------------------------------------------------------
  3452. ; Concurrency::details::_TaskCollectionBase from <concrt.h>
  3453. ;------------------------------------------------------------------------------
  3454. Concurrency::details::_TaskCollectionBase{
  3455. preview (
  3456. #(
  3457. #if ((((int)$e._M_pException & ~0x3) != 0) && (((int)$e._M_pException & ~0x3) != 0xC)) ("exception")
  3458. #else ("no_exception")
  3459. )
  3460. )
  3461. children (
  3462. #(
  3463. #([has_exception]: (((int)$e._M_pException & ~0x3) != 0) && (((int)$e._M_pException & ~0x3) != 0xC)),
  3464. #(CreatingContext: *((Concurrency::Context*)$e._M_pOwningContext))
  3465. )
  3466. )
  3467. }
  3468. ;------------------------------------------------------------------------------
  3469. ; Concurrency::task_group from <ppl.h>
  3470. ; Concurrency::structured_task_group from <ppl.h>
  3471. ;------------------------------------------------------------------------------
  3472. Concurrency::task_group|Concurrency::structured_task_group{
  3473. preview (
  3474. #(
  3475. #if ((((int)$e._M_task_collection._M_pException & ~0x3) != 0) && (((int)$e._M_task_collection._M_pException & ~0x3) != 0xC)) ("exception")
  3476. #else ("no_exception")
  3477. )
  3478. )
  3479. children (
  3480. #(
  3481. #([has_exception]: (((int)$e._M_task_collection._M_pException & ~0x3) != 0) && (((int)$e._M_task_collection._M_pException & ~0x3) != 0xC)),
  3482. #(CreatingContext: *((Concurrency::Context*)$e._M_task_collection._M_pOwningContext))
  3483. )
  3484. )
  3485. }
  3486. ;------------------------------------------------------------------------------
  3487. ; Concurrency::task_handle from <ppl.h>
  3488. ;------------------------------------------------------------------------------
  3489. Concurrency::task_handle<*>{
  3490. preview (
  3491. #(
  3492. $e._M_function
  3493. )
  3494. )
  3495. children (
  3496. #(
  3497. #(Function: $e._M_function),
  3498. #(RuntimeOwnsLifetime: $e._M_fRuntimeOwnsLifetime),
  3499. #(TaskCollection: *($e._M_pTaskCollection))
  3500. )
  3501. )
  3502. }
  3503. ;------------------------------------------------------------------------------
  3504. ; Concurrency::combinable from <ppl.h>
  3505. ;------------------------------------------------------------------------------
  3506. Concurrency::combinable<*>{
  3507. preview(
  3508. #(
  3509. "(",
  3510. #array(
  3511. expr: *($e._M_buckets[$i]),
  3512. size: $e._M_size
  3513. ) : #list(
  3514. head: $e,
  3515. next: _M_chain
  3516. ) : $e._M_value,
  3517. ")"
  3518. )
  3519. )
  3520. children(
  3521. #(
  3522. #array(
  3523. expr: *($e._M_buckets[$i]),
  3524. size: $e._M_size
  3525. ) : #list(
  3526. head: $e,
  3527. next: _M_chain
  3528. ) : $e._M_value,
  3529. #(InitFunction : $e._M_fnInitialize)
  3530. )
  3531. )
  3532. }
  3533. ;------------------------------------------------------------------------------
  3534. ; Concurrency::concurrent_vector from <concurrent_vector.h>
  3535. ;------------------------------------------------------------------------------
  3536. Concurrency::concurrent_vector<*,*>{
  3537. preview(
  3538. #(
  3539. "[",
  3540. $e._My_early_size._M_value,
  3541. "](",
  3542. #array (
  3543. expr: #(
  3544. #if (($i >> 1) == 0) ((($T1*)$e._My_segment._M_value[0]._My_array)[$i])
  3545. #else ((($T1*)$e._My_segment._M_value[__log2($i)]._My_array)[$i - (0x1 << __log2($i))])
  3546. ),
  3547. size: $e._My_early_size._M_value
  3548. ),
  3549. ")"
  3550. )
  3551. )
  3552. children(
  3553. #(
  3554. [size] : $e._My_early_size._M_value,
  3555. #array (
  3556. expr: #(
  3557. #if (($i >> 1) == 0) ((($T1*)$e._My_segment._M_value[0]._My_array)[$i])
  3558. #else ((($T1*)$e._My_segment._M_value[__log2($i)]._My_array)[$i - (0x1 << __log2($i))])
  3559. ),
  3560. size: $e._My_early_size._M_value
  3561. )
  3562. )
  3563. )
  3564. }
  3565. ;------------------------------------------------------------------------------
  3566. ; Concurrency::details::_Vector_iterator from <concurrent_vector.h>
  3567. ;------------------------------------------------------------------------------
  3568. Concurrency::details::_Vector_iterator<Concurrency::concurrent_vector<*,*>,*>{
  3569. preview(
  3570. #(
  3571. #if (($e._My_index >> 1) == 0) ((($T1*)$e._My_vector->_My_segment._M_value[0]._My_array)[$e._My_index])
  3572. #else ((($T1*)$e._My_vector->_My_segment._M_value[__log2($e._My_index)]._My_array)[$e._My_index - (0x1 << __log2($e._My_index))])
  3573. )
  3574. )
  3575. children(
  3576. #(
  3577. [ptr]: #if (($e._My_index >> 1) == 0) (&((($T1*)$e._My_vector->_My_segment._M_value[0]._My_array)[$e._My_index]))
  3578. #else (&((($T1*)$e._My_vector->_My_segment._M_value[__log2($e._My_index)]._My_array)[$e._My_index - (0x1 << __log2($e._My_index))]))
  3579. )
  3580. )
  3581. }
  3582. ;------------------------------------------------------------------------------
  3583. ; Concurrency::concurrent_queue from <concurrent_queue.h>
  3584. ;------------------------------------------------------------------------------
  3585. Concurrency::concurrent_queue<*,*>{
  3586. preview
  3587. (
  3588. #(
  3589. "[",
  3590. $e._My_rep->_Tail_counter._M_value - $e._My_rep->_Head_counter._M_value,
  3591. "](",
  3592. #array
  3593. (
  3594. expr : #if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 0) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3595. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 1) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3596. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 2) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3597. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 3) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3598. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 4) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3599. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 5) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3600. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 6) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3601. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 7) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3602. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 8) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3603. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 9) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3604. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 10) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3605. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 11) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3606. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 12) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3607. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 13) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3608. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 14) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3609. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 15) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3610. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 16) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3611. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 17) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3612. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 18) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3613. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 19) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3614. #else ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])))))))))))))))))))),
  3615. size : #if ($e._My_rep->_Tail_counter._M_value-$e._My_rep->_Head_counter._M_value < 20*8*$e._Items_per_page) ($e._My_rep->_Tail_counter._M_value-$e._My_rep->_Head_counter._M_value)
  3616. #else (20*8*$e._Items_per_page)
  3617. ),
  3618. ")"
  3619. )
  3620. )
  3621. children
  3622. (
  3623. #(
  3624. #([unsafe_size]: $e._My_rep->_Tail_counter._M_value-$e._My_rep->_Head_counter._M_value),
  3625. #array
  3626. (
  3627. expr : #if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 0) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3628. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 1) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3629. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 2) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3630. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 3) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3631. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 4) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3632. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 5) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3633. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 6) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3634. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 7) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3635. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 8) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3636. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 9) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3637. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 10) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3638. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 11) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3639. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 12) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3640. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 13) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3641. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 14) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3642. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 15) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3643. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 16) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3644. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 17) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3645. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 18) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3646. #else (#if (($i+($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)))/(8*$e._Items_per_page)-($e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>(8*($e._Items_per_page-1)))*($i%8+$e._My_rep->_Head_counter._M_value%(8*$e._Items_per_page)>=(8*$e._Items_per_page)) == 19) ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])
  3647. #else ((($T1*)(($e._My_rep->_Array[(($i+$e._My_rep->_Head_counter._M_value)*3%8)]._Head_page._M_value->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next->_Next) + 1))[(($i+$e._My_rep->_Head_counter._M_value)&-8)/8&$e._Items_per_page-1])))))))))))))))))))),
  3648. size : #if ($e._My_rep->_Tail_counter._M_value-$e._My_rep->_Head_counter._M_value < 20*8*$e._Items_per_page) ($e._My_rep->_Tail_counter._M_value-$e._My_rep->_Head_counter._M_value)
  3649. #else (20*8*$e._Items_per_page)
  3650. )
  3651. )
  3652. )
  3653. }
  3654. ;------------------------------------------------------------------------------
  3655. ; Concurrency::details::_Concurrent_queue_iterator from <concurrent_queue.h>
  3656. ;------------------------------------------------------------------------------
  3657. Concurrency::details::_Concurrent_queue_iterator<Concurrency::concurrent_queue<*,*>,*>{
  3658. preview(
  3659. #(
  3660. *(($T1*)$e._My_item)
  3661. )
  3662. )
  3663. children(
  3664. #(
  3665. [ptr]: (($T1*)$e._My_item)
  3666. )
  3667. )
  3668. }
  3669. ; This section lets you define your own errors for the HRESULT display.
  3670. ; You need to list the error code in unsigned decimal, followed by the message.
  3671. ; Changes will take effect the next time you redisplay the variable.
  3672. [hresult]
  3673. ;1234=my custom error code
  3674. [Visualizer]
  3675. glm::detail::tvec2<*>{
  3676. preview (
  3677. #(#($c.x,$c.y))
  3678. )
  3679. children (
  3680. #([x]: $c.x,[y]: $c.y)
  3681. )
  3682. }
  3683. glm::detail::tvec3<*>{
  3684. preview (
  3685. #($e.x,$e.y,$e.z)
  3686. )
  3687. children (
  3688. #([x]: $e.x,[y]: $e.y,[z]: $e.z)
  3689. )
  3690. }
  3691. glm::detail::tvec4<*>{
  3692. preview (
  3693. #($c.x,$c.y,$c.z,$c.w)
  3694. )
  3695. children (
  3696. #([x]: $e.x,[y]: $e.y,[z]: $e.z, #([w]: $e.w))
  3697. )
  3698. }