switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / Utils / Console / OverloadedCommand.cc
index c9e7529..e311adf 100644 (file)
@@ -1,24 +1,29 @@
 // $Id$
 //
-// Copyright (C) 2008 
+// Copyright (C) 2008
 // Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
-//     Stefan Bund <g0dil@berlios.de>
 //
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
+// The contents of this file are subject to the Fraunhofer FOKUS Public License
+// Version 1.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at 
+// http://senf.berlios.de/license.html
 //
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
+// The Fraunhofer FOKUS Public License Version 1.0 is based on, 
+// but modifies the Mozilla Public License Version 1.1.
+// See the full license text for the amendments.
 //
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the
-// Free Software Foundation, Inc.,
-// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+// Software distributed under the License is distributed on an "AS IS" basis, 
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
+// for the specific language governing rights and limitations under the License.
+//
+// The Original Code is Fraunhofer FOKUS code.
+//
+// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. 
+// (registered association), Hansastraße 27 c, 80686 Munich, Germany.
+// All Rights Reserved.
+//
+// Contributor(s):
+//   Stefan Bund <g0dil@berlios.de>
 
 /** \file
     \brief OverloadedCommand non-inline non-template implementation */
 
 //#include "OverloadedCommand.mpp"
 #define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::console::OverloadedCommandNode
 
-///////////////////////////////////////////////////////////////////////////
+prefix_ senf::console::OverloadedCommandNode &
+senf::console::OverloadedCommandNode::insertOverload(DirectoryNode & dir,
+                                                     std::string const & name,
+                                                     CommandOverload::ptr overload)
+{
+    OverloadedCommandNode & node (
+        dir.hasChild(name)
+        ? dynamic_cast<OverloadedCommandNode &>(dir(name))
+        : dir.add(name, OverloadedCommandNode::create()));
+    node.add(overload);
+    return node;
+}
+
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // So soll die doku aussehen:
 //
 // Usage:
 //          default: 1.23
 //      arg3 -   arg3-doc
 //
-// Generic documentation foo blalsdljfl laj flkajslkjs fdlkj oiwlksdj ;llkaj 
+// Generic documentation foo blalsdljfl laj flkajslkjs fdlkj oiwlksdj ;llkaj
 // sdflkja sldkfjslkdfj sdlkfj lskjdf lskjdf lksj dflkj lsdkfj lskdjf lskjkd
-// Generic documentation foo blalsdljfl laj flkajslkjs fdlkj oiwlksdj ;llkaj 
+// Generic documentation foo blalsdljfl laj flkajslkjs fdlkj oiwlksdj ;llkaj
 // sdflkja sldkfjslkdfj sdlkfj lskjdf lskjdf lksj dflkj lsdkfj lskdjf lskjkd
-// Generic documentation foo blalsdljfl laj flkajslkjs fdlkj oiwlksdj ;llkaj 
+// Generic documentation foo blalsdljfl laj flkajslkjs fdlkj oiwlksdj ;llkaj
 // sdflkja sldkfjslkdfj sdlkfj lskjdf lskjdf lksj dflkj lsdkfj lskdjf lskjkd
 //
-// Variant 1: 
+// Variant 1:
 // Variant 1 doc la;ksjf lkj sdlkfj lkjekj sdflkj ekljsdlkfj wlej
 // slkj dkj sldkfj lwekljsdf skldjf lskjdf l jsd
 //
@@ -65,7 +83,7 @@
 //
 // Variatn 3:
 // Variant 3 doc slkjflw ekj lskdfj lskdjf laksdj flksj elkj aldskjf lwkejlksdj
-// ldkfaj wlekj slkdfj lskdjf lwkejlkasdjf 
+// ldkfaj wlekj slkdfj lskdjf lwkejlkasdjf
 
 prefix_ void senf::console::OverloadedCommandNode::v_help(std::ostream & os)
     const
@@ -124,8 +142,8 @@ prefix_ void senf::console::OverloadedCommandNode::v_help(std::ostream & os)
         ArgumentDocs::const_iterator const i_end (argumentDocs.end());
         for (; i != i_end; ++i) {
             if (! i->doc.empty() || ! i->defaultValue.empty()) {
-                os << "    " 
-                   << i->name 
+                os << "    "
+                   << i->name
                    << std::string(i->name.length()<8 ? 8-i->name.length() : 0, ' ')
                    << "  "
                    << i->doc
@@ -135,10 +153,10 @@ prefix_ void senf::console::OverloadedCommandNode::v_help(std::ostream & os)
             }
         }
     }
-    
+
     if (! doc_.empty())
         os << "\n" << doc_ << "\n";
-    
+
     {
         Overloads::const_iterator i (overloads_.begin());
         Overloads::const_iterator const i_end (overloads_.end());
@@ -166,7 +184,7 @@ prefix_ std::string senf::console::OverloadedCommandNode::v_shorthelp()
     Overloads::const_iterator const i_end (overloads_.end());
     for (; i != i_end; ++i) {
         std::string overloadDoc ((*i)->doc());
-        if (! overloadDoc.empty()) 
+        if (! overloadDoc.empty())
             return overloadDoc.substr(0,overloadDoc.find('\n'));
     }
     return "";
@@ -192,7 +210,7 @@ prefix_ void senf::console::OverloadedCommandNode::v_execute(boost::any & rv,
     throw err;
 }
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::console::SimpleCommandOverload
 
 prefix_ unsigned senf::console::SimpleCommandOverload::v_numArguments()
@@ -219,7 +237,7 @@ prefix_ void senf::console::SimpleCommandOverload::v_execute(boost::any & rv,
     fn_(os, command);
 }
 
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #undef prefix_
 //#include "OverloadedCommand.mpp"