[brlcad-commits] SF.net SVN: brlcad:[41632]
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <dav...@us...> - 2010-12-15 19:15:57
|
Revision: 41632 http://brlcad.svn.sourceforge.net/brlcad/?rev=41632&view=rev Author: davidloman Date: 2010-12-15 19:15:50 +0000 (Wed, 15 Dec 2010) Log Message: ----------- Stub in AbstractClientCmd, a base class for all client commands to be derived from, and ClientCmdRegistry, a centralized manager for maintaining references to previously mentioned commands. Modified Paths: -------------- rt^3/trunk/src/GS/CMakeLists.txt Added Paths: ----------- rt^3/trunk/src/GS/cmds/AbstractClientCmd.cxx rt^3/trunk/src/GS/cmds/AbstractClientCmd.h rt^3/trunk/src/GS/cmds/ClientCmdRegistry.cxx rt^3/trunk/src/GS/cmds/ClientCmdRegistry.h Property Changed: ---------------- rt^3/trunk/src/GS/cmds/ Modified: rt^3/trunk/src/GS/CMakeLists.txt =================================================================== --- rt^3/trunk/src/GS/CMakeLists.txt 2010-12-15 18:38:23 UTC (rev 41631) +++ rt^3/trunk/src/GS/CMakeLists.txt 2010-12-15 19:15:50 UTC (rev 41632) @@ -54,6 +54,8 @@ Account.cxx AccountManager.cxx GSClient.cxx + cmds/ClientCmdRegistry.cxx + cmds/AbstractClientCmd.cxx ) #Set INST Headers @@ -74,6 +76,8 @@ DbObjectManifest.h GeometryProcessor.h GSClient.h + cmds/ClientCmdRegistry.h + cmds/AbstractClientCmd.h ) #Set QT INST headers Property changes on: rt^3/trunk/src/GS/cmds ___________________________________________________________________ Added: svn:ignore + *.backup Added: rt^3/trunk/src/GS/cmds/AbstractClientCmd.cxx =================================================================== --- rt^3/trunk/src/GS/cmds/AbstractClientCmd.cxx (rev 0) +++ rt^3/trunk/src/GS/cmds/AbstractClientCmd.cxx 2010-12-15 19:15:50 UTC (rev 41632) @@ -0,0 +1,55 @@ +/* A B S T R A C T C L I E N T C M D . C X X + * BRL-CAD + * + * Copyright (c) 2010 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file AbstractClientCmd.cxx + * AbstractClientCmd.cxx + * + */ + +#include "AbstractClientCmd.h" + +AbstractClientCmd::AbstractClientCmd(QString cmd) : cmd(cmd) +{} + +AbstractClientCmd::AbstractClientCmd(AbstractClientCmd* acCmd) : cmd(acCmd->getCmd()) +{} + +AbstractClientCmd::~AbstractClientCmd() { +} + +QString +AbstractClientCmd::getCmd() +{ + return this->cmd; +} + +bool +AbstractClientCmd::exec(QString args[]) { + return this->_exec(args); +} + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: rt^3/trunk/src/GS/cmds/AbstractClientCmd.cxx ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Revision Date Author Added: svn:eol-style + native Added: rt^3/trunk/src/GS/cmds/AbstractClientCmd.h =================================================================== --- rt^3/trunk/src/GS/cmds/AbstractClientCmd.h (rev 0) +++ rt^3/trunk/src/GS/cmds/AbstractClientCmd.h 2010-12-15 19:15:50 UTC (rev 41632) @@ -0,0 +1,56 @@ +/* A B S T R A C T C L I E N T C M D . H + * BRL-CAD + * + * Copyright (c) 2010 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file AbstractClientCmd.h + * AbstractClientCmd.h + * + */ + +#ifndef __ABSTRACTCLIENTCMD_H__ +#define __ABSTRACTCLIENTCMD_H__ + +#include <QtCore/QString> + +class AbstractClientCmd { +public: + virtual ~AbstractClientCmd(); + bool exec(QString args[]); + + QString getCmd(); +protected: + AbstractClientCmd(QString cmd); + AbstractClientCmd(AbstractClientCmd* acCmd); + + virtual bool _exec(QString args[]) = 0; + +private: + QString cmd; +}; + +#endif /* __ABSTRACTCLIENTCMD_H__ */ + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: rt^3/trunk/src/GS/cmds/AbstractClientCmd.h ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Revision Date Author Added: svn:eol-style + native Added: rt^3/trunk/src/GS/cmds/ClientCmdRegistry.cxx =================================================================== --- rt^3/trunk/src/GS/cmds/ClientCmdRegistry.cxx (rev 0) +++ rt^3/trunk/src/GS/cmds/ClientCmdRegistry.cxx 2010-12-15 19:15:50 UTC (rev 41632) @@ -0,0 +1,94 @@ +/* C L I E N T C M D R E G I S T R Y . C X X + * BRL-CAD + * + * Copyright (c) 2010 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file ClientCmdRegistry.cxx + * + * Brief description + * + */ + + +#include "ClientCmdRegistry.h" +#include <QtCore/QMutexLocker> + +ClientCmdRegistry* ClientCmdRegistry::pInstance = NULL; + +ClientCmdRegistry* +ClientCmdRegistry::getInstance() { + if (ClientCmdRegistry::pInstance == NULL) { + ClientCmdRegistry::pInstance = new ClientCmdRegistry(); + ClientCmdRegistry::pInstance->registerInternalCmds(); + } + return ClientCmdRegistry::pInstance; +} + +ClientCmdRegistry::ClientCmdRegistry() { + this->cmdMap = new QMap<QString,AbstractClientCmd*> (); + this->log = Logger::getInstance(); +} + +ClientCmdRegistry::~ClientCmdRegistry() { + /* TODO loop thru and del all the CMDs?? */ + delete cmdMap; +} + +bool ClientCmdRegistry::registerCmd(AbstractClientCmd* cmd) { + QString cmdString = cmd->getCmd(); + + QMutexLocker(&this->mapLock); + if (this->cmdMap->contains(cmdString) == false) { + this->cmdMap->insert(cmdString, cmd); + return true; + } + + this->log->logWARNING("ClientCmdRegistry","An AbstractClientCmd '" + cmdString + "' already exists in Registry."); + return false; +} + +AbstractClientCmd* +ClientCmdRegistry::getCmd(QString cmd) +{ + +} + +QList<QString>* +ClientCmdRegistry::getListOfCmds() { + QMutexLocker(&this->mapLock); + + QList<QString>* keys = new QList<QString>(this->cmdMap->keys()); + + return keys; +} + +void +ClientCmdRegistry::registerInternalCmds() +{ + /* TODO add in any cmds that should be automatically mapped here. */ +} + +/* + * Local Variables: + * mode: C + * tab-width: 8 + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ + Property changes on: rt^3/trunk/src/GS/cmds/ClientCmdRegistry.cxx ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Revision Date Author Added: svn:eol-style + native Added: rt^3/trunk/src/GS/cmds/ClientCmdRegistry.h =================================================================== --- rt^3/trunk/src/GS/cmds/ClientCmdRegistry.h (rev 0) +++ rt^3/trunk/src/GS/cmds/ClientCmdRegistry.h 2010-12-15 19:15:50 UTC (rev 41632) @@ -0,0 +1,75 @@ +/* C L I E N T C M D R E G I S T R Y . H + * BRL-CAD + * + * Copyright (c) 2010 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file ClientCmdRegistry.h + * + * Brief description + * + */ + + +#ifndef __CLIENTCMDREGISTRY_H__ +#define __CLIENTCMDREGISTRY_H__ + +#include "AbstractClientCmd.h" +#include "Logger.h" + +#include <QtCore/QString> +#include <QtCore/QMap> +#include <QtCore/QList> +#include <QtCore/QMutex> + +class ClientCmdRegistry +{ +public: + static ClientCmdRegistry* getInstance(); + virtual ~ClientCmdRegistry(); + + bool registerCmd(AbstractClientCmd* cmd); + AbstractClientCmd* getCmd(QString cmd); + + QList<QString>* getListOfCmds(); + +private: + static ClientCmdRegistry* pInstance; + ClientCmdRegistry(); + + static void registerInternalCmds(); + + Logger* log; + + QMutex mapLock; + QMap<QString,AbstractClientCmd*>* cmdMap; + + /* Disable copy cstr and =operator */ + ClientCmdRegistry(ClientCmdRegistry const&){}; + ClientCmdRegistry& operator=(ClientCmdRegistry const&){}; +}; + +#endif /* __CLIENTCMDREGISTRY_H__ */ + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: rt^3/trunk/src/GS/cmds/ClientCmdRegistry.h ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Revision Date Author Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |