summaryrefslogtreecommitdiff
path: root/src/f_pc/f_pc_create_iter.cpp
diff options
context:
space:
mode:
authorlepelog <lepelog@users.noreply.github.com>2021-04-01 12:06:29 +0200
committerlepelog <lepelog@users.noreply.github.com>2021-04-01 12:06:29 +0200
commit53c6aa6c8b50d95e89f64db70d0cc08fb4111a93 (patch)
tree20ce5067caef7892c2c9bb043b10918c15dd7868 /src/f_pc/f_pc_create_iter.cpp
parent87bc0e711b4fb2f990f3c37ca681be1fc027d554 (diff)
ported over f_pc
Diffstat (limited to 'src/f_pc/f_pc_create_iter.cpp')
-rw-r--r--src/f_pc/f_pc_create_iter.cpp99
1 files changed, 24 insertions, 75 deletions
diff --git a/src/f_pc/f_pc_create_iter.cpp b/src/f_pc/f_pc_create_iter.cpp
index 4041222c79..5daf12a44d 100644
--- a/src/f_pc/f_pc_create_iter.cpp
+++ b/src/f_pc/f_pc_create_iter.cpp
@@ -6,95 +6,44 @@
#include "f_pc/f_pc_create_iter.h"
#include "dol2asm.h"
#include "dolphin/types.h"
-
-//
-// Types:
-//
-
-struct node_list_class {};
-
-struct node_class {};
-
-struct method_filter {};
-
-struct judge_filter {};
-
-struct fpcCtIt_jilprm_c {};
-
-struct create_tag_class {};
-
-struct create_tag {};
-
-//
-// Forward References:
-//
-
-void fpcCtIt_Method(int (*)(void*, void*), void*);
-void fpcCtIt_Judge(void* (*)(void*, void*), void*);
-static void fpcCtIt_filter_JudgeInLayer(create_tag*, fpcCtIt_jilprm_c*);
-void fpcCtIt_JudgeInLayer(unsigned int, void* (*)(void*, void*), void*);
-
-extern "C" void fpcCtIt_Method__FPFPvPv_iPv();
-extern "C" void fpcCtIt_Judge__FPFPvPv_PvPv();
-extern "C" static void fpcCtIt_filter_JudgeInLayer__FP10create_tagP16fpcCtIt_jilprm_c();
-extern "C" void fpcCtIt_JudgeInLayer__FUiPFPvPv_PvPv();
-
-//
-// External References:
-//
-
-void cLsIt_Method(node_list_class*, int (*)(node_class*, void*), void*);
-void cLsIt_Judge(node_list_class*, void* (*)(node_class*, void*), void*);
-void cTgIt_MethodCall(create_tag_class*, method_filter*);
-void cTgIt_JudgeFilter(create_tag_class*, judge_filter*);
-
-extern "C" void cLsIt_Method__FP15node_list_classPFP10node_classPv_iPv();
-extern "C" void cLsIt_Judge__FP15node_list_classPFP10node_classPv_PvPv();
-extern "C" void cTgIt_MethodCall__FP16create_tag_classP13method_filter();
-extern "C" void cTgIt_JudgeFilter__FP16create_tag_classP12judge_filter();
-extern "C" extern u8 g_fpcCtTg_Queue[12 + 4 /* padding */];
+#include "f_pc/f_pc_create_req.h"
//
// Declarations:
//
/* 800209C8-80020A04 003C+00 s=0 e=1 z=0 None .text fpcCtIt_Method__FPFPvPv_iPv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcCtIt_Method(int (*)(void*, void*), void* param_1) {
- nofralloc
-#include "asm/f_pc/f_pc_create_iter/fpcCtIt_Method__FPFPvPv_iPv.s"
+s32 fpcCtIt_Method(fpcCtIt_MethodFunc pJudge, void* pUserData) {
+ node_method_data iter;
+ iter.mFunc = pJudge;
+ iter.mpUserData = pUserData;
+ return cLsIt_Method(&g_fpcCtTg_Queue, (cNdIt_MethodFunc)cTgIt_MethodCall, &iter);
}
-#pragma pop
/* 80020A04-80020A40 003C+00 s=1 e=2 z=0 None .text fpcCtIt_Judge__FPFPvPv_PvPv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcCtIt_Judge(void* (*)(void*, void*), void* param_1) {
- nofralloc
-#include "asm/f_pc/f_pc_create_iter/fpcCtIt_Judge__FPFPvPv_PvPv.s"
+void* fpcCtIt_Judge(fpcCtIt_JudgeFunc pJudge, void* pUserData) {
+ node_judge_data iter;
+ iter.mFunc = pJudge;
+ iter.mpUserData = pUserData;
+ return cLsIt_Judge(&g_fpcCtTg_Queue, (cNdIt_JudgeFunc)cTgIt_JudgeFilter, &iter);
}
-#pragma pop
/* 80020A40-80020A94 0054+00 s=1 e=0 z=0 None .text
* fpcCtIt_filter_JudgeInLayer__FP10create_tagP16fpcCtIt_jilprm_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm static void fpcCtIt_filter_JudgeInLayer(create_tag* param_0, fpcCtIt_jilprm_c* param_1) {
- nofralloc
-#include "asm/f_pc/f_pc_create_iter/fpcCtIt_filter_JudgeInLayer__FP10create_tagP16fpcCtIt_jilprm_c.s"
+void* fpcCtIt_filter_JudgeInLayer(create_tag* pCreateTag, fpcCtIt_jilprm_c* pIterData) {
+ create_request* create_req = static_cast<create_request*>(pCreateTag->mBase.mpTagData);
+ if (create_req->mpLayer->mLayerID == pIterData->mLayerID) {
+ return pIterData->mFunc((node_class*)create_req->mpRes, pIterData->mpUserData);
+ } else {
+ return NULL;
+ }
}
-#pragma pop
/* 80020A94-80020ACC 0038+00 s=0 e=1 z=0 None .text fpcCtIt_JudgeInLayer__FUiPFPvPv_PvPv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void fpcCtIt_JudgeInLayer(unsigned int param_0, void* (*)(void*, void*), void* param_2) {
- nofralloc
-#include "asm/f_pc/f_pc_create_iter/fpcCtIt_JudgeInLayer__FUiPFPvPv_PvPv.s"
+void* fpcCtIt_JudgeInLayer(unsigned int pLayerID, fpcCtIt_JudgeFunc pFunc, void* pUserData) {
+ fpcCtIt_jilprm_c data;
+ data.mLayerID = pLayerID;
+ data.mFunc = pFunc;
+ data.mpUserData = pUserData;
+ return fpcCtIt_Judge((fpcCtIt_JudgeFunc)fpcCtIt_filter_JudgeInLayer, &data);
}
-#pragma pop