Bazaar developer reference

CvDatabaseUtility::PopulateArrayByValue(int *&, const char *, const char *, const char *, const char *, const char *, const char *, int, int)

Defined in
CvDatabaseUtility.cpp, line 218
Class
CvDatabaseUtility
Hook name
CivHooks::CvDatabaseUtility_PopulateArrayByValue

Hooks

static bool BeforeCvDatabaseUtility_PopulateArrayByValue(CvDatabaseUtility* self, int*& pArray, const char* szTypeTableName, const char* szDataTableName, const char* szTypeColumn, const char* szFilterColumn, const char* szFilterValue, const char* szValueColumn, int iDefaultValue, int iMinArraySize, bool& result);static void AfterCvDatabaseUtility_PopulateArrayByValue(CvDatabaseUtility* self, int*& pArray, const char* szTypeTableName, const char* szDataTableName, const char* szTypeColumn, const char* szFilterColumn, const char* szFilterValue, const char* szValueColumn, int iDefaultValue, int iMinArraySize, bool& result);static bool ReplaceCvDatabaseUtility_PopulateArrayByValue(bool (*original)(CvDatabaseUtility*, int*&, const char*, const char*, const char*, const char*, const char*, const char*, int, int), CvDatabaseUtility* self, int*& pArray, const char* szTypeTableName, const char* szDataTableName, const char* szTypeColumn, const char* szFilterColumn, const char* szFilterValue, const char* szValueColumn, int iDefaultValue, int iMinArraySize);CivRegisterBefore<CivHooks::CvDatabaseUtility_PopulateArrayByValue>(host, &BeforeCvDatabaseUtility_PopulateArrayByValue);CivRegisterAfter<CivHooks::CvDatabaseUtility_PopulateArrayByValue>(host, &AfterCvDatabaseUtility_PopulateArrayByValue);CivRegisterReplace<CivHooks::CvDatabaseUtility_PopulateArrayByValue>(host, &ReplaceCvDatabaseUtility_PopulateArrayByValue);

Code

218bool CvDatabaseUtility::PopulateArrayByValue(int*& pArray, const char* szTypeTableName, const char* szDataTableName, const char* szTypeColumn, const char* szFilterColumn, const char* szFilterValue, const char* szValueColumn, int iDefaultValue /* = 0 */, int iMinArraySize /* = 0 */)219{220	int iSize = MaxRows(szTypeTableName);221	InitializeArray(pArray, (iSize<iMinArraySize)?iMinArraySize:iSize, iDefaultValue);222223	std::string strKey = "_PABV_";224	strKey.append(szTypeTableName);225	strKey.append(szDataTableName);226	strKey.append(szFilterColumn);227	strKey.append(szValueColumn);228229	Database::Results* pResults = GetResults(strKey);230	if(pResults == NULL)231	{232		char szSQL[512];233		sprintf_s(szSQL, "select %s.ID, %s from %s inner join %s on %s = %s.Type where %s = ?", szTypeTableName, szValueColumn, szDataTableName, szTypeTableName, szTypeColumn, szTypeTableName, szFilterColumn);234		pResults = PrepareResults(strKey, szSQL);235		if(pResults == NULL)236			return false;237	}238239	if(!pResults->Bind(1, szFilterValue, false))240	{241		CvAssertMsg(false, GetErrorMessage());242		return false;243	}244	while(pResults->Step())245	{246		const int idx = pResults->GetInt(0);247		const int value = pResults->GetInt(1);248		pArray[idx] = value;249	}250251	pResults->Reset();252253	return true;254}

Calls

Called by