summaryrefslogtreecommitdiff
path: root/src/f_pc/f_pc_create_req.cpp
diff options
context:
space:
mode:
authorLuke Street <luke.street@encounterpc.com>2023-09-10 00:42:26 -0400
committerLuke Street <luke.street@encounterpc.com>2023-09-10 00:48:55 -0400
commitadb95b135c3d7498eba29bbd9728d345eed5a407 (patch)
tree655575b939c12067569263171b68c079b1a232c8 /src/f_pc/f_pc_create_req.cpp
parent81ac53f1317dafb3506ae3ed8b2820d40645c3c8 (diff)
Import project
Original repository: https://github.com/encounter/ww
Diffstat (limited to 'src/f_pc/f_pc_create_req.cpp')
-rw-r--r--src/f_pc/f_pc_create_req.cpp131
1 files changed, 131 insertions, 0 deletions
diff --git a/src/f_pc/f_pc_create_req.cpp b/src/f_pc/f_pc_create_req.cpp
new file mode 100644
index 00000000..b2d7b8e2
--- /dev/null
+++ b/src/f_pc/f_pc_create_req.cpp
@@ -0,0 +1,131 @@
+//
+// Generated by dtk
+// Translation Unit: f_pc_create_req.cpp
+//
+
+#include "f_pc/f_pc_create_req.h"
+#include "SSystem/SComponent/c_malloc.h"
+#include "f_pc/f_pc_base.h"
+#include "f_pc/f_pc_create_iter.h"
+#include "f_pc/f_pc_deletor.h"
+#include "f_pc/f_pc_executor.h"
+#include "f_pc/f_pc_layer.h"
+#include "f_pc/f_pc_layer_iter.h"
+
+/* 8003CD0C-8003CD28 .text fpcCtRq_isCreatingByID__FP10create_tagPUi */
+bool fpcCtRq_isCreatingByID(create_tag* i_createTag, unsigned int* i_procID) {
+ create_request* pReq = static_cast<create_request*>(i_createTag->mBase.mpTagData);
+ return pReq->mBsPcId == *i_procID;
+}
+
+/* 8003CD28-8003CD60 .text fpcCtRq_IsCreatingByID__FUi */
+BOOL fpcCtRq_IsCreatingByID(unsigned int i_id) {
+ return fpcCtIt_Judge((fpcLyIt_JudgeFunc)fpcCtRq_isCreatingByID, &i_id) != NULL ? TRUE : FALSE;
+}
+
+/* 8003CD60-8003CD9C .text fpcCtRq_CreateQTo__FP14create_request */
+void fpcCtRq_CreateQTo(create_request* i_request) {
+ fpcCtTg_CreateQTo(&i_request->mBase);
+ fpcLy_CreatedMesg(i_request->mpLayer);
+ fpcLy_CancelQTo(&i_request->mMtdTg);
+}
+
+/* 8003CD9C-8003CDE0 .text fpcCtRq_ToCreateQ__FP14create_request */
+void fpcCtRq_ToCreateQ(create_request* i_request) {
+ fpcLy_CreatingMesg(i_request->mpLayer);
+ fpcLy_ToCancelQ(i_request->mpLayer, &i_request->mMtdTg);
+ fpcCtTg_ToCreateQ(&i_request->mBase);
+}
+
+/* 8003CDE0-8003CE54 .text fpcCtRq_Delete__FP14create_request */
+BOOL fpcCtRq_Delete(create_request* i_request) {
+ fpcCtRq_CreateQTo(i_request);
+ if (i_request->mpCtRqMtd != NULL && fpcMtd_Method(i_request->mpCtRqMtd->mpDelete, i_request) == 0) {
+ return 0;
+ } else {
+ if (i_request->mpRes) {
+ i_request->mpRes->mpCtRq = NULL;
+ }
+ cMl::free(i_request);
+ return 1;
+ }
+}
+
+/* 8003CE54-8003CEEC .text fpcCtRq_Cancel__FP14create_request */
+BOOL fpcCtRq_Cancel(create_request* i_request) {
+ base_process_class* pProc;
+ if (i_request != NULL && !i_request->mbIsCancelling) {
+ i_request->mbIsCancelling = TRUE;
+ pProc = i_request->mpRes;
+
+ if (pProc != NULL && !fpcDt_Delete(pProc))
+ return FALSE;
+
+ if (i_request->mpCtRqMtd != NULL && !fpcMtd_Method(i_request->mpCtRqMtd->mpCancel, i_request))
+ return FALSE;
+
+ return fpcCtRq_Delete(i_request);
+ } else {
+ return TRUE;
+ }
+}
+
+/* 8003CEEC-8003CF08 .text fpcCtRq_IsDoing__FP14create_request */
+s32 fpcCtRq_IsDoing(create_request* i_request) {
+ if (i_request != NULL)
+ return i_request->mbIsCreating;
+ else
+ return FALSE;
+}
+
+/* 8003CF08-8003CFC4 .text fpcCtRq_Do__FP14create_request */
+BOOL fpcCtRq_Do(create_request* i_request) {
+ s32 phase = cPhs_COMPLEATE_e;
+
+ if (i_request->mpCtRqMtd != NULL) {
+ cPhs__Handler pHandler = i_request->mpCtRqMtd->mpHandler;
+ if (pHandler != NULL) {
+ i_request->mbIsCreating = TRUE;
+ phase = pHandler(i_request);
+ i_request->mbIsCreating = FALSE;
+ }
+ }
+
+ switch (phase) {
+ case cPhs_COMPLEATE_e: {
+ s32 success = fpcEx_ToExecuteQ(i_request->mpRes);
+ if (success == 0)
+ return fpcCtRq_Cancel(i_request);
+ else
+ return fpcCtRq_Delete(i_request);
+ }
+ case 3:
+ case cPhs_ERROR_e:
+ return fpcCtRq_Cancel(i_request);
+ }
+
+ return 1;
+}
+
+/* 8003CFC4-8003CFF0 .text fpcCtRq_Handler__Fv */
+void fpcCtRq_Handler() {
+ fpcCtIt_Method((fpcCtIt_MethodFunc)fpcCtRq_Do, NULL);
+}
+
+/* 8003CFF0-8003D078 .text fpcCtRq_Create__FP11layer_classUlP27create_request_method_class */
+create_request* fpcCtRq_Create(layer_class* i_layer, u32 i_size, create_request_method_class* i_CtRqMethods) {
+ create_request* pReq = (create_request*)cMl::memalignB(-4, i_size);
+
+ if (pReq != NULL) {
+ fpcCtTg_Init(&pReq->mBase, pReq);
+ fpcMtdTg_Init(&pReq->mMtdTg, (process_method_tag_func)fpcCtRq_Cancel, pReq);
+ pReq->mpLayer = i_layer;
+ pReq->mpCtRqMtd = i_CtRqMethods;
+ pReq->mBsPcId = fpcBs_MakeOfId();
+ pReq->mpRes = NULL;
+ pReq->mbIsCancelling = FALSE;
+ fpcCtRq_ToCreateQ(pReq);
+ }
+
+ return pReq;
+}