Files
tp/libs/JSystem/JUtility/JUTNameTab.cpp
T

55 lines
1.3 KiB
C++
Raw Normal View History

2021-04-01 02:07:58 +02:00
//
2021-03-28 22:49:05 +02:00
// Generated By: dol2asm
// Translation Unit: JUTNameTab
2021-04-01 02:07:58 +02:00
//
2021-03-28 22:49:05 +02:00
2021-04-01 02:07:58 +02:00
#include "JSystem/JUtility/JUTNameTab.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/src/string.h"
2021-03-28 22:49:05 +02:00
#include "dol2asm.h"
#include "dolphin/types.h"
2021-05-10 08:54:07 -07:00
JUTNameTab::JUTNameTab() {
setResource(NULL);
2021-03-28 22:49:05 +02:00
}
2021-05-10 08:54:07 -07:00
JUTNameTab::JUTNameTab(const ResNTAB* pNameTable) {
setResource(pNameTable);
2021-03-28 22:49:05 +02:00
}
2021-05-10 08:54:07 -07:00
void JUTNameTab::setResource(const ResNTAB* pNameTable) {
mpNameTable = pNameTable;
2021-03-28 22:49:05 +02:00
2021-05-10 08:54:07 -07:00
if (pNameTable != NULL) {
mNameNum = pNameTable->mEntryNum;
mpStrData = (const char*)(pNameTable->mEntries + mNameNum);
} else {
mNameNum = 0;
mpStrData = 0;
}
2021-03-28 22:49:05 +02:00
}
2021-05-10 08:54:07 -07:00
s32 JUTNameTab::getIndex(const char* pName) const {
const ResNTAB::Entry* pEntry = mpNameTable->mEntries;
u16 keyCode = calcKeyCode(pName);
2021-03-28 22:49:05 +02:00
2021-05-10 08:54:07 -07:00
for (u16 i = 0; i < mNameNum; pEntry++, i++)
if (pEntry->mKeyCode == keyCode &&
strcmp((mpNameTable->mEntries[i].mOffs + ((const char*)mpNameTable)), pName) == 0)
return i;
return -1;
}
const char* JUTNameTab::getName(u16 index) const {
if (index < mNameNum)
return mpNameTable->getName(index);
return NULL;
}
u16 JUTNameTab::calcKeyCode(const char* pName) const {
u32 keyCode = 0;
while (*pName)
keyCode = (keyCode * 3) + *pName++;
return keyCode;
2021-03-28 22:49:05 +02:00
}