00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00026
00027
00028
00029
00030 #define prefix_ inline
00031
00032
00033
00034
00035
00036 prefix_ senf::console::OverloadedCommandNode::ptr senf::console::OverloadedCommandNode::create()
00037 {
00038 return ptr(new OverloadedCommandNode());
00039 }
00040
00041 prefix_ senf::console::OverloadedCommandNode::ptr senf::console::OverloadedCommandNode::thisptr()
00042 {
00043 return boost::static_pointer_cast<OverloadedCommandNode>(shared_from_this());
00044 }
00045
00046 prefix_ senf::console::OverloadedCommandNode::cptr senf::console::OverloadedCommandNode::thisptr()
00047 const
00048 {
00049 return boost::static_pointer_cast<OverloadedCommandNode const>(shared_from_this());
00050 }
00051
00052 prefix_ senf::console::OverloadedCommandNode &
00053 senf::console::OverloadedCommandNode::doc(std::string const & doc)
00054 {
00055 doc_ = doc;
00056 return *this;
00057 }
00058
00059 prefix_ senf::console::OverloadedCommandNode &
00060 senf::console::OverloadedCommandNode::shortdoc(std::string const & doc)
00061 {
00062 shortdoc_ = doc;
00063 return *this;
00064 }
00065
00066 prefix_ unsigned
00067 senf::console::OverloadedCommandNode::overloadIndex(CommandOverload const & overload)
00068 {
00069 return find(overloads_.begin(), overloads_.end(), CommandOverload::cptr(&overload))
00070 - overloads_.begin() + 1;
00071 }
00072
00073 prefix_ senf::console::OverloadedCommandNode::OverloadsRange
00074 senf::console::OverloadedCommandNode::overloads()
00075 const
00076 {
00077 return boost::make_iterator_range(overloads_.begin(), overloads_.end());
00078 }
00079
00080 prefix_ senf::console::OverloadedCommandNode::OverloadedCommandNode()
00081 {}
00082
00083
00084
00085
00086 prefix_ senf::console::CommandOverload::~CommandOverload()
00087 {}
00088
00089 prefix_ void senf::console::CommandOverload::execute(boost::any & rv, std::ostream & os,
00090 ParseCommandInfo const & command)
00091 {
00092 v_execute(rv, os, command);
00093 }
00094
00095 prefix_ void senf::console::CommandOverload::operator()(boost::any & rv, std::ostream & os,
00096 ParseCommandInfo const & command)
00097 {
00098 execute(rv, os, command);
00099 }
00100
00101 prefix_ unsigned senf::console::CommandOverload::numArguments()
00102 const
00103 {
00104 return v_numArguments();
00105 }
00106
00107 prefix_ void senf::console::CommandOverload::argumentDoc(unsigned index, ArgumentDoc & doc)
00108 const
00109 {
00110 return v_argumentDoc(index,doc);
00111 }
00112
00113 prefix_ std::string senf::console::CommandOverload::doc()
00114 const
00115 {
00116 return v_doc();
00117 }
00118
00119 prefix_ senf::console::OverloadedCommandNode & senf::console::CommandOverload::node()
00120 const
00121 {
00122 SENF_ASSERT( node_, "Overload not added to any node yet" );
00123 return *node_;
00124 }
00125
00126 prefix_ unsigned senf::console::CommandOverload::overloadIndex()
00127 const
00128 {
00129 return node().overloadIndex(*this);
00130 }
00131
00132 prefix_ senf::console::CommandOverload::CommandOverload()
00133 : node_(0)
00134 {}
00135
00136
00137
00138
00139 prefix_ senf::console::SimpleCommandOverload::ptr
00140 senf::console::SimpleCommandOverload::create(Function fn)
00141 {
00142 return ptr(new SimpleCommandOverload(fn));
00143 }
00144
00145 prefix_ senf::console::SimpleCommandOverload &
00146 senf::console::SimpleCommandOverload::doc(std::string const & doc)
00147 {
00148 doc_ = doc;
00149 return *this;
00150 }
00151
00152 prefix_ senf::console::SimpleCommandOverload::SimpleCommandOverload(Function fn)
00153 : fn_ (fn)
00154 {}
00155
00156
00157
00158
00159 prefix_ senf::console::SimpleOverloadAttributor::
00160 SimpleOverloadAttributor(SimpleCommandOverload::Function fn)
00161 : overload_ (SimpleCommandOverload::create(fn))
00162 {}
00163
00164 prefix_ senf::console::SimpleOverloadAttributor const &
00165 senf::console::SimpleOverloadAttributor::doc(std::string const & doc)
00166 const
00167 {
00168 doc_ = doc;
00169 return *this;
00170 }
00171
00172 prefix_ senf::console::SimpleOverloadAttributor const &
00173 senf::console::SimpleOverloadAttributor::shortdoc(std::string const & doc)
00174 const
00175 {
00176 shortdoc_ = doc;
00177 return *this;
00178 }
00179
00180 prefix_ senf::console::SimpleOverloadAttributor const &
00181 senf::console::SimpleOverloadAttributor::overloadDoc(std::string const & doc)
00182 const
00183 {
00184 overload_->doc(doc);
00185 return *this;
00186 }
00187
00188 prefix_ senf::console::OverloadedCommandNode &
00189 senf::console::SimpleOverloadAttributor::create(DirectoryNode & dir, std::string const & name)
00190 const
00191 {
00192 OverloadedCommandNode & node (OverloadedCommandNode::insertOverload(dir, name, overload_));
00193 if (doc_) node.doc(*doc_);
00194 if (shortdoc_) node.shortdoc(*shortdoc_);
00195 return node;
00196 }
00197
00198
00199 #undef prefix_
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210