OSCHierarchicalNamespace.h

00001 /* Open SoundControl kit in C++                                              */
00002 /* Copyright (C) 2002-2004 libOSC++ contributors. See AUTHORS                */
00003 /*                                                                           */
00004 /* This library is free software; you can redistribute it and/or             */
00005 /* modify it under the terms of the GNU Lesser General Public                */
00006 /* License as published by the Free Software Foundation; either              */
00007 /* version 2.1 of the License, or (at your option) any later version.        */
00008 /*                                                                           */
00009 /* This library is distributed in the hope that it will be useful,           */
00010 /* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
00011 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         */
00012 /* Lesser General Public License for more details.                           */
00013 /*                                                                           */
00014 /* You should have received a copy of the GNU Lesser General Public          */
00015 /* License along with this library; if not, write to the Free Software       */
00016 /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
00017 /*                                                                           */
00018 /* For questions regarding this program contact                              */
00019 /* Daniel Holth <dholth@fastmail.fm> or visit                                */
00020 /* http://wiretap.stetson.edu/trac/                                          */
00021 
00033 #ifndef OSC_HIERARCHICAL_NAMESPACE_H
00034 #define OSC_HIERARCHICAL_NAMESPACE_H
00035 
00036 #include <map>
00037 #include <string>
00038 #include "OSCNamespace.h"
00039 #include "OSCNamespaceItem.h"
00040 #include "OSCCallable.h"
00041 #include "Transmit.h"
00042 
00043 class OSCHierarchicalNamespace : public OSCNamespace
00044 {
00045   protected:
00046     typedef std::map < std::string, OSCCallable*, std::less<std::string> > CallableMap;
00047 
00048   private:
00049     // root of our tree of containers and callbacks.
00050     OSCNamespaceItem* myRoot;
00051     
00052   protected:
00053     void setRoot(OSCNamespaceItem *root) { this->myRoot = root; }
00054     OSCNamespaceItem *getRoot()          { return this->myRoot; }
00055 
00056   public:
00057     OSCHierarchicalNamespace();
00058     virtual ~OSCHierarchicalNamespace();
00059 
00060     virtual bool add(const std::string &address, OSCCallable *thingamabob);
00061     virtual bool remove(const std::string& address);
00062 
00064     virtual OSCCallable* find(const std::string& address);
00065 
00067     virtual bool dispatch(const std::string &address, const std::string& data, Transmit *const reply);
00068 
00071     virtual std::vector<std::string> list(const std::string& basename);
00072 };
00073 
00074 #endif

Generated on Thu Mar 2 23:51:35 2006 for libOSC++ by  doxygen 1.4.6