X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FConsole%2FSTLSupport.hh;h=53a1a2bab5f36c6cd551842dcc8e1b5175e1ab96;hb=0003d55730b447329342161d12cf2ed23b63459e;hp=d4594888fa6cee6e328b63b033bc3c40b8a726d9;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Utils/Console/STLSupport.hh b/senf/Utils/Console/STLSupport.hh index d459488..53a1a2b 100644 --- a/senf/Utils/Console/STLSupport.hh +++ b/senf/Utils/Console/STLSupport.hh @@ -1,24 +1,29 @@ // $Id$ // -// Copyright (C) 2009 +// Copyright (C) 2009 // Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// Stefan Bund // -// 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 /** \file \brief STLSupport public header */ @@ -32,50 +37,76 @@ #include "Traits.hh" //#include "STLSupport.mpp" -///////////////////////////////hh.p//////////////////////////////////////// +#include "STLSupport.ih" +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace senf { namespace console { #ifndef DOXYGEN - template - struct SequenceArgumentTraits - { - typedef Sequence type; - static bool const singleToken = false; - - static void parse(ParseCommandInfo::TokensRange const & tokens, type & out); - static std::string description(); - static std::string str(type const & value); - }; - - template - struct SequenceReturnValueTraits - { - typedef Sequence type; - - static void format(type const & value, std::ostream & os); - }; - template struct ArgumentTraits< std::vector > - : public SequenceArgumentTraits< std::vector > + : public detail::CollectionArgumentTraits< std::vector, + detail::PushBackFunctor > {}; template struct ReturnValueTraits< std::vector > - : public SequenceReturnValueTraits< std::vector > + : public detail::CollectionReturnValueTraits< std::vector > {}; template struct ArgumentTraits< std::list > - : public SequenceArgumentTraits< std::list > + : public detail::CollectionArgumentTraits< std::list, + detail::PushBackFunctor > {}; template struct ReturnValueTraits< std::list > - : public SequenceReturnValueTraits< std::list > + : public detail::CollectionReturnValueTraits< std::list > + {}; + + template + struct ArgumentTraits< std::set > + : public detail::CollectionArgumentTraits< std::set, + detail::InsertFunctor > + {}; + + template + struct ReturnValueTraits< std::set > + : public detail::CollectionReturnValueTraits< std::set > + {}; + + template + struct ArgumentTraits< std::multiset > + : public detail::CollectionArgumentTraits< std::multiset, + detail::InsertFunctor > + {}; + + template + struct ReturnValueTraits< std::multiset > + : public detail::CollectionReturnValueTraits< std::multiset > + {}; + + template + struct ArgumentTraits< std::map > + : public detail::MapArgumentTraits< std::map > + {}; + + template + struct ReturnValueTraits< std::map > + : public detail::MapReturnValueTraits< std::map > + {}; + + template + struct ArgumentTraits< std::multimap > + : public detail::MapArgumentTraits< std::multimap > + {}; + + template + struct ReturnValueTraits< std::multimap > + : public detail::MapReturnValueTraits< std::multimap > {}; template @@ -101,10 +132,10 @@ namespace console { }} -///////////////////////////////hh.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// //#include "STLSupport.cci" #include "STLSupport.ct" -//#include "STLSupport.cti" +#include "STLSupport.cti" #endif