]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/preferencedictionary.h
Introduce Property<T> to simplify preferences system
[xonotic/netradiant.git] / radiant / preferencedictionary.h
index eed7b1c9a69db5f4ebfa421a0c6ae8b47a83b765..382271ee8a9795ceaa786d9622d7c1d40361d8df 100644 (file)
@@ -33,17 +33,16 @@ class PreferenceDictionary : public PreferenceSystem
 {
 class PreferenceEntry
 {
-ImportExportCallback<const char *>::Import_t m_importer;
-ImportExportCallback<const char *>::Export_t m_exporter;
+Property<const char *> m_cb;
 public:
-PreferenceEntry( const ImportExportCallback<const char *>::Import_t& importer, const ImportExportCallback<const char *>::Export_t& exporter )
-       : m_importer( importer ), m_exporter( exporter ){
+PreferenceEntry( const Property<const char *>& cb )
+       : m_cb( cb ){
 }
 void importString( const char* string ){
-       m_importer( string );
+       m_cb.set( string );
 }
-void exportString( const ImportExportCallback<const char *>::Import_t& importer ){
-       m_exporter( importer );
+void exportString( const Callback<void(const char *)> & importer ){
+       m_cb.get( importer );
 }
 };
 
@@ -66,11 +65,11 @@ iterator find( const char* name ){
        return m_preferences.find( name );
 }
 
-void registerPreference( const char* name, const ImportExportCallback<const char *>::Import_t& importer, const ImportExportCallback<const char *>::Export_t& exporter ){
-       m_preferences.insert( PreferenceEntries::value_type( name, PreferenceEntry( importer, exporter ) ) );
+void registerPreference( const char* name, const Property<const char *>& cb ){
+       m_preferences.insert( PreferenceEntries::value_type( name, PreferenceEntry( cb ) ) );
        PreferenceCache::iterator i = m_cache.find( name );
        if ( i != m_cache.end() ) {
-               importer( ( *i ).second.c_str() );
+               cb.set( i->second.c_str() );
                m_cache.erase( i );
        }
 }