1356843Sdim//===- OptionUtils.h - Utilities for command line arguments -----*- C++ -*-===// 2356843Sdim// 3356843Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4356843Sdim// See https://llvm.org/LICENSE.txt for license information. 5356843Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6356843Sdim// 7356843Sdim//===----------------------------------------------------------------------===// 8356843Sdim// 9356843Sdim// This header contains utilities for command line arguments. 10356843Sdim// 11356843Sdim//===----------------------------------------------------------------------===// 12356843Sdim 13356843Sdim#ifndef LLVM_CLANG_DRIVER_OPTIONUTILS_H 14356843Sdim#define LLVM_CLANG_DRIVER_OPTIONUTILS_H 15356843Sdim 16356843Sdim#include "clang/Basic/Diagnostic.h" 17356843Sdim#include "clang/Basic/LLVM.h" 18356843Sdim#include "llvm/Option/OptSpecifier.h" 19356843Sdim 20356843Sdimnamespace llvm { 21356843Sdim 22356843Sdimnamespace opt { 23356843Sdim 24356843Sdimclass ArgList; 25356843Sdim 26356843Sdim} // namespace opt 27356843Sdim 28356843Sdim} // namespace llvm 29356843Sdim 30356843Sdimnamespace clang { 31356843Sdim/// Return the value of the last argument as an integer, or a default. If Diags 32356843Sdim/// is non-null, emits an error if the argument is given, but non-integral. 33356843Sdimint getLastArgIntValue(const llvm::opt::ArgList &Args, 34356843Sdim llvm::opt::OptSpecifier Id, int Default, 35356843Sdim DiagnosticsEngine *Diags = nullptr, unsigned Base = 0); 36356843Sdim 37356843Sdiminline int getLastArgIntValue(const llvm::opt::ArgList &Args, 38356843Sdim llvm::opt::OptSpecifier Id, int Default, 39356843Sdim DiagnosticsEngine &Diags, unsigned Base = 0) { 40356843Sdim return getLastArgIntValue(Args, Id, Default, &Diags, Base); 41356843Sdim} 42356843Sdim 43356843Sdimuint64_t getLastArgUInt64Value(const llvm::opt::ArgList &Args, 44356843Sdim llvm::opt::OptSpecifier Id, uint64_t Default, 45356843Sdim DiagnosticsEngine *Diags = nullptr, 46356843Sdim unsigned Base = 0); 47356843Sdim 48356843Sdiminline uint64_t getLastArgUInt64Value(const llvm::opt::ArgList &Args, 49356843Sdim llvm::opt::OptSpecifier Id, 50356843Sdim uint64_t Default, 51356843Sdim DiagnosticsEngine &Diags, 52356843Sdim unsigned Base = 0) { 53356843Sdim return getLastArgUInt64Value(Args, Id, Default, &Diags, Base); 54356843Sdim} 55356843Sdim 56356843Sdim} // namespace clang 57356843Sdim 58356843Sdim#endif // LLVM_CLANG_DRIVER_OPTIONUTILS_H 59