示例#1
0
static INT_PTR SetSettingResident(WPARAM wParam, LPARAM lParam)
{
	size_t cbSettingNameLen = strlen(( char* )lParam) + 2;
	if (cbSettingNameLen  < 512)
	{
		char*  szSetting;
		int    idx;
		char  szTemp[512];
		strcpy( szTemp+1, ( char* )lParam );

		EnterCriticalSection(&csDbAccess);
		if ( !li.List_GetIndex( &lSettings, szTemp, &idx ))
			szSetting = InsertCachedSetting( szTemp, cbSettingNameLen, idx );
		else
			szSetting = lSettings.items[ idx ];

		*szSetting = (char)wParam;

		if ( !li.List_GetIndex( &lResidentSettings, szSetting+1, &idx ))
		{
			if (wParam)
				li.List_Insert(&lResidentSettings,szSetting+1,idx);
		}
		else if (!wParam)
			li.List_Remove(&lResidentSettings,idx);

		LeaveCriticalSection(&csDbAccess);
	}
	return 0;
}
示例#2
0
static char* GetCachedSetting(const char *szModuleName,const char *szSettingName,int settingNameLen)
{
	static char *lastsetting = NULL;
	int moduleNameLen = (int)strlen(szModuleName),index;
	char *szFullName = (char*)alloca(moduleNameLen+settingNameLen+3);

	strcpy(szFullName+1,szModuleName);
	szFullName[moduleNameLen+1]='/';
	strcpy(szFullName+moduleNameLen+2,szSettingName);

	if (lastsetting && strcmp(szFullName+1,lastsetting) == 0)
		return lastsetting;

	if ( li.List_GetIndex(&lSettings, szFullName, &index))
		lastsetting = (char*)lSettings.items[index] + 1;
	else
		lastsetting = InsertCachedSetting( szFullName, moduleNameLen+settingNameLen+3, index )+1;
	return lastsetting;
}
示例#3
0
static INT_PTR SetSettingResident(WPARAM wParam,LPARAM lParam)
{
	char*  szSetting;
	size_t cbSettingNameLen = strlen(( char* )lParam );
	int    idx;
	char*  szTemp = ( char* )alloca( cbSettingNameLen+2 );
	strcpy( szTemp+1, ( char* )lParam );

	EnterCriticalSection(&csDbAccess);
	if ( !li.List_GetIndex( &lSettings, szTemp, &idx ))
		szSetting = InsertCachedSetting( szTemp, cbSettingNameLen+2, idx );
	else
		szSetting = lSettings.items[ idx ];

   *szSetting = (char)wParam;

	LeaveCriticalSection(&csDbAccess);
	return 0;
}
示例#4
0
char* MDatabaseCache::GetCachedSetting(const char *szModuleName, const char *szSettingName, int moduleNameLen, int settingNameLen)
{
	char szFullName[512];
	const char *szKey;
	if (szModuleName != NULL) {
		strcpy(szFullName, szModuleName);
		szFullName[moduleNameLen] = '/';
		strcpy(szFullName + moduleNameLen + 1, szSettingName);
		szKey = szFullName;
	}
	else szKey = szSettingName;

	if (m_lastSetting && !strcmp(szKey, m_lastSetting))
		return m_lastSetting;

	int index = m_lSettings.getIndex((char*)szKey);
	if (index != -1)
		m_lastSetting = m_lSettings[index];
	else
		m_lastSetting = InsertCachedSetting(szKey, settingNameLen + moduleNameLen + 3);

	return m_lastSetting;
}