
[Visualizer]

llvm::SmallVector<*,*>{
	preview (
		#(
			"[",
			($T1*)$e.EndX - ($T1*)$e.BeginX,
			"](",
			#array(
				expr: (($T1*)$e.BeginX)[$i],
				size: ($T1*)$e.EndX - ($T1*)$e.BeginX
			),
			")"
		)
	)

	children (
		#(
			#([size] : ($T1*)$e.EndX - ($T1*)$e.BeginX),
			#([capacity] : ($T1*)$e.CapacityX - ($T1*)$e.BeginX),
			#array(
				expr: (($T1*)$e.BeginX)[$i],
				size: ($T1*)$e.EndX - ($T1*)$e.BeginX
			)
		)
	)
}

llvm::StringRef{
	preview ([$e.Data,s])
	stringview ([$e.Data,sb])

	children (
		#(
			#([size] : $e.Length),
			#array(expr: $e.Data[$i], size: $e.Length)
		)
	)
}

clang::Token{
	preview((clang::tok::TokenKind)(int)$e.Kind)
}

llvm::PointerIntPair<*,*,*,*>{
	preview (
		#(
			($T1*)($e.Value & $e.PointerBitMask),
			" [",
			($T3)(($e.Value >> $e.IntShift) & $e.IntMask),
			"]"
		)
	)
	
	children (
		#(
			#([ptr] : ($T1*)($e.Value & $e.PointerBitMask)),
			#([int] : ($T3)($e.Value >> $e.IntShift) & $e.IntMask)
		)
	)
}

llvm::PointerUnion<*,*>{
	preview (
		#if ((($e.Val.Value >> $e.Val.IntShift) & $e.Val.IntMask) == 0) (
			"PT1"
		) #else (
			"PT2"
		)
	)
	
	children (
		#(
			#if ((($e.Val.Value >> $e.Val.IntShift) & $e.Val.IntMask) == 0) (
				#([ptr] : ($T1)($e.Val.Value & $e.Val.PointerBitMask))
			)	#else (
				#([ptr] : ($T2)($e.Val.Value & $e.Val.PointerBitMask))
			)
		)
	)
}

llvm::PointerUnion3<*,*,*>{
	preview (
		#if (($e.Val.Val.Value & 0x2) == 2) (
			"PT2"
		) #elif (($e.Val.Val.Value & 0x1) == 1) (
			"PT3"
		) #else (
			"PT1"
		)
	)
	
	children (
		#(
			#if (($e.Val.Val.Value & 0x2) == 2) (
				#([ptr] : ($T2)(($e.Val.Val.Value >> 2) << 2))
			) #elif (($e.Val.Val.Value & 0x1) == 1) (
				#([ptr] : ($T3)(($e.Val.Val.Value >> 2) << 2))
			) #else (
				#([ptr] : ($T1)(($e.Val.Val.Value >> 2) << 2))
			)
		)
	)
}

llvm::PointerUnion4<*,*,*,*>{
	preview (
		#if (($e.Val.Val.Value & 0x3) == 3) (
			"PT4"
		)	#elif (($e.Val.Val.Value & 0x2) == 2) (
			"PT2"
		) #elif (($e.Val.Val.Value & 0x1) == 1) (
			"PT3"
		) #else (
			"PT1"
		)
	)
	
	children (
		#(
			#if (($e.Val.Val.Value & 0x3) == 3) (
				#([ptr] : ($T4)(($e.Val.Val.Value >> 2) << 2))
			)	#elif (($e.Val.Val.Value & 0x2) == 2) (
				#([ptr] : ($T2)(($e.Val.Val.Value >> 2) << 2))
			) #elif (($e.Val.Val.Value & 0x1) == 1) (
				#([ptr] : ($T3)(($e.Val.Val.Value >> 2) << 2))
			) #else (
				#([ptr] : ($T1)(($e.Val.Val.Value >> 2) << 2))
			)
		)
	)
}
