summaryrefslogtreecommitdiff
path: root/include/JSystem/JUtility/JUTNameTab.h
blob: d6c17bdddb0a6dce102f65b2bf3df78f9dc0bfb5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef JUTNAMETAB_H
#define JUTNAMETAB_H

#include "dolphin/types.h"

struct ResNTAB {
    u16 mEntryNum;
    u16 mPad0;
    struct Entry {
        u16 mKeyCode;
        u16 mOffs;
    } mEntries[1];

    inline const char* getName(u32 index) const {
        return ((const char*)mEntries) + mEntries[index].mOffs - 4;
    }
};

class JUTNameTab {
public:
    JUTNameTab();
    JUTNameTab(const ResNTAB* pNameTable);
    virtual ~JUTNameTab() {};

    void setResource(const ResNTAB* pNameTable);
    s32 getIndex(char const*) const;
    const char* getName(u16 index) const;
    u16 calcKeyCode(char const* pName) const;
    const ResNTAB* getResNameTable() const { return mNameTable; }

private:
    /* 0x4 */ const ResNTAB* mNameTable;
    /* 0x8 */ const char* mpStrData;
    /* 0xC */ u16 mNameNum;
};

#endif /* JUTNAMETAB_H */