X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FParsedCommand.cti;h=e37906c81b4a5a91fa8d2e5b7b4d9517defd406e;hb=259da4c692259311c6ec99566b57f5ed1e68e93e;hp=9abe00dc94db72123cdb54d42984234c95e41900;hpb=f47679431aa3461936ee4a85c0c4216e44292b55;p=senf.git diff --git a/Console/ParsedCommand.cti b/Console/ParsedCommand.cti index 9abe00d..e37906c 100644 --- a/Console/ParsedCommand.cti +++ b/Console/ParsedCommand.cti @@ -34,20 +34,50 @@ ///////////////////////////////cti.p/////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// +// senf::console::detail::ArgumentInfoBase + +prefix_ senf::console::detail::ArgumentInfoBase::ArgumentInfoBase(std::string const & type_) + : type (type_), name (), hasDefault (false) +{} + +/////////////////////////////////////////////////////////////////////////// +// senf::console::detail::ArgumentInfo + +template +prefix_ typename senf::console::detail::ArgumentInfo::ptr +senf::console::detail::ArgumentInfo::create() +{ + return ptr(new ArgumentInfo()); +} + +template +prefix_ senf::console::detail::ArgumentInfo::ArgumentInfo() + : ArgumentInfoBase ( ArgumentTraits::description() ), + defaultValue () +{} + +template +prefix_ std::string senf::console::detail::ArgumentInfo::defaultValueStr() + const +{ + return hasDefault ? ArgumentTraits::str(defaultValue) : ""; +} + +/////////////////////////////////////////////////////////////////////////// // senf::console::ParsedCommandOverloadBase template -prefix_ senf::console::detail::ParameterInfo & +prefix_ senf::console::detail::ArgumentInfo & senf::console::ParsedCommandOverloadBase::arg(unsigned n) const { - return dynamic_cast &>(arg(n)); + return dynamic_cast &>(arg(n)); } template prefix_ void senf::console::ParsedCommandOverloadBase::addParameter() { - parameters_.push_back(detail::ParameterInfo::create()); + parameters_.push_back(detail::ArgumentInfo::create()); } /////////////////////////////////////////////////////////////////////////// @@ -87,11 +117,11 @@ senf::console::ParsedCommandAttributor::ParsedCommandAttributor(Overlo {} /////////////////////////////////////////////////////////////////////////// -// senf::console::ParsedAttributeAttributorBase +// senf::console::ParsedArgumentAttributorBase template prefix_ Self -senf::console::ParsedAttributeAttributorBase::doc(std::string const & doc) +senf::console::ParsedArgumentAttributorBase::doc(std::string const & doc) const { this->ParsedCommandAttributorBase::nodeDoc(doc); @@ -99,7 +129,7 @@ senf::console::ParsedAttributeAttributorBase::doc(std::string con } template -prefix_ Self senf::console::ParsedAttributeAttributorBase:: +prefix_ Self senf::console::ParsedArgumentAttributorBase:: overloadDoc(std::string const & doc) const { @@ -109,17 +139,17 @@ overloadDoc(std::string const & doc) template prefix_ -senf::console::ParsedAttributeAttributorBase:: -ParsedAttributeAttributorBase(Overload & overload, unsigned index) +senf::console::ParsedArgumentAttributorBase:: +ParsedArgumentAttributorBase(Overload & overload, unsigned index) : ParsedCommandAttributor (overload, index) {} /////////////////////////////////////////////////////////////////////////// -// senf::console::ParsedAttributeAttributor +// senf::console::ParsedArgumentAttributor template -prefix_ typename senf::console::ParsedAttributeAttributor::next_type -senf::console::ParsedAttributeAttributor::arg() +prefix_ typename senf::console::ParsedArgumentAttributor::next_type +senf::console::ParsedArgumentAttributor::arg() const { return next(); @@ -127,8 +157,8 @@ senf::console::ParsedAttributeAttributor::arg() template template -prefix_ typename senf::console::ParsedAttributeAttributor::next_type -senf::console::ParsedAttributeAttributor:: +prefix_ typename senf::console::ParsedArgumentAttributor::next_type +senf::console::ParsedArgumentAttributor:: argInfo(ArgumentPack const & args) const { @@ -146,14 +176,14 @@ argInfo(ArgumentPack const & args) template template -prefix_ void senf::console::ParsedAttributeAttributor:: +prefix_ void senf::console::ParsedArgumentAttributor:: argInfo(Kw const &, ArgumentPack const &, boost::mpl::true_) const {} template template -prefix_ void senf::console::ParsedAttributeAttributor:: +prefix_ void senf::console::ParsedArgumentAttributor:: argInfo(boost::parameter::keyword const &, ArgumentPack const & args, boost::mpl::false_) const @@ -163,7 +193,7 @@ argInfo(boost::parameter::keyword const &, ArgumentPack const & template template -prefix_ void senf::console::ParsedAttributeAttributor:: +prefix_ void senf::console::ParsedArgumentAttributor:: argInfo(boost::parameter::keyword const &, ArgumentPack const & args, boost::mpl::false_) const @@ -173,7 +203,7 @@ argInfo(boost::parameter::keyword const &, ArgumentPack c template template -prefix_ void senf::console::ParsedAttributeAttributor:: +prefix_ void senf::console::ParsedArgumentAttributor:: argInfo(boost::parameter::keyword const &, ArgumentPack const & args, boost::mpl::false_) const @@ -183,21 +213,21 @@ argInfo(boost::parameter::keyword const &, ArgumentPack template prefix_ -senf::console::ParsedAttributeAttributor:: -ParsedAttributeAttributor(Overload & overload) - : ParsedAttributeAttributorBase (overload, index) +senf::console::ParsedArgumentAttributor:: +ParsedArgumentAttributor(Overload & overload) + : ParsedArgumentAttributorBase (overload, index) {} template -prefix_ typename senf::console::ParsedAttributeAttributor::next_type -senf::console::ParsedAttributeAttributor::next() +prefix_ typename senf::console::ParsedArgumentAttributor::next_type +senf::console::ParsedArgumentAttributor::next() const { - return ParsedAttributeAttributor(this->overload()); + return ParsedArgumentAttributor(this->overload()); } template -prefix_ void senf::console::ParsedAttributeAttributor:: +prefix_ void senf::console::ParsedArgumentAttributor:: defaultValue(value_type const & value) const { @@ -205,14 +235,14 @@ defaultValue(value_type const & value) } /////////////////////////////////////////////////////////////////////////// -// senf::console::ParsedAttributeAttributor +// senf::console::ParsedArgumentAttributor template prefix_ -senf::console::ParsedAttributeAttributor:: -ParsedAttributeAttributor(Overload & overload) - : ParsedAttributeAttributorBase< Overload, - ParsedAttributeAttributor > (overload, index) +senf::console::ParsedArgumentAttributor:: +ParsedArgumentAttributor(Overload & overload) + : ParsedArgumentAttributorBase< Overload, + ParsedArgumentAttributor > (overload, index) {} /////////////////////////////////////////////////////////////////////////// @@ -256,7 +286,7 @@ namespace { } template -prefix_ senf::console::ParsedAttributeAttributor< +prefix_ senf::console::ParsedArgumentAttributor< senf::console::ParsedCommandOverload< typename senf::console::detail::ParsedCommandTraits::traits> > senf::console::senf_console_add_node(DirectoryNode & node, std::string const & name, @@ -269,7 +299,7 @@ senf::console::senf_console_add_node(DirectoryNode & node, std::string const & n typedef detail::ParsedCommandTraits CmdTraits; typedef ParsedCommandOverload Overload; - typedef ParsedAttributeAttributor Attributor; + typedef ParsedArgumentAttributor Attributor; return Attributor( cmdNode.add( CreateParsedCommandOverload< @@ -277,7 +307,7 @@ senf::console::senf_console_add_node(DirectoryNode & node, std::string const & n } template -prefix_ senf::console::ParsedAttributeAttributor< +prefix_ senf::console::ParsedArgumentAttributor< senf::console::ParsedCommandOverload< typename senf::console::detail::ParsedCommandTraits::traits> > senf::console:: @@ -292,7 +322,7 @@ senf_console_add_node(DirectoryNode & node, Owner & owner, std::string const & n typedef detail::ParsedCommandTraits CmdTraits; typedef ParsedCommandOverload Overload; - typedef ParsedAttributeAttributor Attributor; + typedef ParsedArgumentAttributor Attributor; return Attributor( cmdNode.add( CreateParsedCommandOverload< @@ -300,6 +330,23 @@ senf_console_add_node(DirectoryNode & node, Owner & owner, std::string const & n senf::membind(fn,&owner)) ) ); } +/////////////////////////////////////////////////////////////////////////// +// senf::console::detail::CheckVoidReturn + +template +template +prefix_ void senf::console::detail::CheckVoidReturn::call(Fn fn, std::ostream & os) +{ + ReturnValueTraits::format(fn(),os); + os << "\n"; +} + +template +prefix_ void senf::console::detail::CheckVoidReturn::call(Fn fn, std::ostream & os) +{ + fn(); +} + ///////////////////////////////cti.e/////////////////////////////////////// #undef prefix_