// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Algo/Transform.h" #include "InsightsCore/Table/ViewModels/BaseTreeNode.h" #include "InsightsCore/Table/ViewModels/TableCellValueSorter.h" #include "Templates/SharedPointer.h" namespace UE::Insights { class FTable; class ITableCellValueSorter; namespace Private { template TArray ConvertNodes(const TArray& InNodes) { TArray BaseNodes; Algo::Transform(InNodes, BaseNodes, [](const TreeNodePtrType& Ptr) { return StaticCastSharedPtr(Ptr); }); return BaseNodes; } void CopyToClipboardImpl(TSharedRef Table, TArray SelectedNodes, TSharedPtr Sorter, ESortMode ColumnSortMode); void CopyNameToClipboardImpl(TSharedRef Table, TArray SelectedNodes, TSharedPtr Sorter, ESortMode ColumnSortMode); } // Private template void CopyToClipboard(TSharedRef Table, const TArray& SelectedNodes, TSharedPtr Sorter, ESortMode ColumnSortMode) { Private::CopyToClipboardImpl(Table, Private::ConvertNodes(SelectedNodes), MoveTemp(Sorter), ColumnSortMode); } template void CopyNameToClipboard(TSharedRef Table, const TArray& SelectedNodes, TSharedPtr Sorter, ESortMode ColumnSortMode) { Private::CopyNameToClipboardImpl(Table, Private::ConvertNodes(SelectedNodes), MoveTemp(Sorter), ColumnSortMode); } } // namespace UE::Insights