Patch level : 2.0 secret patch

Files correlati     : ba0.exe
Ricompilazione Demo : [ ]
Commento            :

Tolto sh_read dai config


git-svn-id: svn://10.65.10.50/trunk@11743 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2004-02-03 14:20:36 +00:00
parent a267dfa713
commit 0598cf6162
2 changed files with 23 additions and 36 deletions

View File

@ -117,7 +117,8 @@ void TConfig::_write_file()
if (_file.exist()) if (_file.exist())
{ {
ifstream in(_file, ios::in | ios::nocreate, filebuf::sh_read); // ifstream in(_file, ios::in | ios::nocreate, filebuf::sh_read); // PARKED
ifstream in(_file, ios::in | ios::nocreate);
if (in.good()) if (in.good())
{ {
TString l(1024); TString l(1024);
@ -183,6 +184,17 @@ bool TConfig::set_paragraph(const char* section)
return ok; return ok;
} }
const char* TConfig::get_varkey(const char* var, int index) const
{
if (index >= 0)
{
TString& tmp = get_tmp_string();
tmp << var << '(' << index << ')';
return tmp;
}
return var;
}
// @doc EXTERNAL // @doc EXTERNAL
// @mfunc Controlla se esite una variabile nel paragrafo attivo // @mfunc Controlla se esite una variabile nel paragrafo attivo
@ -199,13 +211,8 @@ bool TConfig::exist(
// dell'array da cercare, diversamente viene cercata la variabile // dell'array da cercare, diversamente viene cercata la variabile
// normale passata in <p var>. // normale passata in <p var>.
{ {
if (index >= 0) const char* key = get_varkey(var, index);
{ return _data.is_key(key);
TString key(80);
key << var << '(' << index << ')';
return _data.is_key(key);
}
return _data.is_key(var);
} }
// @doc EXTERNAL // @doc EXTERNAL
@ -224,9 +231,7 @@ bool TConfig::remove(
// dell'array da cercare, diversamente viene cercata la variabile // dell'array da cercare, diversamente viene cercata la variabile
// normale passata in <p var>. // normale passata in <p var>.
{ {
TString key(var); const char* key = get_varkey(var, index);
if (index >= 0)
key << '(' << index << ')';
const bool ok = _data.remove(key); const bool ok = _data.remove(key);
if (ok) _dirty = TRUE; if (ok) _dirty = TRUE;
return ok; return ok;
@ -266,15 +271,8 @@ const TString& TConfig::get(
if (section && *section) // Cambia paragrafo se necessario if (section && *section) // Cambia paragrafo se necessario
set_paragraph(section); set_paragraph(section);
const TString* val; const char* key = get_varkey(var, index);
if (index >= 0) const TString* val = (TString*)_data.objptr(key);
{
TString v(80);
v << var << '(' << index << ')';
val = (TString*)_data.objptr(v);
}
else
val = (TString*)_data.objptr(var);
if (val == NULL) // Se non la trova inserisci il default if (val == NULL) // Se non la trova inserisci il default
{ {
@ -475,21 +473,7 @@ bool TConfig::set(
if (section && *section) if (section && *section)
set_paragraph(section); set_paragraph(section);
/* const char* key = get_varkey(var, index);
const bool itwas = exist(var, index);
if (itwas && !force)
error_box("Tentativo di ridefinizione simbolo: %s(%d)", var, index);
else
{
TString256 vvar(var); if (index >= 0) vvar << '(' << index << ')';
_data.add(vvar, new TString(value), force);
_dirty = TRUE;
}
*/
TString256 key(var);
if (index >= 0)
key << '(' << index << ')';
TString* val = (TString*)_data.objptr(key); TString* val = (TString*)_data.objptr(key);
const bool itwas = val != NULL; const bool itwas = val != NULL;
@ -547,7 +531,8 @@ word TConfig::items(
// @comm Il paragrafo passato in <p section> diventa quello attivo. // @comm Il paragrafo passato in <p section> diventa quello attivo.
// <nl>Possono esserci dei "buchi" causati da set() errate // <nl>Possono esserci dei "buchi" causati da set() errate
{ {
if (section) set_paragraph(section); if (section && *section)
set_paragraph(section);
for (int cnt = 0; exist(var, cnt); cnt++); for (int cnt = 0; exist(var, cnt); cnt++);
return cnt; return cnt;
} }

View File

@ -78,6 +78,8 @@ protected:
// @cmember Inizializza il paragrafo leggendo dal file di nome <p fn > i dati // @cmember Inizializza il paragrafo leggendo dal file di nome <p fn > i dati
void init(const char *fn, const char* pa); void init(const char *fn, const char* pa);
const char* get_varkey(const char* var, int index) const;
// @access Public Memeber // @access Public Memeber
public: public: