LLDB mainline
GetOptInc.h
Go to the documentation of this file.
1//===-- GetOptInc.h ---------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_HOST_COMMON_GETOPTINC_H
10#define LLDB_HOST_COMMON_GETOPTINC_H
11
12#include "lldb/lldb-defines.h"
13
14#if defined(_MSC_VER)
15#define REPLACE_GETOPT
16#define REPLACE_GETOPT_LONG
17#endif
18#if defined(_MSC_VER) || defined(__NetBSD__)
19#define REPLACE_GETOPT_LONG_ONLY
20#endif
21
22#if defined(REPLACE_GETOPT)
23// from getopt.h
24#define no_argument 0
25#define required_argument 1
26#define optional_argument 2
27
28// option structure
29struct option {
30 const char *name;
31 // has_arg can't be an enum because some compilers complain about type
32 // mismatches in all the code that assumes it is an int.
33 int has_arg;
34 int *flag;
35 int val;
36};
37
38int getopt(int argc, char *const argv[], const char *optstring);
39
40// from getopt.h
41extern char *optarg;
42extern int optind;
43extern int opterr;
44extern int optopt;
45
46// defined in unistd.h
47extern int optreset;
48#else
49#include <getopt.h>
50#include <unistd.h>
51#endif
52
53#if defined(REPLACE_GETOPT_LONG)
54int getopt_long(int argc, char *const *argv, const char *optstring,
55 const struct option *longopts, int *longindex);
56#endif
57
58#if defined(REPLACE_GETOPT_LONG_ONLY)
59int getopt_long_only(int argc, char *const *argv, const char *optstring,
60 const struct option *longopts, int *longindex);
61#endif
62
63#endif // LLDB_HOST_COMMON_GETOPTINC_H