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