command_parser.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2008 by Kutumov Alexey                                  *
00003  *   ru.pixel@gmail.com                                                    *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  *                                                                         *
00010  *   This program is distributed in the hope that it will be useful,       *
00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00013  *   GNU General Public License for more details.                          *
00014  *                                                                         *
00015  *   You should have received a copy of the GNU General Public License     *
00016  *   along with this program; if not, write to the                         *
00017  *   Free Software Foundation, Inc.,                                       *
00018  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00019  ***************************************************************************/
00020 
00034 #include "gpucalc/debugger/command_parser.h"
00035 
00036 
00037 namespace gpucalc
00038 {
00039 
00040 
00041  template<> debugger::CommandParser * gpucalc::Singleton<debugger::CommandParser>::mSingleton = 0;
00042 
00043 
00044  debugger::CommandParser * debugger::CommandParser::getSingletonPtr()
00045  {
00046   return mSingleton;
00047  }
00048 
00049 
00050  debugger::CommandParser & debugger::CommandParser::getSingleton()
00051  {
00052   assert(mSingleton);
00053   return(* mSingleton);
00054  }
00055 
00056  
00057  namespace debugger
00058  {
00059   CommandParser::CommandParser(): Singleton<CommandParser>(_CommandParserName), mCommandPtrMap()
00060   {
00061   }
00062 
00063 
00064   CommandParser::~CommandParser()
00065   {
00066    mCommandPtrMap.clear();
00067   }
00068 
00069 
00070   void CommandParser::registerCommand(const SharedPtr<Command> & cmd)
00071   {
00072    addToContainer(cmd, cmd->getObjectName(), mCommandPtrMap);
00073   }
00074 
00075 
00076   void CommandParser::process(const std::string & expression)
00077   {
00078    StringList sList = auxillary::StringUtil::split(expression);
00079    CommandPtrMap::iterator i = mCommandPtrMap.find(sList[0]);
00080    if (i != mCommandPtrMap.end())
00081    {
00082     SharedPtr<Command> cmd = i->second;
00083     cmd->process(sList);
00084    }
00085   }
00086  }
00087 }

Generated on Thu Mar 5 22:36:42 2009 for gpucalc by  doxygen 1.5.6