VR-Forces 4.0.4 Class Documentation
include/vrfutil/consoleCommandManager.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00008 
00010 
00011 #pragma once
00012 
00013 #include "vrfutil/vrfutilDefines.h"
00014 #include <vlutil/vlString.h>
00015 #include <map>
00016 #include <list>
00017 
00019 class DT_DLL_vrfutil DtConsoleCommand
00020 {
00021 public:
00022    virtual ~DtConsoleCommand() {};
00023 
00026    virtual bool execute(const DtString& parameters) = 0;
00028    virtual DtString help(const DtString& parameters) {return DtString::nullString();};
00031    virtual bool showInHelp() const { return false; };
00032 };
00033 
00040 class DT_DLL_vrfutil DtConsoleCommandManager
00041 {
00042 private:
00044 
00045    DtConsoleCommandManager(const DtConsoleCommandManager& orig);
00046    DtConsoleCommandManager& operator=(const DtConsoleCommandManager& orig);
00048 
00049 public:
00050    DtConsoleCommandManager();
00051    virtual ~DtConsoleCommandManager();
00052 
00056    virtual void addCommand(DtString commandString, DtConsoleCommand* command);
00059 
00060    virtual void addAlias(DtString aliasString, DtConsoleCommand* command);
00061    virtual void addAlias(DtString aliasString, DtString commandString);
00063 
00066    virtual void removeCommand(DtString commandString);
00068    virtual void removeCommand(DtConsoleCommand* command);
00069 
00073    virtual bool runCommand(DtString consoleString);
00075    virtual DtString helpText(const DtString& parameters) const;
00076 
00078    static DtConsoleCommandManager* globalConsoleCommandManager();
00079 
00080 protected:
00081    typedef std::map<DtString, DtConsoleCommand* > DtConsoleCommandMap;
00082 
00083    class DtHelpConsoleCommand : public DtConsoleCommand
00084    {
00085    public:
00086       DtHelpConsoleCommand(DtConsoleCommandManager* commandManager);
00087       virtual bool execute(const DtString& parameters);
00088       virtual DtString help(const DtString& parameters);
00089       virtual bool showInHelp() const { return true; };
00090    protected:
00091       DtConsoleCommandManager* myCommandManager;
00092    };
00093 
00095    virtual void removeReferencesFromMap(DtConsoleCommandMap& commandMap, DtConsoleCommand* command);
00096 protected:
00097    
00098    DtConsoleCommandMap myCommandMap;
00099    DtConsoleCommandMap myAliasMap;
00100 
00101    DtHelpConsoleCommand* myHelpCommand;
00102 
00103    static DtConsoleCommandManager* theConsoleCommandManager;
00104 };
00105 
00111 class DT_DLL_vrfutil DtSubCommandManager : public DtConsoleCommandManager
00112 {
00113 public:
00116    DtSubCommandManager(const DtString& commandName,
00117       DtConsoleCommandManager* parentManager);
00118    virtual ~DtSubCommandManager();
00119 
00120 protected:
00123    class DtRunSubCommand : public DtConsoleCommand
00124    {
00125    public:
00126       DtRunSubCommand(DtSubCommandManager* commandManager);
00127       virtual bool execute(const DtString& parameters);
00128       virtual DtString help(const DtString& parameters);
00129       virtual bool showInHelp() const { return true; };
00130    protected:
00131       DtSubCommandManager* myCommandManager;
00132    };
00133 
00134    DtConsoleCommandManager* myParentManager;
00135    DtRunSubCommand* myCommand;
00136 };
00137 
00142 class DT_DLL_vrfutil DtConsoleCommandOwner 
00143 {
00144 public:
00145    DtConsoleCommandOwner(DtConsoleCommandManager* cmdMgr);
00146    virtual ~DtConsoleCommandOwner();
00147 
00148 private:
00150 
00151    DtConsoleCommandOwner();
00152    DtConsoleCommandOwner(const DtConsoleCommandOwner& orig);
00153    DtConsoleCommandOwner& operator=(const DtConsoleCommandOwner& orig);
00155 
00156 public:
00159    virtual void addCommand(const DtString& commandString, DtConsoleCommand* command);
00160 
00161 protected:
00162    DtConsoleCommandManager* myCommandManager;
00163    std::list<DtConsoleCommand*> myCommandList;
00164 };

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)