| //===-- LVSort.h ------------------------------------------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file defines the sort algorithms. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVSORT_H |
| #define LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVSORT_H |
| |
| namespace llvm { |
| namespace logicalview { |
| |
| class LVObject; |
| |
| // Object Sorting Mode. |
| enum class LVSortMode { |
| None = 0, // No given sort. |
| Kind, // Sort by kind. |
| Line, // Sort by line. |
| Name, // Sort by name. |
| Offset // Sort by offset. |
| }; |
| |
| // Type of function to be called when sorting an object. |
| using LVSortValue = int; |
| using LVSortFunction = LVSortValue (*)(const LVObject *LHS, |
| const LVObject *RHS); |
| |
| // Get the comparator function, based on the command line options. |
| LVSortFunction getSortFunction(); |
| |
| // Comparator functions that can be used for sorting. |
| LVSortValue compareKind(const LVObject *LHS, const LVObject *RHS); |
| LVSortValue compareLine(const LVObject *LHS, const LVObject *RHS); |
| LVSortValue compareName(const LVObject *LHS, const LVObject *RHS); |
| LVSortValue compareOffset(const LVObject *LHS, const LVObject *RHS); |
| LVSortValue compareRange(const LVObject *LHS, const LVObject *RHS); |
| LVSortValue sortByKind(const LVObject *LHS, const LVObject *RHS); |
| LVSortValue sortByLine(const LVObject *LHS, const LVObject *RHS); |
| LVSortValue sortByName(const LVObject *LHS, const LVObject *RHS); |
| |
| } // end namespace logicalview |
| } // end namespace llvm |
| |
| #endif // LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVSORT_H |