[Visualizer] llvm::SmallVector<*,*>{ preview ( #if ((($T1*)$e.EndX - ($T1*)$e.BeginX) == 0) ( "empty" ) #else ( #( "[", ($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::SmallVectorImpl<*>{ preview ( #if ((($T1*)$e.EndX - ($T1*)$e.BeginX) == 0) ( "empty" ) #else ( #( "[", ($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::SmallString<*>{ preview ([$e.BeginX,s]) stringview ([$e.BeginX,sb]) } 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 ( #( #([raw members] : [$e,!]), #([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 ( #( #([raw members] : [$e,!]), #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)) ) ) ) } llvm::IntrusiveRefCntPtr<*>{ preview ( #if ($e.Obj == 0) ( "empty" ) #else ( #( "[RefCnt=", $e.Obj->ref_cnt, ", ", "Obj=", $e.Obj, "]" ) ) ) children ( #if ($e.Obj == 0) ( #array(expr: 0, size: 0) ) #else ( #( #(RefCnt : $e.Obj->ref_cnt), #(Obj : $e.Obj) ) ) ) } llvm::OwningPtr<*>{ preview ( #if ($e.Ptr == 0) ( "empty" ) #else ( $e.Ptr ) ) children ( #if ($e.Ptr == 0) ( #array(expr: 0, size: 0) ) #else ( #(Ptr : $e.Ptr) ) ) } llvm::SmallPtrSet<*,*>{ preview ( #( #if (($e.CurArray) == ($e.SmallArray)) ( "[Small Mode] " ) #else ( "[Big Mode] " ), "NumElements=", $e.NumElements, " CurArraySize=", $e.CurArraySize ) ) children ( #( #([raw members] : [$c,!]), #(NumElements : $e.NumElements), #(CurArraySize : $e.CurArraySize), #array( expr: $e.CurArray[$i], size: $e.CurArraySize + 1 ) : ($T1*)&$e ) ) } llvm::DenseMap<*,*,*>{ preview ( #if ($e.NumEntries == 0) ( "empty" ) #else ( #( "[NumEntries=", $e.NumEntries, " NumBuckets=", $e.NumBuckets, "]" ) ) ) children ( #if ($e.NumEntries == 0) ( #array(expr: 0, size: 0) ) #else ( #( #([raw members] : [$c,!]), #(NumEntries : $e.NumEntries), #(NumBuckets : $e.NumBuckets), #array( expr: $e.Buckets[$i], size: $e.NumBuckets ) ) ) ) } llvm::StringMap<*,*>{ preview ( #( "[NumBuckets=", $e.NumBuckets, " ItemSize=", $e.ItemSize, "]" ) ) children ( #( #([raw members] : [$c,!]), #(NumBuckets : $e.NumBuckets), #(ItemSize : $e.ItemSize), #array( expr: $e.TheTable[$i], size: $e.NumBuckets, ) : (llvm::StringMapEntry<$T1>*)&$e ) ) } llvm::StringMapEntry<*>{ preview ( #if ($e.StrLen == 0) ( "empty" ) #else ( #(Entry : $e.second) ) ) children ( #if ($e.StrLen == 0) ( "empty" ) #else ( #(Entry : $e.second) ) ) } clang::DirectoryEntry|clang::FileEntry|clang::PragmaHandler{ preview ( [$e.Name,s] ) children ( #( #([raw members] : [$c,!]), #(Name : [$e.Name,s]) ) ) } clang::DeclarationName{ preview ( ; enum values from clang::DeclarationName::StoredNameKind #if ($e.Ptr == 0) ( "empty" ) #elif (($e.Ptr & $e.PtrMask) == $e.StoredIdentifier) ( #else ( #("Identifier, ", (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask)) ) ) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCZeroArgSelector) ( #("ZeroArgSelector, ", (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask)) ) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCOneArgSelector) ( #("OneArgSelector, ", (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask)) ) #elif (($e.Ptr & $e.PtrMask) == $e.StoredDeclarationNameExtra) ( #switch (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs) #case 0 ( ;DeclarationNameExtra::CXXConstructor #("CXXConstructorName, ", (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask)) ) #case 1 ( ;DeclarationNameExtra::CXXDestructor #("CXXDestructorName, ", (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask)) ) #case 2 ( ;DeclarationNameExtra::CXXConversionFunction #("CXXConversionFunctionName, ", (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask)) ) #case 46 ( ;DeclarationNameExtra::CXXLiteralOperator #("CXXLiteralOperatorName, ", (clang::CXXLiteralOperatorIdName*)($e.Ptr & ~$e.PtrMask)) ) #case 47 ( ;DeclarationNameExtra::CXXUsingDirective #("CXXUsingDirective") ;TODO What to add here? ) #default ( #if (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs < 47) ( #("CXXOperatorName, ", (clang::CXXOperatorIdName*)($e.Ptr & ~$e.PtrMask)) ) #else ( #("ObjCMultiArgSelector, ", (clang::MultiKeywordSelector*)($e.Ptr & ~$e.PtrMask)) ) ) ) ) children ( #( ; enum values from clang::DeclarationName::StoredNameKind #if ($e.Ptr == 0) ( #array( expr: 0, size: 0 ) ) #else ( #( #([raw members] : [$e.Ptr,!]), if (($e.Ptr & $e.PtrMask) == $e.StoredIdentifier) ( #(Ptr : (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask)) ) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCZeroArgSelector) ( #(Ptr : (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask)) ) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCOneArgSelector) ( #(Ptr : (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask)) ) #elif (($e.Ptr & $e.PtrMask) == $e.StoredDeclarationNameExtra) ( #switch (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs) #case 0 ( ;DeclarationNameExtra::CXXConstructor #(Ptr : (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask)) ) #case 1 ( ;DeclarationNameExtra::CXXDestructor #(Ptr : (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask)) ) #case 2 ( ;DeclarationNameExtra::CXXConversionFunction #(Ptr : (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask)) ) #case 46 ( ;DeclarationNameExtra::CXXLiteralOperator #(Ptr : (clang::CXXLiteralOperatorIdName*)($e.Ptr & ~$e.PtrMask)) ) #case 47 ( ;DeclarationNameExtra::CXXUsingDirective #(Ptr : $e.Ptr) ;TODO What to add here? ) #default ( #if (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs < 47) ( #(Ptr : (CXXOperatorIdName*)($e.Ptr & ~$e.PtrMask)) ) #else ( #(Ptr : (clang::MultiKeywordSelector*)($e.Ptr & ~$e.PtrMask)) ) ) ) ) ) ) ) } clang::DeclSpec{ preview ( #( "[", (clang::DeclSpec::SCS)$e.StorageClassSpec, ", ", (clang::TypeSpecifierType)$e.TypeSpecType, "]" ) ) } llvm::Triple{ preview ( $e.Data ) }