• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2[Visualizer]
3
4llvm::SmallVector<*,*>{
5	preview (
6		#if ((($T1*)$e.EndX - ($T1*)$e.BeginX) == 0) ( "empty" )
7		#else (
8			#(
9				"[",
10				($T1*)$e.EndX - ($T1*)$e.BeginX,
11				"](",
12				#array(
13					expr: (($T1*)$e.BeginX)[$i],
14					size: ($T1*)$e.EndX - ($T1*)$e.BeginX
15				),
16				")"
17			)
18		)
19	)
20
21	children (
22		#(
23			#([size] : ($T1*)$e.EndX - ($T1*)$e.BeginX),
24			#([capacity] : ($T1*)$e.CapacityX - ($T1*)$e.BeginX),
25			#array(
26				expr: (($T1*)$e.BeginX)[$i],
27				size: ($T1*)$e.EndX - ($T1*)$e.BeginX
28			)
29		)
30	)
31}
32
33llvm::SmallVectorImpl<*>{
34	preview (
35		#if ((($T1*)$e.EndX - ($T1*)$e.BeginX) == 0) ( "empty" )
36		#else (
37			#(
38				"[",
39				($T1*)$e.EndX - ($T1*)$e.BeginX,
40				"](",
41				#array(
42					expr: (($T1*)$e.BeginX)[$i],
43					size: ($T1*)$e.EndX - ($T1*)$e.BeginX
44				),
45				")"
46			)
47		)
48	)
49
50	children (
51		#(
52			#([size] : ($T1*)$e.EndX - ($T1*)$e.BeginX),
53			#([capacity] : ($T1*)$e.CapacityX - ($T1*)$e.BeginX),
54			#array(
55				expr: (($T1*)$e.BeginX)[$i],
56				size: ($T1*)$e.EndX - ($T1*)$e.BeginX
57			)
58		)
59	)
60}
61
62llvm::SmallString<*>{
63	preview ([$e.BeginX,s])
64	stringview ([$e.BeginX,sb])
65}
66
67llvm::StringRef{
68	preview ([$e.Data,s])
69	stringview ([$e.Data,sb])
70
71	children (
72		#(
73			#([size] : $e.Length),
74			#array(expr: $e.Data[$i], size: $e.Length)
75		)
76	)
77}
78
79clang::Token{
80	preview((clang::tok::TokenKind)(int)$e.Kind)
81}
82
83llvm::PointerIntPair<*,*,*,*>{
84	preview (
85		#(
86			($T1*)($e.Value & $e.PointerBitMask),
87			" [",
88			($T3)(($e.Value >> $e.IntShift) & $e.IntMask),
89			"]"
90		)
91	)
92
93	children (
94		#(
95			#([raw members] : [$e,!]),
96			#([ptr] : ($T1*)($e.Value & $e.PointerBitMask)),
97			#([int] : ($T3)($e.Value >> $e.IntShift) & $e.IntMask)
98		)
99	)
100}
101
102llvm::PointerUnion<*,*>{
103	preview (
104		#if ((($e.Val.Value >> $e.Val.IntShift) & $e.Val.IntMask) == 0) ( "PT1" )
105		#else ( "PT2" )
106	)
107
108	children (
109		#(
110			#([raw members] : [$e,!]),
111			#if ((($e.Val.Value >> $e.Val.IntShift) & $e.Val.IntMask) == 0) (
112				#([ptr] : ($T1)($e.Val.Value & $e.Val.PointerBitMask))
113			) #else (
114				#([ptr] : ($T2)($e.Val.Value & $e.Val.PointerBitMask))
115			)
116		)
117	)
118}
119
120llvm::PointerUnion3<*,*,*>{
121	preview (
122		#if (($e.Val.Val.Value & 0x2) == 2) ( "PT2" )
123		#elif (($e.Val.Val.Value & 0x1) == 1) ( "PT3" )
124		#else ( "PT1" )
125	)
126
127	children (
128		#(
129			#if (($e.Val.Val.Value & 0x2) == 2) (
130				#([ptr] : ($T2)(($e.Val.Val.Value >> 2) << 2))
131			) #elif (($e.Val.Val.Value & 0x1) == 1) (
132				#([ptr] : ($T3)(($e.Val.Val.Value >> 2) << 2))
133			) #else (
134				#([ptr] : ($T1)(($e.Val.Val.Value >> 2) << 2))
135			)
136		)
137	)
138}
139
140llvm::PointerUnion4<*,*,*,*>{
141	preview (
142		#if (($e.Val.Val.Value & 0x3) == 3) ( "PT4" )
143		#elif (($e.Val.Val.Value & 0x2) == 2) ( "PT2" )
144		#elif (($e.Val.Val.Value & 0x1) == 1) ( "PT3" )
145		#else ( "PT1" )
146	)
147
148	children (
149		#(
150			#if (($e.Val.Val.Value & 0x3) == 3) (
151				#([ptr] : ($T4)(($e.Val.Val.Value >> 2) << 2))
152			) #elif (($e.Val.Val.Value & 0x2) == 2) (
153				#([ptr] : ($T2)(($e.Val.Val.Value >> 2) << 2))
154			) #elif (($e.Val.Val.Value & 0x1) == 1) (
155				#([ptr] : ($T3)(($e.Val.Val.Value >> 2) << 2))
156			) #else (
157				#([ptr] : ($T1)(($e.Val.Val.Value >> 2) << 2))
158			)
159		)
160	)
161}
162
163llvm::IntrusiveRefCntPtr<*>{
164	preview (
165		#if ($e.Obj == 0) ( "empty" )
166		#else (
167			#(
168				"[RefCnt=", $e.Obj->ref_cnt,
169				", ",
170				"Obj=", $e.Obj,
171				"]"
172			)
173		)
174	)
175
176	children (
177		#if ($e.Obj == 0) ( #array(expr: 0, size: 0) )
178		#else (
179			#(
180				#(RefCnt : $e.Obj->ref_cnt),
181				#(Obj : $e.Obj)
182			)
183		)
184	)
185}
186
187llvm::OwningPtr<*>{
188	preview (
189		#if ($e.Ptr == 0) ( "empty" )
190		#else ( $e.Ptr )
191	)
192
193	children (
194		#if ($e.Ptr == 0) ( #array(expr: 0, size: 0) )
195		#else ( #(Ptr : $e.Ptr) )
196	)
197}
198
199llvm::SmallPtrSet<*,*>{
200	preview (
201		#(
202			#if (($e.CurArray) == ($e.SmallArray)) ( "[Small Mode] " )
203			#else ( "[Big Mode] " ),
204			"NumElements=", $e.NumElements,
205			" CurArraySize=", $e.CurArraySize
206		)
207	)
208
209	children (
210		#(
211			#([raw members] : [$c,!]),
212			#(NumElements : $e.NumElements),
213			#(CurArraySize : $e.CurArraySize),
214			#array(
215				expr: $e.CurArray[$i],
216				size: $e.CurArraySize + 1
217			) : ($T1*)&$e
218		)
219	)
220}
221
222llvm::DenseMap<*,*,*>{
223	preview (
224		#if ($e.NumEntries == 0) ( "empty" )
225		#else (
226			#(
227				"[NumEntries=", $e.NumEntries,
228				" NumBuckets=", $e.NumBuckets,
229				"]"
230			)
231		)
232	)
233
234	children (
235		#if ($e.NumEntries == 0) ( #array(expr: 0, size: 0) )
236		#else (
237			#(
238				#([raw members] : [$c,!]),
239				#(NumEntries : $e.NumEntries),
240				#(NumBuckets : $e.NumBuckets),
241				#array(
242					expr: $e.Buckets[$i],
243					size: $e.NumBuckets
244				)
245			)
246		)
247	)
248}
249
250llvm::StringMap<*,*>{
251	preview (
252		#(
253			"[NumBuckets=", $e.NumBuckets,
254			" ItemSize=", $e.ItemSize,
255			"]"
256		)
257	)
258
259	children (
260		#(
261			#([raw members] : [$c,!]),
262			#(NumBuckets : $e.NumBuckets),
263			#(ItemSize : $e.ItemSize),
264			#array(
265				expr: $e.TheTable[$i],
266				size: $e.NumBuckets,
267			) : (llvm::StringMapEntry<$T1>*)&$e
268		)
269	)
270}
271
272llvm::StringMapEntry<*>{
273	preview (
274		#if ($e.StrLen == 0) ( "empty" )
275		#else (	#(Entry : $e.second) )
276	)
277
278	children (
279		#if ($e.StrLen == 0) ( "empty" )
280		#else ( #(Entry : $e.second) )
281	)
282}
283
284clang::DirectoryEntry|clang::FileEntry|clang::PragmaHandler{
285	preview ( [$e.Name,s] )
286	children (
287		#(
288			#([raw members] : [$c,!]),
289			#(Name : [$e.Name,s])
290		)
291	)
292}
293
294clang::DeclarationName{
295	preview (
296		; enum values from clang::DeclarationName::StoredNameKind
297		#if ($e.Ptr == 0) (
298			"empty"
299		) #elif (($e.Ptr & $e.PtrMask) == $e.StoredIdentifier) (
300			#else ( #("Identifier, ", (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask)) )
301		) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCZeroArgSelector) (
302			#("ZeroArgSelector, ", (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask))
303		) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCOneArgSelector) (
304			#("OneArgSelector, ", (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask))
305		) #elif (($e.Ptr & $e.PtrMask) == $e.StoredDeclarationNameExtra) (
306			#switch (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs)
307			#case 0 ( ;DeclarationNameExtra::CXXConstructor
308				#("CXXConstructorName, ", (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
309			)
310			#case 1 ( ;DeclarationNameExtra::CXXDestructor
311				#("CXXDestructorName, ", (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
312			)
313			#case 2 ( ;DeclarationNameExtra::CXXConversionFunction
314				#("CXXConversionFunctionName, ", (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
315			)
316			#case 46 ( ;DeclarationNameExtra::CXXLiteralOperator
317				#("CXXLiteralOperatorName, ", (clang::CXXLiteralOperatorIdName*)($e.Ptr & ~$e.PtrMask))
318			)
319			#case 47 ( ;DeclarationNameExtra::CXXUsingDirective
320				#("CXXUsingDirective")	;TODO What to add here?
321			)
322			#default (
323				#if (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs < 47) (
324					#("CXXOperatorName, ", (clang::CXXOperatorIdName*)($e.Ptr & ~$e.PtrMask))
325				) #else (
326					#("ObjCMultiArgSelector, ", (clang::MultiKeywordSelector*)($e.Ptr & ~$e.PtrMask))
327				)
328			)
329		)
330	)
331
332	children (
333		#(
334			; enum values from clang::DeclarationName::StoredNameKind
335			#if ($e.Ptr == 0) (
336				#array( expr: 0, size: 0 )
337			) #else (
338				#(
339					#([raw members] : [$e.Ptr,!]),
340					if (($e.Ptr & $e.PtrMask) == $e.StoredIdentifier) (
341						#(Ptr : (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask))
342					) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCZeroArgSelector) (
343						#(Ptr : (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask))
344					) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCOneArgSelector) (
345						#(Ptr : (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask))
346					) #elif (($e.Ptr & $e.PtrMask) == $e.StoredDeclarationNameExtra) (
347						#switch (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs)
348						#case 0 ( ;DeclarationNameExtra::CXXConstructor
349							#(Ptr : (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
350						)
351						#case 1 ( ;DeclarationNameExtra::CXXDestructor
352							#(Ptr : (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
353						)
354						#case 2 ( ;DeclarationNameExtra::CXXConversionFunction
355							#(Ptr : (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
356						)
357						#case 46 ( ;DeclarationNameExtra::CXXLiteralOperator
358							#(Ptr : (clang::CXXLiteralOperatorIdName*)($e.Ptr & ~$e.PtrMask))
359						)
360						#case 47 ( ;DeclarationNameExtra::CXXUsingDirective
361							#(Ptr : $e.Ptr)	;TODO What to add here?
362						)
363						#default (
364							#if (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs < 47) (
365								#(Ptr : (CXXOperatorIdName*)($e.Ptr & ~$e.PtrMask))
366							) #else (
367								#(Ptr : (clang::MultiKeywordSelector*)($e.Ptr & ~$e.PtrMask))
368							)
369						)
370					)
371				)
372			)
373		)
374	)
375}
376
377clang::DeclSpec{
378	preview (
379		#(
380			"[",
381			(clang::DeclSpec::SCS)$e.StorageClassSpec,
382			", ",
383			(clang::TypeSpecifierType)$e.TypeSpecType,
384			"]"
385		)
386	)
387}
388
389llvm::Triple{
390	preview ( $e.Data )
391}
392