//===-- LVOptions.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 LVOptions class, which is used to record the command // line options. // //===----------------------------------------------------------------------===// #ifndef LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVOPTIONS_H #define LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVOPTIONS_H #include "llvm/ADT/StringSet.h" #include "llvm/DebugInfo/LogicalView/Core/LVLine.h" #include "llvm/DebugInfo/LogicalView/Core/LVScope.h" #include "llvm/DebugInfo/LogicalView/Core/LVSymbol.h" #include "llvm/DebugInfo/LogicalView/Core/LVType.h" #include "llvm/Support/Regex.h" #include <set> #include <string> namespace llvm { namespace logicalview { // Generate get and set 'bool' functions. #define BOOL_FUNCTION(FAMILY, FIELD) … // Generate get and set 'unsigned' functions. #define UNSIGNED_FUNCTION(FAMILY, FIELD) … // Generate get and set 'std::string' functions. #define STD_STRING_FUNCTION(FAMILY, FIELD) … // Generate get and set 'std::set' functions. #define STDSET_FUNCTION_4(FAMILY, FIELD, TYPE, SET) … #define STDSET_FUNCTION_5(FAMILY, FIELD, ENTRY, TYPE, SET) … // Generate get and set functions for '--attribute' #define ATTRIBUTE_OPTION(FIELD) … // Generate get and set functions for '--output' #define OUTPUT_OPTION(FIELD) … // Generate get and set functions for '--print' #define PRINT_OPTION(FIELD) … // Generate get and set functions for '--warning' #define WARNING_OPTION(FIELD) … // Generate get and set functions for '--compare' #define COMPARE_OPTION(FIELD) … // Generate get and set functions for '--report' #define REPORT_OPTION(FIELD) … // Generate get and set functions for '--internal' #define INTERNAL_OPTION(FIELD) … LVOffsetSet; enum class LVAttributeKind { … }; LVAttributeKindSet; enum class LVCompareKind { … }; LVCompareKindSet; enum class LVOutputKind { … }; LVOutputKindSet; enum class LVPrintKind { … }; LVPrintKindSet; enum class LVReportKind { … }; LVReportKindSet; enum class LVWarningKind { … }; LVWarningKindSet; enum class LVInternalKind { … }; LVInternalKindSet; // The 'Kinds' members are a one-to-one mapping to the associated command // options that supports comma separated values. There are other 'bool' // members that in very few cases point to a command option (see associated // comment). Other cases for 'bool' refers to internal values derivated from // the command options. class LVOptions { … }; inline LVOptions &options() { … } inline void setOptions(LVOptions *Options) { … } class LVPatterns final { … }; inline LVPatterns &patterns() { … } } // namespace logicalview } // namespace llvm #endif // LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVOPTIONS_H