Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
138
Src/pfc/cfg_var.cpp
Normal file
138
Src/pfc/cfg_var.cpp
Normal file
|
@ -0,0 +1,138 @@
|
|||
#define STRICT
|
||||
#include <windows.h>
|
||||
#include "cfg_var.h"
|
||||
#include "string_unicode.h"
|
||||
|
||||
static const char *m_inifile, *m_section;
|
||||
|
||||
int cfg_var::reg_read_int(HKEY hk,int def)
|
||||
{
|
||||
|
||||
return GetPrivateProfileIntA(m_section,var_get_name(),def,m_inifile);
|
||||
}
|
||||
|
||||
void cfg_var::reg_write_int(HKEY hk,int val)
|
||||
{
|
||||
/* long temp=val;
|
||||
RegSetValueEx(hk,var_get_name(),0,REG_DWORD,(const BYTE*)&temp,4);*/
|
||||
char tmp[512] = {0};
|
||||
wsprintfA(tmp,"%d",val);
|
||||
WritePrivateProfileStringA(m_section,var_get_name(),tmp,m_inifile);
|
||||
}
|
||||
|
||||
void cfg_var::reg_write_struct(HKEY hk,const void * ptr,UINT size)
|
||||
{
|
||||
|
||||
WritePrivateProfileStructA(m_section,var_get_name(),(void *)ptr,size,m_inifile);
|
||||
}
|
||||
|
||||
bool cfg_var::reg_read_struct(HKEY hk,void * ptr,UINT size)
|
||||
{
|
||||
GetPrivateProfileStructA(m_section,var_get_name(),ptr,size,m_inifile);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int cfg_var::reg_get_struct_size(HKEY hk)
|
||||
{
|
||||
DWORD sz=0,t=0;
|
||||
if (RegQueryValueExA(hk,var_get_name(),0,&t,0,&sz)!=ERROR_SUCCESS) return 0;
|
||||
return sz;
|
||||
}
|
||||
|
||||
bool string_a::reg_read(HKEY hk,const char * name)
|
||||
{
|
||||
char tmp[4096] = {0};
|
||||
GetPrivateProfileStringA(m_section,name,"|||",tmp,sizeof(tmp)-1,m_inifile);
|
||||
if(strstr(tmp,"|||")==tmp) return 0;
|
||||
lstrcpyA(buffer_get(strlen(tmp)+1),tmp);
|
||||
buffer_done();
|
||||
return 1;
|
||||
}
|
||||
|
||||
void string_a::reg_write(HKEY hk,const char * name)
|
||||
{
|
||||
WritePrivateProfileStringA(m_section,name,(const char*)*this,m_inifile);
|
||||
}
|
||||
|
||||
|
||||
cfg_var * cfg_var::list=0;
|
||||
|
||||
/*HKEY cfg_var::reg_open(const char * regname)
|
||||
{
|
||||
HKEY hk;
|
||||
RegCreateKey(HKEY_CURRENT_USER,regname,&hk);
|
||||
return hk;
|
||||
}*/
|
||||
|
||||
|
||||
void cfg_var::config_read(const char *inifile, const char *section)
|
||||
{
|
||||
HKEY hk = 0; //reg_open(regname);
|
||||
m_inifile=inifile;
|
||||
m_section=section;
|
||||
cfg_var * ptr;
|
||||
for(ptr = list; ptr; ptr=ptr->next) ptr->read(hk);
|
||||
//RegCloseKey(hk);
|
||||
}
|
||||
|
||||
void cfg_var::config_write(const char *inifile, const char *section)
|
||||
{
|
||||
HKEY hk = 0; //reg_open(regname);
|
||||
m_inifile=inifile;
|
||||
m_section=section;
|
||||
cfg_var * ptr;
|
||||
for(ptr = list; ptr; ptr=ptr->next) ptr->write(hk);
|
||||
//RegCloseKey(hk);
|
||||
}
|
||||
|
||||
void cfg_var::config_reset()
|
||||
{
|
||||
cfg_var * ptr;
|
||||
for(ptr = list; ptr; ptr=ptr->next) ptr->reset();
|
||||
}
|
||||
|
||||
void cfg_int::read(HKEY hk)
|
||||
{
|
||||
val = reg_read_int(hk,def);
|
||||
}
|
||||
|
||||
void cfg_int::write(HKEY hk)
|
||||
{
|
||||
if (val!=reg_read_int(hk,def))
|
||||
reg_write_int(hk,val);
|
||||
}
|
||||
|
||||
void cfg_string::read(HKEY hk)
|
||||
{
|
||||
string_a temp;
|
||||
if (temp.reg_read(hk,var_get_name())) val=temp;
|
||||
}
|
||||
|
||||
void cfg_string::write(HKEY hk)
|
||||
{
|
||||
string_a temp = def;
|
||||
string_a name = var_get_name();
|
||||
|
||||
if (!temp.reg_read(hk,name) || lstrcmpA(val,temp))
|
||||
val.reg_write(hk,name);
|
||||
}
|
||||
|
||||
#ifdef PFC_UNICODE
|
||||
|
||||
void cfg_string_w::read(HKEY hk)
|
||||
{
|
||||
string_w temp;
|
||||
if (temp.reg_read(hk,string_w(var_get_name()))) val=temp;
|
||||
}
|
||||
|
||||
void cfg_string_w::write(HKEY hk)
|
||||
{
|
||||
string_w temp = def;
|
||||
string_w name = var_get_name();
|
||||
string_w val_w = val;
|
||||
|
||||
if (!temp.reg_read(hk,name) || wcscmp(val_w,temp))
|
||||
val_w.reg_write(hk,name);
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue