LLVM: lib/Option/Arg.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

11#include "llvm/Config/llvm-config.h"

18

19using namespace llvm;

21

23 : Opt(Opt), BaseArg(BaseArg), Spelling(S), Index(Index), Claimed(false),

24 IgnoredTargetSpecific(false), OwnsValues(false) {}

25

27 const Arg *BaseArg)

28 : Opt(Opt), BaseArg(BaseArg), Spelling(S), Index(Index), Claimed(false),

29 IgnoredTargetSpecific(false), OwnsValues(false) {

30 Values.push_back(Value0);

31}

32

34 const char *Value1, const Arg *BaseArg)

35 : Opt(Opt), BaseArg(BaseArg), Spelling(S), Index(Index), Claimed(false),

36 IgnoredTargetSpecific(false), OwnsValues(false) {

37 Values.push_back(Value0);

38 Values.push_back(Value1);

39}

40

42 if (OwnsValues) {

43 for (const char *V : Values)

44 delete[] V;

45 }

46}

47

49 O << "<Opt:";

50 Opt.print(O, false);

51

52 O << " Index:" << Index;

53

54 O << " Values: [";

55 for (unsigned i = 0, e = Values.size(); i != e; ++i) {

56 if (i) O << ", ";

57 O << "'" << Values[i] << "'";

58 }

59

60 O << "]>\n";

61}

62

63#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)

65#endif

66

68 if (Alias)

69 return Alias->getAsString(Args);

70

73

77 return std::string(OS.str());

78}

79

81 if (getOption().hasNoOptAsInput()) {

83 return;

84 }

85

86 Output.append(Values.begin(), Values.end());

87}

88

90 switch (getOption().getRenderStyle()) {

92 Output.append(Values.begin(), Values.end());

93 break;

94

99 Output.push_back(Args.MakeArgString(OS.str()));

100 break;

101 }

102

104 Output.push_back(Args.GetOrMakeJoinedArgString(

106 Output.append(Values.begin() + 1, Values.end());

107 break;

108

111 Output.append(Values.begin(), Values.end());

112 break;

113 }

114}

Defines the llvm::Arg class for parsed arguments.

#define LLVM_DUMP_METHOD

Mark debug helper function definitions like dump() that should not be stripped from debug builds.

This file defines the SmallString class.

SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...

void append(ItTy in_start, ItTy in_end)

Add the specified range to the end of the SmallVector.

void push_back(const T &Elt)

StringRef - Represent a constant reference to a string, i.e.

ArgList - Ordered collection of driver arguments.

LLVM_ABI void render(const ArgList &Args, ArgStringList &Output) const

Append the argument onto the given array as strings.

Definition Arg.cpp:89

LLVM_ABI void print(raw_ostream &O) const

Definition Arg.cpp:48

LLVM_ABI void renderAsInput(const ArgList &Args, ArgStringList &Output) const

Append the argument, render as an input, onto the given array as strings.

Definition Arg.cpp:80

StringRef getSpelling() const

Returns the used prefix and name of the option: For --foo=bar, returns --foo=.

LLVM_ABI Arg(const Option Opt, StringRef Spelling, unsigned Index, const Arg *BaseArg=nullptr)

Definition Arg.cpp:22

SmallVectorImpl< const char * > & getValues()

LLVM_ABI std::string getAsString(const ArgList &Args) const

Return a formatted version of the argument and its values, for diagnostics.

Definition Arg.cpp:67

const Option & getOption() const

unsigned getIndex() const

LLVM_ABI void dump() const

Definition Arg.cpp:64

LLVM_ABI ~Arg()

Definition Arg.cpp:41

const char * getValue(unsigned N=0) const

Option - Abstract representation for a single form of driver argument.

This class implements an extremely fast bulk output stream that can only output to a stream.

A raw_ostream that writes to an SmallVector or SmallString.

StringRef str() const

Return a StringRef for the vector contents.

SmallVector< const char *, 16 > ArgStringList

ArgStringList - Type used for constructing argv lists for subprocesses.

This is an optimization pass for GlobalISel generic memory operations.

InterleavedRange< Range > interleaved(const Range &R, StringRef Separator=", ", StringRef Prefix="", StringRef Suffix="")

Output range R as a sequence of interleaved elements.

LLVM_ABI raw_ostream & dbgs()

dbgs() - This returns a reference to a raw_ostream for debugging messages.