![]() |
VR-Forces 4.0.4 Class Documentation
|
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 };