OSCAssociativeNamespace.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/                                               */
00021 
00035 #ifndef OSC_ASSOCIATIVE_NAMESPACE_H
00036 #define OSC_ASSOCIATIVE_NAMESPACE_H
00037 
00038 #include <map>
00039 #include <string>
00040 #include "OSCNamespace.h"
00041 
00042 class OSCAssociativeNamespace : public OSCNamespace
00043 {
00044   protected:
00045     typedef std::map < std::string, OSCCallable*, std::less<std::string> > CallableMap;
00046 
00047   private:
00048     CallableMap* myCallables;
00049     
00050   protected:
00051     CallableMap* getCallables() { return this->myCallables; }
00052     void setCallables(CallableMap *cm) { this->myCallables = cm; }
00053 
00054   public:
00055     OSCAssociativeNamespace();
00056     virtual ~OSCAssociativeNamespace();
00057 
00058     virtual bool add(const std::string &address, OSCCallable *thingamabob);
00059     virtual bool remove(const std::string& address);
00060     virtual OSCCallable* find(const std::string& address);
00061 
00062     // perhaps we will replace the second (and third?) argument with an OSCMessage object...
00063     virtual bool dispatch(const std::string &address, const std::string& data, Transmit *const reply);
00064 
00068     virtual std::vector<std::string> list(const std::string& basename);
00069 };
00070 
00071 #endif

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