<commit_before>
[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)
}<commit_msg>Added MSVC visualizers for PointerIntPair and PointerUnions.<commit_after>
[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)
}

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

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))
			)
		)
	)
}

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))
			)
		)
	)
}

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))
			)
		)
	)
}
{'fraction_non_alphanumeric': 0.307323313079629, 'fraction_numerical': 0.030060761112887753, 'mean_word_length': 2.649941656942824, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 31, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1177439', 'n_tokens_mistral': 1796, 'n_tokens_neox': 1557, 'n_words': 207}