CvDatabaseUtility::Initialize2DArray(int **&, const char *, const char *, int)
- Defined in
- CvDatabaseUtility.cpp, line 80
- Class
- CvDatabaseUtility
- Hook name
CivHooks::CvDatabaseUtility_Initialize2DArray
Hooks
static bool BeforeCvDatabaseUtility_Initialize2DArray(CvDatabaseUtility* self, int**& ppArray, const char* szTable1Name, const char* szTable2Name, int iDefault, bool& result);static void AfterCvDatabaseUtility_Initialize2DArray(CvDatabaseUtility* self, int**& ppArray, const char* szTable1Name, const char* szTable2Name, int iDefault, bool& result);static bool ReplaceCvDatabaseUtility_Initialize2DArray(bool (*original)(CvDatabaseUtility*, int**&, const char*, const char*, int), CvDatabaseUtility* self, int**& ppArray, const char* szTable1Name, const char* szTable2Name, int iDefault);CivRegisterBefore<CivHooks::CvDatabaseUtility_Initialize2DArray>(host, &BeforeCvDatabaseUtility_Initialize2DArray);CivRegisterAfter<CivHooks::CvDatabaseUtility_Initialize2DArray>(host, &AfterCvDatabaseUtility_Initialize2DArray);CivRegisterReplace<CivHooks::CvDatabaseUtility_Initialize2DArray>(host, &ReplaceCvDatabaseUtility_Initialize2DArray);
Code
80bool CvDatabaseUtility::Initialize2DArray(int**& ppArray, const char* szTable1Name, const char* szTable2Name, int iDefault /* = 0 */)81{82 const int iCount1 = MaxRows(szTable1Name);83 const int iCount2 = MaxRows(szTable2Name);8485 if(iCount1 <= 0 || iCount2 <= 0)86 {87 ppArray = NULL;88 CvAssertMsg(false, "Cannot initialize array to 0 size.");89 return false;90 }9192 unsigned int iNumBytes = iCount1 * sizeof(int*) + iCount1 * iCount2 * sizeof(int);93 unsigned char* pData = FNEW(unsigned char[iNumBytes], c_eCiv5GameplayDLL, 0);94 ppArray = (int**)pData;95 ppArray[0] = (int*)(pData + iCount1 * sizeof(int*));96 for(int i = 0; i < iCount2; ++i)97 {98 ppArray[0][i] = iDefault;99 }100 for(int i = 1; i < iCount1; i++)101 {102 ppArray[i] = ppArray[i-1] + iCount2;103 for(int j = 0; j < iCount2; ++j)104 {105 ppArray[i][j] = iDefault;106 }107 }108109 return true;110}