switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / Utils / Console / ParsedCommand.cci
1 // $Id$
2 //
3 // Copyright (C) 2008
4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
5 //
6 // The contents of this file are subject to the Fraunhofer FOKUS Public License
7 // Version 1.0 (the "License"); you may not use this file except in compliance
8 // with the License. You may obtain a copy of the License at 
9 // http://senf.berlios.de/license.html
10 //
11 // The Fraunhofer FOKUS Public License Version 1.0 is based on, 
12 // but modifies the Mozilla Public License Version 1.1.
13 // See the full license text for the amendments.
14 //
15 // Software distributed under the License is distributed on an "AS IS" basis, 
16 // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
17 // for the specific language governing rights and limitations under the License.
18 //
19 // The Original Code is Fraunhofer FOKUS code.
20 //
21 // The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. 
22 // (registered association), Hansastraße 27 c, 80686 Munich, Germany.
23 // All Rights Reserved.
24 //
25 // Contributor(s):
26 //   Stefan Bund <g0dil@berlios.de>
27
28 /** \file
29     \brief ParsedCommand inline non-template implementation */
30
31 #include "ParsedCommand.ih"
32
33 // Custom includes
34
35 #define prefix_ inline
36 //-/////////////////////////////////////////////////////////////////////////////////////////////////
37
38 //-/////////////////////////////////////////////////////////////////////////////////////////////////
39 // senf::console::detail::ArgumentInfoBase
40
41 prefix_ senf::console::detail::ArgumentInfoBase::ArgumentInfoBase(std::string const & type_,
42                                                                   bool singleToken_)
43     : type (type_), name (), hasDefault (false), singleToken (singleToken_)
44 {}
45
46 //-/////////////////////////////////////////////////////////////////////////////////////////////////
47 // senf::console::ParsedCommandOverloadBase
48
49 prefix_ senf::console::ParsedCommandOverloadBase::ParsedCommandOverloadBase()
50 {}
51
52 prefix_ senf::console::detail::ArgumentInfoBase &
53 senf::console::ParsedCommandOverloadBase::arg(unsigned n)
54     const
55 {
56     BOOST_ASSERT(n < parameters_.size());
57     return * parameters_[n];
58 }
59
60 prefix_ void senf::console::ParsedCommandOverloadBase::doc(std::string const & d)
61 {
62     doc_ = d;
63 }
64
65 //-/////////////////////////////////////////////////////////////////////////////////////////////////
66 // senf::console::ParsedCommandAttributorBase
67
68 prefix_ senf::console::OverloadedCommandNode &
69 senf::console::ParsedCommandAttributorBase::create(DirectoryNode & dir,
70                                                    std::string const & name)
71     const
72 {
73     OverloadedCommandNode & node (OverloadedCommandNode::insertOverload(dir, name, overload_));
74     if (doc_) node.doc(*doc_);
75     if (shortdoc_) node.shortdoc(*shortdoc_);
76     return node;
77 }
78
79 prefix_ senf::console::ParsedCommandAttributorBase::
80 ParsedCommandAttributorBase(ParsedCommandOverloadBase::ptr overload, unsigned index)
81   : overload_ (overload), index_ (index)
82 {}
83
84 prefix_ senf::console::ParsedCommandAttributorBase::
85 ParsedCommandAttributorBase(ParsedCommandAttributorBase const & other, unsigned index)
86     : overload_ (other.overload_), index_ (index), doc_ (other.doc_), shortdoc_ (other.shortdoc_)
87 {}
88
89 prefix_ senf::console::ParsedCommandOverloadBase &
90 senf::console::ParsedCommandAttributorBase::overload()
91     const
92 {
93     return *overload_;
94 }
95
96 prefix_ void senf::console::ParsedCommandAttributorBase::argName(std::string const & name)
97 {
98     overload().arg(index_).name = name;
99 }
100
101 prefix_ void senf::console::ParsedCommandAttributorBase::argDoc(std::string const & doc)
102 {
103     overload().arg(index_).doc = doc;
104 }
105
106 prefix_ void senf::console::ParsedCommandAttributorBase::typeName(std::string const & doc)
107 {
108     overload().arg(index_).type = doc;
109 }
110
111 prefix_ void senf::console::ParsedCommandAttributorBase::defaultDoc(std::string const & doc)
112 {
113     overload().arg(index_).defaultDoc = doc;
114 }
115
116 prefix_ void senf::console::ParsedCommandAttributorBase::overloadDoc(std::string const & doc)
117 {
118     overload().doc(doc);
119 }
120
121 prefix_ void senf::console::ParsedCommandAttributorBase::nodeDoc(std::string const & doc)
122 {
123     doc_ = doc;
124 }
125
126 prefix_ void senf::console::ParsedCommandAttributorBase::shortDoc(std::string const & doc)
127 {
128     shortdoc_ = doc;
129 }
130
131 //-/////////////////////////////////////////////////////////////////////////////////////////////////
132 #undef prefix_
133
134 \f
135 // Local Variables:
136 // mode: c++
137 // fill-column: 100
138 // comment-column: 40
139 // c-file-style: "senf"
140 // indent-tabs-mode: nil
141 // ispell-local-dictionary: "american"
142 // compile-command: "scons -u test"
143 // End: