00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
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* =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