blob: a4581d0e9ec1e4b8e96db9c49c2258f97757074d [file] [log] [blame]
Daniel Dunbarfb36cae2009-03-04 22:37:52 +00001//===--- Arg.cpp - Argument Implementations -----------------------------*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "clang/Driver/Arg.h"
Daniel Dunbarf781c412009-03-04 23:02:50 +000011#include "clang/Driver/Option.h"
12#include "llvm/Support/raw_ostream.h"
Daniel Dunbarfb36cae2009-03-04 22:37:52 +000013
14using namespace clang::driver;
15
16Arg::Arg(ArgClass _Kind, const Option *_Opt, unsigned _Index)
17 : Kind(_Kind),
18 Opt(_Opt),
19 Index(_Index)
20{
21}
22
23Arg::~Arg() { }
24
Daniel Dunbarf781c412009-03-04 23:02:50 +000025void Arg::dump() const {
26 llvm::errs() << "<";
27 switch (Kind) {
28 default:
29 assert(0 && "Invalid kind");
30#define P(N) case N: llvm::errs() << #N; break
31 P(PositionalClass);
32 P(JoinedClass);
33 P(SeparateClass);
34 P(CommaJoinedClass);
35 P(JoinedAndSeparateClass);
36#undef P
37 }
38
39 llvm::errs() << " Opt:";
40 Opt->dump();
41
42 llvm::errs() << " Index:" << Index;
43
Daniel Dunbarbbf842b2009-03-04 23:22:02 +000044 if (isa<CommaJoinedArg>(this) || isa<SeparateArg>(this))
45 llvm::errs() << " NumValues:" << getNumValues();
Daniel Dunbarf781c412009-03-04 23:02:50 +000046
47 llvm::errs() << ">\n";
48
49 llvm::errs().flush(); // FIXME
50}
51
Daniel Dunbarfb36cae2009-03-04 22:37:52 +000052PositionalArg::PositionalArg(const Option *Opt, unsigned Index)
53 : Arg(PositionalClass, Opt, Index) {
54}
55
56void PositionalArg::render(const ArgList &Args, ArgStringList &Output) const {
57 assert(0 && "FIXME: Implement");
58}
59
60const char *PositionalArg::getValue(const ArgList &Args, unsigned N) const {
61 assert(0 && "FIXME: Implement");
62}
63
64JoinedArg::JoinedArg(const Option *Opt, unsigned Index)
65 : Arg(JoinedClass, Opt, Index) {
66}
67
68void JoinedArg::render(const ArgList &Args, ArgStringList &Output) const {
69 assert(0 && "FIXME: Implement");
70}
71
72const char *JoinedArg::getValue(const ArgList &Args, unsigned N) const {
73 assert(0 && "FIXME: Implement");
74}
75
76CommaJoinedArg::CommaJoinedArg(const Option *Opt, unsigned Index,
77 unsigned _NumValues)
78 : Arg(CommaJoinedClass, Opt, Index), NumValues(_NumValues) {
79}
80
81void CommaJoinedArg::render(const ArgList &Args, ArgStringList &Output) const {
82 assert(0 && "FIXME: Implement");
83}
84
85const char *CommaJoinedArg::getValue(const ArgList &Args, unsigned N) const {
86 assert(0 && "FIXME: Implement");
87}
88
Daniel Dunbarf781c412009-03-04 23:02:50 +000089SeparateArg::SeparateArg(const Option *Opt, unsigned Index, unsigned _NumValues)
90 : Arg(SeparateClass, Opt, Index), NumValues(_NumValues) {
91}
92
93void SeparateArg::render(const ArgList &Args, ArgStringList &Output) const {
94 assert(0 && "FIXME: Implement");
95}
96
97const char *SeparateArg::getValue(const ArgList &Args, unsigned N) const {
98 assert(0 && "FIXME: Implement");
99}
100
Daniel Dunbarfb36cae2009-03-04 22:37:52 +0000101JoinedAndSeparateArg::JoinedAndSeparateArg(const Option *Opt, unsigned Index)
102 : Arg(JoinedAndSeparateClass, Opt, Index) {
103}
104
105void JoinedAndSeparateArg::render(const ArgList &Args,
106 ArgStringList &Output) const {
107 assert(0 && "FIXME: Implement");
108}
109
110const char *JoinedAndSeparateArg::getValue(const ArgList &Args,
111 unsigned N) const {
112 assert(0 && "FIXME: Implement");
113}