+ bool Write(const wxString& key, const wxString& value)
+ { return DoWriteString(key, value); }
+
+ bool Write(const wxString& key, long value)
+ { return DoWriteLong(key, value); }
+
+ bool Write(const wxString& key, double value)
+ { return DoWriteDouble(key, value); }
+
+ bool Write(const wxString& key, bool value)
+ { return DoWriteBool(key, value); }
+
+#if wxUSE_BASE64
+ bool Write(const wxString& key, const wxMemoryBuffer& buf)
+ { return DoWriteBinary(key, buf); }
+#endif // wxUSE_BASE64
+
+ // we have to provide a separate version for C strings as otherwise they
+ // would be converted to bool and not to wxString as expected!
+ bool Write(const wxString& key, const char *value)
+ { return Write(key, wxString(value)); }
+ bool Write(const wxString& key, const unsigned char *value)
+ { return Write(key, wxString(value)); }
+#if wxUSE_WCHAR_T
+ bool Write(const wxString& key, const wchar_t *value)
+ { return Write(key, wxString(value)); }
+#endif
+
+
+ // we also have to provide specializations for other types which we want to
+ // handle using the specialized DoWriteXXX() instead of the generic template
+ // version below
+ bool Write(const wxString& key, short value)
+ { return DoWriteLong(key, value); }
+
+ bool Write(const wxString& key, unsigned short value)
+ { return DoWriteLong(key, value); }
+
+ bool Write(const wxString& key, unsigned int value)
+ { return DoWriteLong(key, value); }
+
+ bool Write(const wxString& key, int value)
+ { return DoWriteLong(key, value); }
+
+ bool Write(const wxString& key, unsigned long value)
+ { return DoWriteLong(key, value); }
+
+ bool Write(const wxString& key, float value)
+ { return DoWriteDouble(key, value); }