diff options
| author | lepelog <lepelog@users.noreply.github.com> | 2021-04-01 12:06:29 +0200 |
|---|---|---|
| committer | lepelog <lepelog@users.noreply.github.com> | 2021-04-01 12:06:29 +0200 |
| commit | 53c6aa6c8b50d95e89f64db70d0cc08fb4111a93 (patch) | |
| tree | 20ce5067caef7892c2c9bb043b10918c15dd7868 /src/f_pc/f_pc_create_iter.cpp | |
| parent | 87bc0e711b4fb2f990f3c37ca681be1fc027d554 (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.cpp | 99 |
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 |
