PLearn 0.1
PLearnCommandRegistry.h
Go to the documentation of this file.
00001 // -*- C++ -*-4 1999/10/29 20:41:34 dugas
00002 
00003 // PLearnCommandRegistry.h
00004 // Copyright (C) 2002 Pascal Vincent
00005 //
00006 // Redistribution and use in source and binary forms, with or without
00007 // modification, are permitted provided that the following conditions are met:
00008 // 
00009 //  1. Redistributions of source code must retain the above copyright
00010 //     notice, this list of conditions and the following disclaimer.
00011 // 
00012 //  2. Redistributions in binary form must reproduce the above copyright
00013 //     notice, this list of conditions and the following disclaimer in the
00014 //     documentation and/or other materials provided with the distribution.
00015 // 
00016 //  3. The name of the authors may not be used to endorse or promote
00017 //     products derived from this software without specific prior written
00018 //     permission.
00019 // 
00020 // THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
00021 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00022 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
00023 // NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00024 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
00025 // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00026 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00027 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00028 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00029 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00030 // 
00031 // This file is part of the PLearn library. For more information on the PLearn
00032 // library, go to the PLearn Web site at www.plearn.org
00033 
00034 
00035 /* *******************************************************      
00036  * $Id: PLearnCommandRegistry.h 8184 2007-10-15 20:09:46Z nouiz $
00037  * This file is part of the PLearn library.
00038  ******************************************************* */
00039 
00040 #ifndef PLearnCommandRegistry_INC
00041 #define PLearnCommandRegistry_INC
00042 
00043 #include "PLearnCommand.h"
00044 #include <map>
00045 #include <string>
00046 
00047 
00048 namespace PLearn {
00049 using namespace std;
00050 
00051 // Forward-declare
00052 class HTMLHelpCommand;
00053   
00054 class PLearnCommandRegistry
00055 {
00056     // Minor help for the HTML helper here...
00057     friend class HTMLHelpCommand;
00058 
00059 public:// public so that the command map can be read
00060     typedef map<string, PLearnCommand*> command_map;
00061 
00062 protected:
00063 
00065     static void badcommand(const string& commandname);
00066 
00068     static command_map& commands();
00069  
00070 public:
00071 
00073     inline static const command_map& allCommands() 
00074     { return commands(); }
00075 
00077     static PLearnCommand* getCommand(const string& commandname);
00078 
00080     static void do_register(PLearnCommand* command);
00081 
00083     static bool is_registered(const string& commandname);
00084   
00086     //static void print_command_summary(ostream& out);
00087 
00089     static void run(const string& commandname, const vector<string>& args);
00090   
00092     //static void help(const string& commandname, ostream& out);
00093 
00095     inline PLearnCommandRegistry(PLearnCommand* plcommand)
00096     { do_register(plcommand); }
00097   
00098 };
00099   
00100 
00101 } // end of namespace PLearn
00102 
00103 #endif
00104 
00105 
00106 /*
00107   Local Variables:
00108   mode:c++
00109   c-basic-offset:4
00110   c-file-style:"stroustrup"
00111   c-file-offsets:((innamespace . 0)(inline-open . 0))
00112   indent-tabs-mode:nil
00113   fill-column:79
00114   End:
00115 */
00116 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=79 :
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines