dict.h

Go to the documentation of this file.
00001 
00004 
00005 //
00006 // Copyright (c) 2004-2004 California Institute of Technology
00007 // Copyright (c) 2004-2007 University of Southern California
00008 // Rob Peters <rjpeters at usc dot edu>
00009 //
00010 // created: Mon May 24 16:14:37 2004
00011 // commit: $Id: dict.h 10065 2007-04-12 05:54:56Z rjpeters $
00012 // $HeadURL: file:///lab/rjpeters/svnrepo/code/trunk/groovx/src/tcl/dict.h $
00013 //
00014 // --------------------------------------------------------------------
00015 //
00016 // This file is part of GroovX.
00017 //   [http://ilab.usc.edu/rjpeters/groovx/]
00018 //
00019 // GroovX is free software; you can redistribute it and/or modify it
00020 // under the terms of the GNU General Public License as published by
00021 // the Free Software Foundation; either version 2 of the License, or
00022 // (at your option) any later version.
00023 //
00024 // GroovX is distributed in the hope that it will be useful, but
00025 // WITHOUT ANY WARRANTY; without even the implied warranty of
00026 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00027 // General Public License for more details.
00028 //
00029 // You should have received a copy of the GNU General Public License
00030 // along with GroovX; if not, write to the Free Software Foundation,
00031 // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
00032 //
00034 
00035 #ifndef GROOVX_TCL_DICT_H_UTC20050628162420_DEFINED
00036 #define GROOVX_TCL_DICT_H_UTC20050628162420_DEFINED
00037 
00038 #include "tcl/conversions.h"
00039 #include "tcl/obj.h"
00040 
00041 namespace tcl
00042 {
00043   class dict;
00044 
00045   tcl::dict aux_convert_to(Tcl_Obj* obj, tcl::dict*);
00046   tcl::obj aux_convert_from(tcl::dict dict_value);
00047 }
00048 
00050 
00055 
00056 
00057 class tcl::dict
00058 {
00059 public:
00061   dict();
00062 
00063   dict(const tcl::obj& d) :
00064     m_obj(d)
00065   {}
00066 
00067   dict(const dict& other) :
00068     m_obj(other.m_obj)
00069   {}
00070 
00071   dict& operator=(const dict& other)
00072   {
00073     m_obj = other.m_obj;
00074     return *this;
00075   };
00076 
00077   template <class T>
00078   void put(const char* key, const T& val)
00079   {
00080     do_put(key, tcl::convert_from(val));
00081   }
00082 
00083   template <class T>
00084   T get(const char* key, T* /*dummy*/=0) const
00085   {
00086     return tcl::convert_to<T>(do_get(key).get());
00087   }
00088 
00089   tcl::obj as_obj() const { return m_obj; }
00090 
00091 private:
00092   void do_put(const char* key, tcl::obj val);
00093   tcl::obj do_get(const char* key) const;
00094 
00095   tcl::obj m_obj;
00096 };
00097 
00098 static const char __attribute__((used)) vcid_groovx_tcl_dict_h_utc20050628162420[] = "$Id: dict.h 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00099 #endif // !GROOVX_TCL_DICT_H_UTC20050628162420_DEFINED

The software described here is Copyright (c) 1998-2005, Rob Peters.
This page was generated Wed Dec 3 06:49:41 2008 by Doxygen version 1.5.5.