c2aaf07b498659868f0db22bd55521e14e9ad51e
[senf.git] / senf / Utils / Console / ParsedCommand.cci
1 // $Id$
2 //
3 // Copyright (C) 2008
4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
5 // Competence Center NETwork research (NET), St. Augustin, GERMANY
6 //     Stefan Bund <g0dil@berlios.de>
7 //
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 2 of the License, or
11 // (at your option) any later version.
12 //
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 // GNU General Public License for more details.
17 //
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the
20 // Free Software Foundation, Inc.,
21 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22
23 /** \file
24     \brief ParsedCommand inline non-template implementation */
25
26 #include "ParsedCommand.ih"
27
28 // Custom includes
29
30 #define prefix_ inline
31 ///////////////////////////////cci.p///////////////////////////////////////
32
33 ///////////////////////////////////////////////////////////////////////////
34 // senf::console::detail::ArgumentInfoBase
35
36 prefix_ senf::console::detail::ArgumentInfoBase::ArgumentInfoBase(std::string const & type_,
37                                                                   bool singleToken_)
38     : type (type_), name (), hasDefault (false), singleToken (singleToken_)
39 {}
40
41 ///////////////////////////////////////////////////////////////////////////
42 // senf::console::ParsedCommandOverloadBase
43
44 prefix_ senf::console::ParsedCommandOverloadBase::ParsedCommandOverloadBase()
45 {}
46
47 prefix_ senf::console::detail::ArgumentInfoBase &
48 senf::console::ParsedCommandOverloadBase::arg(unsigned n)
49     const
50 {
51     BOOST_ASSERT(n < parameters_.size());
52     return * parameters_[n];
53 }
54
55 prefix_ void senf::console::ParsedCommandOverloadBase::doc(std::string const & d)
56 {
57     doc_ = d;
58 }
59
60 ///////////////////////////////////////////////////////////////////////////
61 // senf::console::ParsedCommandAttributorBase
62
63 prefix_ senf::console::OverloadedCommandNode &
64 senf::console::ParsedCommandAttributorBase::create(DirectoryNode & dir,
65                                                    std::string const & name)
66     const
67 {
68     OverloadedCommandNode & node (OverloadedCommandNode::insertOverload(dir, name, overload_));
69     if (doc_) node.doc(*doc_);
70     if (shortdoc_) node.shortdoc(*shortdoc_);
71     return node;
72 }
73
74 prefix_ senf::console::ParsedCommandAttributorBase::
75 ParsedCommandAttributorBase(ParsedCommandOverloadBase::ptr overload, unsigned index)
76   : overload_ (overload), index_ (index)
77 {}
78
79 prefix_ senf::console::ParsedCommandAttributorBase::
80 ParsedCommandAttributorBase(ParsedCommandAttributorBase const & other, unsigned index)
81     : overload_ (other.overload_), index_ (index), doc_ (other.doc_), shortdoc_ (other.shortdoc_)
82 {}
83
84 prefix_ senf::console::ParsedCommandOverloadBase &
85 senf::console::ParsedCommandAttributorBase::overload()
86     const
87 {
88     return *overload_;
89 }
90
91 prefix_ void senf::console::ParsedCommandAttributorBase::argName(std::string const & name)
92 {
93     overload().arg(index_).name = name;
94 }
95
96 prefix_ void senf::console::ParsedCommandAttributorBase::argDoc(std::string const & doc)
97 {
98     overload().arg(index_).doc = doc;
99 }
100
101 prefix_ void senf::console::ParsedCommandAttributorBase::typeName(std::string const & doc)
102 {
103     overload().arg(index_).type = doc;
104 }
105
106 prefix_ void senf::console::ParsedCommandAttributorBase::defaultDoc(std::string const & doc)
107 {
108     overload().arg(index_).defaultDoc = doc;
109 }
110
111 prefix_ void senf::console::ParsedCommandAttributorBase::overloadDoc(std::string const & doc)
112 {
113     overload().doc(doc);
114 }
115
116 prefix_ void senf::console::ParsedCommandAttributorBase::nodeDoc(std::string const & doc)
117 {
118     doc_ = doc;
119 }
120
121 prefix_ void senf::console::ParsedCommandAttributorBase::shortDoc(std::string const & doc)
122 {
123     shortdoc_ = doc;
124 }
125
126 ///////////////////////////////cci.e///////////////////////////////////////
127 #undef prefix_
128
129 \f
130 // Local Variables:
131 // mode: c++
132 // fill-column: 100
133 // comment-column: 40
134 // c-file-style: "senf"
135 // indent-tabs-mode: nil
136 // ispell-local-dictionary: "american"
137 // compile-command: "scons -u test"
138 // End: