gwnavruntime/containers/autoexp.h Source File

autoexp.h
Go to the documentation of this file.
1 /*
2 * Copyright 2015 Autodesk, Inc. All rights reserved.
3 * Use of this software is subject to the terms of the Autodesk license agreement and any attachments or Appendices thereto provided at the time of installation or download,
4 * or which otherwise accompanies this software in either electronic or hard copy form, or which is signed by you and accepted by Autodesk.
5 */
6 
7 
8 // primary contact: GUAL - secondary contact: JODA
9 
10 /*
11 To allow the visual studio debugger to display Gameware Navigation container content easily,
12 add these lines to "Microsoft Visual Studio 9.0\Common7\Packages\Debugger\autoexp.dat"
13 just before the [hresult] section at the very end of the file.
14 */
15 
16 /*
17 
18 ;------------------------------------------------------------------------------
19 ; Kaim classes
20 ;------------------------------------------------------------------------------
21 Kaim::String {
22  preview
23  (
24  #if ( $e.pData != &$e.NullData ) (
25  #($e.pData->Data )
26  )
27  #else (
28  #($e.pData->Data, " (Null String)" )
29  )
30  )
31  stringview
32  (
33  #if ( $e.pData != &$e.NullData.pData ) (
34  #($e.pData->Data )
35  )
36  #else (
37  #($e.pData->Data, " (Null String)" )
38  )
39  )
40  children
41  (
42  #(
43  #if ( $e.pData != &$e.NullData )
44  (
45  #(
46  #( Length : $e.pData->Size ),
47  #( RefCount : $e.pData->RefCount ),
48  #( NullData : $e.NullData )
49  )
50  )
51  #else
52  (
53  #( RefCount : $e.pData->RefCount )
54  )
55  )
56  )
57 }
58 
59 Kaim::ArrayBase<*>|Kaim::Array<*>|Kaim::ArrayPOD<*>|Kaim::ArrayCPP<*>|Kaim::ArrayLH<*>|Kaim::ArrayLH_POD<*>|Kaim::ArrayDH<*>|Kaim::ArrayDH_POD<*>|Kaim::ArrayCC<*>|Kaim::KyArray<*>|Kaim::KyArrayPOD<*>|Kaim::KyArrayLH<*>|Kaim::KyArrayLH_POD<*>|Kaim::KyArrayDH<*>|Kaim::KyArrayDH_POD<*>{
60  preview
61  (
62  #(
63  "[",
64  $e.Data.Size,
65  "](",
66  #array
67  (
68  expr : ($e.Data.Data)[$i],
69  size : $e.Data.Size
70  ),
71  ")"
72  )
73  )
74  children
75  (
76  #(
77  [raw members]: [$e,!],
78  #array
79  (
80  expr : ($e.Data.Data)[$i],
81  size : $e.Data.Size
82  )
83  )
84  )
85 }
86 
87 Kaim::FixedBitSetBase<*>|Kaim::FixedBitSetLH<*>|Kaim::FixedBitSetDH<*>|Kaim::FixedBitSetGH<*> {
88  preview
89  (
90  #(
91  "[",
92  $e.BitsCount,
93  "](",
94  #array
95  (
96  expr : [($e.pData[$i]),x],
97  size : ($e.BitsCount + 7) / 8
98  ),
99  ")"
100  )
101  )
102  children
103  (
104  #(
105  [raw members]: [$c,!],
106  #array
107  (
108  expr : (bool)(($e.pData[$i >> 3] >> ($i & 0x07)) & 1),
109  size : $e.BitsCount
110  )
111  )
112  )
113 }
114 
115 Kaim::List<*,*>{
116  preview
117  (
118  #if (&$e.Root == $e.Root.pNext)
119  (
120  #( "Empty List {Root=", (void*)&$e.Root, "}" )
121  )
122  #else
123  (
124  #( "{",
125  #list
126  (
127  head : &$e.Root, ;.pNext,
128  next : pNext,
129  skip : $e.Root.pPrev
130  ) : *$e.pNext,
131  "}"
132  )
133  )
134  )
135 
136  children
137  (
138  #(
139  [raw members]: [$e,!],
140  #if (&$e.Root == $e.Root.pNext)
141  (
142  ; Show the root node, just so you can inspect the contents,
143  #( Root : $e.Root )
144  )
145  #else
146  (
147  #list
148  (
149  head : &$e.Root,
150  next : pNext,
151  skip : $e.Root.pPrev
152  ) : *$e.pNext
153  )
154  )
155  )
156 }
157 
158 
159 ; Removes the pVoidPrev and pVoidNext from the preview and list, as they are redundant (at least for debugging purposes).
160 Kaim::ListNode<*> {
161  preview
162  (
163  #( "{pPrev=", &$e.pPrev, " pNext=", &$e.pNext, "}" )
164  )
165 
166  children
167  (
168  #(
169  pPrev : $e.pPrev,
170  pNext : $e.pNext
171  )
172  )
173 }
174 
175 ; Displays the RefCount directly in the preview, without the deep inheritance hierarchy.
176 Kaim::RefCountBase<*>{
177  preview
178  (
179  #( "RefCount=", $e.RefCount )
180  )
181 
182 }
183 
184 
185 ;------------------------------------------------------------------------------
186 ; Kaim::BitField
187 ;------------------------------------------------------------------------------
188 Kaim::BitField{
189  preview
190  (
191  #(
192  "[",
193  $e.m_bitsCount,
194  "](",
195  #array
196  (
197  expr : (void*)($e.m_words[$i]),
198  size : ($e.m_bitsCount + 31) / 32
199  ),
200  ")"
201  )
202  )
203  children
204  (
205  #(
206  [raw members]: [$c,!],
207  #array
208  (
209  expr : (bool)(($e.m_words[$i >> 5] >> ($i & 0x1F)) & 1),
210  size : $e.m_bitsCount
211  )
212  )
213  )
214 }
215 
216 ;------------------------------------------------------------------------------
217 ; Kaim::BlobRef
218 ;------------------------------------------------------------------------------
219 Kaim::BlobRef<*>{
220  preview
221  (
222  #(
223  expr : (($T1*) &(((char*)&($e.m_offset))[$e.m_offset]) )
224  )
225  )
226 
227  children
228  (
229  #(
230  expr : (($T1*) &(((char*)&($e.m_offset))[$e.m_offset]) ),
231  byteSize : $e.m_byteSize
232  )
233  )
234 }
235 
236 ;------------------------------------------------------------------------------
237 ; Kaim::BlobArray
238 ;------------------------------------------------------------------------------
239 Kaim::BlobArray<*>{
240  preview
241  (
242  #(
243  "[",
244  $e.m_count,
245  "](",
246  #array
247  (
248  expr : (($T1*) &(((char*)&($e.m_offset))[$e.m_offset]) )[$i],
249  size : $e.m_count
250  ),
251  ")"
252  )
253  )
254  children
255  (
256  #array
257  (
258  expr : (($T1*) &(((char*)&($e.m_offset))[$e.m_offset]) )[$i],
259  size : $e.m_count
260  )
261  )
262 }
263 
264 ;------------------------------------------------------------------------------
265 ; Kaim::Pool
266 ;------------------------------------------------------------------------------
267 
268 Kaim::Pool<*>{
269  preview
270  (
271  #(
272  "[",
273  $e.m_chunkCount,
274  "](",
275  #array
276  (
277  expr : $e.m_chunks[$i],
278  size : $e.m_chunkCount
279  ),
280  ")"
281  )
282  )
283  children
284  (
285  #(
286  [raw members]: [$c,!],
287  #array
288  (
289  expr : $e.m_chunks[$i],
290  size : $e.m_chunkCount
291  )
292  )
293  )
294 }
295 
296 Kaim::PoolChunk<*>{
297  preview
298  (
299  #(
300  "[",
301  $e.m_nbSlot - $e.m_nbAvailableSlot,
302  "](",
303  #array
304  (
305  expr : $e.m_pool[$i],
306  size : $e.m_nbSlot
307  ),
308  ")"
309  )
310  )
311 
312  children
313  (
314  #(
315  [raw members]: [$c,!],
316  #array
317  (
318  expr : $e.m_pool[$i],
319  size : $e.m_nbSlot
320  )
321  )
322  )
323 }
324 
325 Kaim::IterablePool<*>::ConstIterator|Kaim::IterablePool<*>::Iterator{
326  preview
327  (
328  #(
329  $e.m_chunkBasedPool->m_chunkBasedPool.m_chunks[$e.m_compactKey.m_chunkIndex]->m_pool[$e.m_compactKey.m_idxInChunk]
330  )
331  )
332 
333  children
334  (
335  #(
336  [raw members] : [$c,!],
337  [value] : $e.m_chunkBasedPool->m_chunkBasedPool.m_chunks[$e.m_compactKey.m_chunkIndex]->m_pool[$e.m_compactKey.m_idxInChunk]
338  )
339  )
340 }
341 
342 ;------------------------------------------------------------------------------
343 ; Kaim::CircularArray
344 ;------------------------------------------------------------------------------
345 
346 Kaim::CircularArray<*>{
347  preview
348  (
349  #(
350  "[", $e.m_size, "](",
351  #if ($e.m_beginIdx <= $e.m_endIdx)
352  (
353  #array
354  (
355  expr : $e.m_buffer[$e.m_beginIdx + $i],
356  size : $e.m_size
357  )
358  )
359  #else
360  (
361  #(
362  #array
363  (
364  expr : $e.m_buffer[$e.m_beginIdx + $i],
365  size : $e.m_bufferSize - $e.m_beginIdx
366  ),
367  #if ($e.m_endIdx != 0)
368  (
369  #(
370  ", ",
371  #array
372  (
373  expr : $e.m_buffer[$i],
374  size : $e.m_endIdx
375  )
376  )
377  )
378  )
379  ),
380  ")"
381  )
382  )
383 
384  children
385  (
386  #(
387  [raw members]: [$c,!],
388  #if ($e.m_beginIdx <= $e.m_endIdx)
389  (
390  #array
391  (
392  expr : $e.m_buffer[$e.m_beginIdx + $i],
393  size : $e.m_size
394  )
395  )
396  #else
397  (
398  #(
399  #array
400  (
401  expr : $e.m_buffer[$e.m_beginIdx + $i],
402  size : $e.m_bufferSize - $e.m_beginIdx
403  ),
404  #array
405  (
406  expr : $e.m_buffer[$i],
407  size : $e.m_endIdx,
408  base : $e.m_bufferSize - $e.m_beginIdx
409  )
410  )
411  )
412  )
413  )
414 }
415 
416 ;------------------------------------------------------------------------------
417 ; Kaim::SharedPoolList
418 ;------------------------------------------------------------------------------
419 
420 Kaim::SharedPoolList<*>{
421  preview
422  (
423  #if (&$e.m_root == $e.m_root.m_next)
424  (
425  #( "Empty List {m_root=", (void*)&$e.m_root, "}" )
426  )
427  #else
428  (
429  #( "[", $e.m_count, "]{",
430  #list
431  (
432  head : $e.m_root.m_next,
433  next : m_next,
434  size : $e.m_count,
435  skip : &$e.m_root
436  ) : ($e.m_data),
437  "}"
438  )
439  )
440  )
441 
442  children
443  (
444  #(
445  [raw members]: [$c,!],
446  #if (&$e.m_root == $e.m_root.m_next)
447  (
448  ; Show the root node, just so you can inspect the contents,
449  #( m_root : $e.m_root )
450  )
451  #else
452  (
453  #list
454  (
455  head : $e.m_root.m_next,
456  next : m_next,
457  size : $e.m_count,
458  skip : &$e.m_root
459  ) : ($e.m_data)
460  )
461  )
462  )
463 }
464 
465 ;------------------------------------------------------------------------------
466 ; Kaim::Collection
467 ;------------------------------------------------------------------------------
468 
469 Kaim::Collection<*>|Kaim::TrackedCollection<*>{
470  preview
471  (
472  #(
473  "[",
474  $e.m_collectionImpl.m_values.Data.Size,
475  "](",
476  #array
477  (
478  expr : ($e.m_collectionImpl.m_values.Data.Data)[$i],
479  size : $e.m_collectionImpl.m_values.Data.Size
480  ),
481  ")"
482  )
483  )
484  children
485  (
486  #(
487  [raw members]: [$e,!],
488  #array
489  (
490  expr : ($e.m_collectionImpl.m_values.Data.Data)[$i],
491  size : $e.m_collectionImpl.m_values.Data.Size
492  )
493  )
494  )
495 }
496 
497 */
498