Isolate JKRHeap operator overloads

Fixes #25

This isolates the JKRHeap operator new/delete overloads. Every single new/delete site in the code has been replaced with a macro.

Sadly for new[] and delete[] we have to keep global operators. The global new[] just allocates into malloc() however, and delete[] goes into free() if it's not in a JKRHeap. So that's fine.
This commit is contained in:
PJB3005
2026-02-27 23:11:59 +01:00
parent 2204ad0813
commit 038ef4216f
634 changed files with 3451 additions and 3350 deletions
+48 -48
View File
@@ -77,73 +77,73 @@ dMenu_Letter_c::dMenu_Letter_c(JKRExpHeap* i_heap, STControl* i_stick, CSTContro
dMenu_Letter_c::~dMenu_Letter_c() {
delete mpDrawCursor;
JKR_DELETE(mpDrawCursor);
mpDrawCursor = NULL;
delete mpArrow;
JKR_DELETE(mpArrow);
mpArrow = NULL;
delete mpString;
JKR_DELETE(mpString);
mpString = NULL;
delete mpMenuScreen;
JKR_DELETE(mpMenuScreen);
mpMenuScreen = NULL;
delete mpMenuDMYScreen;
JKR_DELETE(mpMenuDMYScreen);
mpMenuDMYScreen = NULL;
delete mpBaseScreen;
JKR_DELETE(mpBaseScreen);
mpBaseScreen = NULL;
delete mpSdwScreen;
JKR_DELETE(mpSdwScreen);
mpSdwScreen = NULL;
for (int i = 0; i < 2; i++) {
delete mpLetterScreen[i];
JKR_DELETE(mpLetterScreen[i]);
mpLetterScreen[i] = NULL;
delete field_0x2ec[i];
JKR_DELETE(field_0x2ec[i]);
field_0x2ec[i] = NULL;
if (field_0x2f4[i] != NULL) {
delete field_0x2f4[i];
JKR_DELETE(field_0x2f4[i]);
field_0x2f4[i] = NULL;
}
delete mpTextParent[i];
JKR_DELETE(mpTextParent[i]);
mpTextParent[i] = NULL;
}
delete mpLineParent;
JKR_DELETE(mpLineParent);
mpLineParent = NULL;
delete mpBlackTex;
JKR_DELETE(mpBlackTex);
mpBlackTex = NULL;
for (int i = 0; i < 3; i++) {
delete mpParent[i];
JKR_DELETE(mpParent[i]);
mpParent[i] = NULL;
}
for (int i = 0; i < 6; i++) {
delete mpLetterParent[i];
JKR_DELETE(mpLetterParent[i]);
mpLetterParent[i] = NULL;
}
delete mpDMYParent;
JKR_DELETE(mpDMYParent);
mpDMYParent = NULL;
delete mpIconScreen;
JKR_DELETE(mpIconScreen);
mpIconScreen = NULL;
for (int i = 0; i < 2; i++) {
if (mpButtonAB[i] != NULL) {
delete mpButtonAB[i];
JKR_DELETE(mpButtonAB[i]);
mpButtonAB[i] = NULL;
}
if (mpButtonText[i] != NULL) {
delete mpButtonText[i];
JKR_DELETE(mpButtonText[i]);
mpButtonText[i] = NULL;
}
}
@@ -162,7 +162,7 @@ dMenu_Letter_c::~dMenu_Letter_c() {
}
void dMenu_Letter_c::_create() {
mpDrawCursor = new dSelect_cursor_c(2, 1.0f, NULL);
mpDrawCursor = JKR_NEW dSelect_cursor_c(2, 1.0f, NULL);
JUT_ASSERT(231, mpDrawCursor != NULL);
// shield prod uses same values as GCN?
#if PLATFORM_WII || VERSION == VERSION_SHIELD_DEBUG
@@ -174,10 +174,10 @@ void dMenu_Letter_c::_create() {
mpDrawCursor->setScale(0.0f);
mpDrawCursor->offPlayAnime(0);
mpString = new dMsgString_c();
mpString = JKR_NEW dMsgString_c();
JUT_ASSERT(245, mpString != NULL);
mpArrow = new dMsgScrnArrow_c();
mpArrow = JKR_NEW dMsgScrnArrow_c();
JUT_ASSERT(249, mpArrow != NULL);
screenSetMenu();
@@ -310,7 +310,7 @@ int dMenu_Letter_c::_open() {
if (mpMount->sync() != 0) {
if (!mpArchive) {
mpArchive = (JKRArchive*)mpMount->getArchive();
delete mpMount;
JKR_DELETE(mpMount);
mpMount = NULL;
_create();
}
@@ -751,12 +751,12 @@ void dMenu_Letter_c::screenSetMenu() {
MULTI_CHAR('midoku_0'), MULTI_CHAR('midoku_1'), MULTI_CHAR('midoku_2'), MULTI_CHAR('midoku_3'), MULTI_CHAR('midoku_4'), MULTI_CHAR('midoku_5'),
};
mpMenuScreen = new J2DScreen();
mpMenuScreen = JKR_NEW J2DScreen();
JUT_ASSERT(1146, mpMenuScreen != NULL);
bool fg = mpMenuScreen->setPriority("zelda_letter_select_6menu.blo", 0x20000, mpArchive);
JUT_ASSERT(1156, fg != false);
dPaneClass_showNullPane(mpMenuScreen);
mpParent[0] = new CPaneMgr(mpMenuScreen, MULTI_CHAR('n_all'), 2, NULL);
mpParent[0] = JKR_NEW CPaneMgr(mpMenuScreen, MULTI_CHAR('n_all'), 2, NULL);
JUT_ASSERT(1161, mpParent[0] != NULL);
mpParent[0]->setAlphaRate(0.0f);
for (int i = 0; i < 6; i++) {
@@ -785,7 +785,7 @@ void dMenu_Letter_c::screenSetMenu() {
}
}
for (int i = 0; i < 6; i++) {
mpLetterParent[i] = new CPaneMgr(mpMenuScreen, tag_letter[i], 0, NULL);
mpLetterParent[i] = JKR_NEW CPaneMgr(mpMenuScreen, tag_letter[i], 0, NULL);
JUT_ASSERT(1212, mpLetterParent[i] != NULL);
}
for (int i = 0; i < 6; i++) {
@@ -823,12 +823,12 @@ void dMenu_Letter_c::screenSetMenu() {
field_0x338[i] = ((J2DTextBox*)field_0x34[1][i])->getWhite();
}
}
mpMenuDMYScreen = new J2DScreen();
mpMenuDMYScreen = JKR_NEW J2DScreen();
JUT_ASSERT(1270, mpMenuDMYScreen != NULL);
fg = mpMenuDMYScreen->setPriority("zelda_letter_select_6menu.blo", 0x20000, mpArchive);
JUT_ASSERT(1280, fg != false);
dPaneClass_showNullPane(mpMenuDMYScreen);
mpDMYParent = new CPaneMgr(mpMenuDMYScreen, MULTI_CHAR('n_all'), 2, NULL);
mpDMYParent = JKR_NEW CPaneMgr(mpMenuDMYScreen, MULTI_CHAR('n_all'), 2, NULL);
JUT_ASSERT(1285, mpDMYParent != NULL);
for (int i = 0; i < 6; i++) {
#if VERSION == VERSION_GCN_JPN
@@ -877,13 +877,13 @@ void dMenu_Letter_c::screenSetBase() {
MULTI_CHAR('pi_00'), MULTI_CHAR('pi_01'), MULTI_CHAR('pi_02'), MULTI_CHAR('pi_03'), MULTI_CHAR('pi_04'), MULTI_CHAR('pi_05'), MULTI_CHAR('pi_06'), MULTI_CHAR('pi_07'), MULTI_CHAR('pi_08'),
};
mpBaseScreen = new J2DScreen();
mpBaseScreen = JKR_NEW J2DScreen();
JUT_ASSERT(1357, mpBaseScreen != NULL);
bool fg = mpBaseScreen->setPriority("zelda_letter_select_base.blo", 0x20000, mpArchive);
JUT_ASSERT(1361, fg != false);
dPaneClass_showNullPane(mpBaseScreen);
mpBaseScreen->search(MULTI_CHAR('wi_btn_n'))->hide();
mpParent[1] = new CPaneMgr(mpBaseScreen, MULTI_CHAR('n_all'), 2, NULL);
mpParent[1] = JKR_NEW CPaneMgr(mpBaseScreen, MULTI_CHAR('n_all'), 2, NULL);
JUT_ASSERT(1372, mpParent[1] != NULL);
mpParent[1]->setAlphaRate(0.0f);
#if VERSION == VERSION_GCN_JPN
@@ -966,15 +966,15 @@ void dMenu_Letter_c::screenSetBase() {
}
void dMenu_Letter_c::screenSetShadow() {
mpSdwScreen = new J2DScreen();
mpSdwScreen = JKR_NEW J2DScreen();
mpSdwScreen->setPriority("zelda_letter_select_shadow.blo", 0x20000, mpArchive);
dPaneClass_showNullPane(mpSdwScreen);
mpParent[2] = new CPaneMgr(mpSdwScreen, MULTI_CHAR('n_all'), 2, NULL);
mpParent[2] = JKR_NEW CPaneMgr(mpSdwScreen, MULTI_CHAR('n_all'), 2, NULL);
mpParent[2]->setAlphaRate(0.0f);
}
void dMenu_Letter_c::screenSetLetter() {
mpLetterScreen[0] = new J2DScreen();
mpLetterScreen[0] = JKR_NEW J2DScreen();
JUT_ASSERT(1507, mpLetterScreen[0] != NULL);
bool fg = mpLetterScreen[0]->setPriority("zelda_letter_window_base.blo", 0x20000, mpArchive);
JUT_ASSERT(1511, fg != false);
@@ -982,15 +982,15 @@ void dMenu_Letter_c::screenSetLetter() {
#if VERSION == VERSION_GCN_JPN
if (dComIfGs_getOptRuby() == 0) {
field_0x2ec[0] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('t3f_s'), 0, NULL);
field_0x2ec[1] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3flin'), 0, NULL);
field_0x2f4[0] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3f_s'), 0, NULL);
field_0x2f4[1] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3f'), 0, NULL);
field_0x2ec[0] = JKR_NEW CPaneMgr(mpLetterScreen[0], MULTI_CHAR('t3f_s'), 0, NULL);
field_0x2ec[1] = JKR_NEW CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3flin'), 0, NULL);
field_0x2f4[0] = JKR_NEW CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3f_s'), 0, NULL);
field_0x2f4[1] = JKR_NEW CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3f'), 0, NULL);
mpLetterScreen[0]->search('t4_s')->hide();
mpLetterScreen[0]->search(MULTI_CHAR('mg_e4lin'))->hide();
mpLetterScreen[0]->search('t3_s')->hide();
mpLetterScreen[0]->search(MULTI_CHAR('mg_3line'))->hide();
mpLineParent = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('jp_fri_n'), 0, NULL);
mpLineParent = JKR_NEW CPaneMgr(mpLetterScreen[0], MULTI_CHAR('jp_fri_n'), 0, NULL);
JUT_ASSERT(1530, mpLineParent != NULL);
for (int i = 0; i < 12; i++) {
static u64 const line_tag[12] = {
@@ -1010,8 +1010,8 @@ void dMenu_Letter_c::screenSetLetter() {
((J2DTextBox*)field_0x2f4[0]->getPanePtr())->setLineSpace(((J2DTextBox*)field_0x2ec[0]->getPanePtr())->getLineSpace());
((J2DTextBox*)field_0x2f4[1]->getPanePtr())->setLineSpace(((J2DTextBox*)field_0x2ec[1]->getPanePtr())->getLineSpace());
} else {
field_0x2ec[0] = new CPaneMgr(mpLetterScreen[0], 't3_s', 0, NULL);
field_0x2ec[1] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3line'), 0, NULL);
field_0x2ec[0] = JKR_NEW CPaneMgr(mpLetterScreen[0], 't3_s', 0, NULL);
field_0x2ec[1] = JKR_NEW CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_3line'), 0, NULL);
for (int i = 0; i < 2; i++) {
field_0x2f4[i] = NULL;
}
@@ -1021,7 +1021,7 @@ void dMenu_Letter_c::screenSetLetter() {
mpLetterScreen[0]->search(MULTI_CHAR('mg_3flin'))->hide();
mpLetterScreen[0]->search(MULTI_CHAR('mg_3f_s'))->hide();
mpLetterScreen[0]->search(MULTI_CHAR('mg_3f'))->hide();
mpLineParent = new CPaneMgr(mpLetterScreen[0], 'jp_n', 0, NULL);
mpLineParent = JKR_NEW CPaneMgr(mpLetterScreen[0], 'jp_n', 0, NULL);
JUT_ASSERT(1530, mpLineParent != NULL);
for (int i = 0; i < 12; i++) {
static u64 const line_tag[12] = {
@@ -1045,8 +1045,8 @@ void dMenu_Letter_c::screenSetLetter() {
MULTI_CHAR('line15'), MULTI_CHAR('line16'), MULTI_CHAR('line17'), MULTI_CHAR('line18'), MULTI_CHAR('line19'), MULTI_CHAR('line20'),
};
field_0x2ec[0] = new CPaneMgr(mpLetterScreen[0], 't4_s', 0, NULL);
field_0x2ec[1] = new CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_e4lin'), 0, NULL);
field_0x2ec[0] = JKR_NEW CPaneMgr(mpLetterScreen[0], 't4_s', 0, NULL);
field_0x2ec[1] = JKR_NEW CPaneMgr(mpLetterScreen[0], MULTI_CHAR('mg_e4lin'), 0, NULL);
for (int i = 0; i < 2; i++) {
field_0x2f4[i] = NULL;
}
@@ -1056,7 +1056,7 @@ void dMenu_Letter_c::screenSetLetter() {
mpLetterScreen[0]->search(MULTI_CHAR('mg_3f'))->hide();
mpLetterScreen[0]->search('t3_s')->hide();
mpLetterScreen[0]->search(MULTI_CHAR('mg_3line'))->hide();
mpLineParent = new CPaneMgr(mpLetterScreen[0], 'us_n', 0, NULL);
mpLineParent = JKR_NEW CPaneMgr(mpLetterScreen[0], 'us_n', 0, NULL);
JUT_ASSERT(1530, mpLineParent != NULL);
for (int i = 0; i < 12; i++) {
if (line_tag[i] != 0) {
@@ -1091,19 +1091,19 @@ void dMenu_Letter_c::screenSetLetter() {
field_0x1e4[i]->setFont(mDoExt_getSubFont());
field_0x1e4[i]->setString(0x10, "");
}
mpLetterScreen[1] = new J2DScreen();
mpLetterScreen[1] = JKR_NEW J2DScreen();
JUT_ASSERT(1627, mpLetterScreen[1] != NULL);
fg = mpLetterScreen[1]->setPriority("zelda_letter_window_spot.blo", 0x20000, mpArchive);
JUT_ASSERT(1631, fg != false);
dPaneClass_showNullPane(mpLetterScreen[1]);
for (int i = 0; i < 2; i++) {
mpTextParent[i] = new CPaneMgr(mpLetterScreen[i], MULTI_CHAR('n_all'), 2, NULL);
mpTextParent[i] = JKR_NEW CPaneMgr(mpLetterScreen[i], MULTI_CHAR('n_all'), 2, NULL);
JUT_ASSERT(1636, mpTextParent[i] != NULL);
mpTextParent[i]->scale(0.0f, 0.0f);
mpTextParent[i]->setAlphaRate(0.0f);
}
ResTIMG* local_30 = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti");
mpBlackTex = new J2DPicture(local_30);
mpBlackTex = JKR_NEW J2DPicture(local_30);
JUT_ASSERT(1644, mpBlackTex != NULL);
mpBlackTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mpBlackTex->setAlpha(0);
@@ -1117,7 +1117,7 @@ void dMenu_Letter_c::screenSetDoIcon() {
MULTI_CHAR('btext1_1'), MULTI_CHAR('btext1_2'), MULTI_CHAR('btext1_3'), MULTI_CHAR('btext1_4'), MULTI_CHAR('btext1_5'),
};
mpIconScreen = new J2DScreen();
mpIconScreen = JKR_NEW J2DScreen();
mpIconScreen->setPriority("zelda_collect_soubi_do_icon_parts.blo", 0x20000, mpArchive);
for (int i = 0; i < 2; i++) {
mpButtonAB[i] = NULL;