That won't work. Preferences register themselves on creation, so
PrefsMan can iterate over them (to load and save), so preferences must be created on startup, not first use.
This commit is contained in:
@@ -89,26 +89,20 @@ template <class T>
|
|||||||
class Preference1D
|
class Preference1D
|
||||||
{
|
{
|
||||||
typedef Preference<T> PreferenceT;
|
typedef Preference<T> PreferenceT;
|
||||||
typedef void (*pfn_t)(size_t, CString&, T&);
|
|
||||||
vector<PreferenceT*> m_v;
|
vector<PreferenceT*> m_v;
|
||||||
bool m_bInited;
|
|
||||||
pfn_t m_pFn;
|
|
||||||
size_t m_iNum;
|
|
||||||
|
|
||||||
void Init()
|
public:
|
||||||
|
Preference1D( void pfn(size_t i, CString &sNameOut, T &defaultValueOut ), size_t N )
|
||||||
{
|
{
|
||||||
for( size_t i=0; i<m_iNum; ++i )
|
for( size_t i=0; i<N; ++i )
|
||||||
{
|
{
|
||||||
CString sName;
|
CString sName;
|
||||||
T defaultValue;
|
T defaultValue;
|
||||||
m_pFn( i, sName, defaultValue );
|
pfn( i, sName, defaultValue );
|
||||||
m_v.push_back( new Preference<T>(sName, defaultValue) );
|
m_v.push_back( new Preference<T>(sName, defaultValue) );
|
||||||
}
|
}
|
||||||
m_bInited = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
|
||||||
Preference1D( pfn_t pfn, size_t N) : m_bInited( false ), m_pFn( pfn ), m_iNum( N ) { }
|
|
||||||
~Preference1D()
|
~Preference1D()
|
||||||
{
|
{
|
||||||
for( size_t i=0; i<m_v.size(); ++i )
|
for( size_t i=0; i<m_v.size(); ++i )
|
||||||
@@ -116,14 +110,10 @@ public:
|
|||||||
}
|
}
|
||||||
const Preference<T>& operator[]( size_t i ) const
|
const Preference<T>& operator[]( size_t i ) const
|
||||||
{
|
{
|
||||||
if( !m_bInited )
|
|
||||||
Init();
|
|
||||||
return *m_v[i];
|
return *m_v[i];
|
||||||
}
|
}
|
||||||
Preference<T>& operator[]( size_t i )
|
Preference<T>& operator[]( size_t i )
|
||||||
{
|
{
|
||||||
if( !m_bInited )
|
|
||||||
Init();
|
|
||||||
return *m_v[i];
|
return *m_v[i];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user