summaryrefslogtreecommitdiff
path: root/src/f_pc/f_pc_fstcreate_req.cpp
blob: 095302dc8e80f170963099a554f10debb91fe6a9 (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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//
// Generated by dtk
// Translation Unit: f_pc_fstcreate_req.cpp
//

#include "f_pc/f_pc_fstcreate_req.h"
#include "f_pc/f_pc_base.h"
#include "f_pc/f_pc_layer.h"
#include "f_pc/f_pc_load.h"
#include "SSystem/SComponent/c_phase.h"
#include "global.h"

/* 80040520-80040570       .text fpcFCtRq_Do__FP19fast_create_request */
cPhs_State fpcFCtRq_Do(fast_create_request* i_createReq) {
    if (i_createReq->mpFastCreateFunc != NULL && i_createReq->mpFastCreateFunc(i_createReq->base.mpRes, i_createReq->mpFastCreateData) == 0) {
        return cPhs_STOP_e;
    } else {
        return cPhs_COMPLEATE_e;
    }
}

/* 80040570-80040578       .text fpcFCtRq_Delete__FP19fast_create_request */
BOOL fpcFCtRq_Delete(fast_create_request* i_createReq) {
    return TRUE;
}

/* 80040578-80040648       .text fpcFCtRq_Request__FP11layer_classsPFPvPv_iPvPv */
base_process_class* fpcFCtRq_Request(layer_class* i_layer, s16 i_procTypeID,
                                     fstCreateFunc i_createFunc, void* i_createData, void* pData) {
    static create_request_method_class submethod = {
        (cPhs__Handler)fpcFCtRq_Do,
        NULL,
        (process_method_func)fpcFCtRq_Delete
    };

    if (!fpcLd_Use(i_procTypeID)) {
        return NULL;
    } else {
        fast_create_request* request = (fast_create_request*)fpcCtRq_Create(i_layer, 0x50, &submethod);
        if (request != NULL) {
            base_process_class* proc;
            fpcLy_SetCurrentLayer(i_layer);
            proc = fpcBs_Create(i_procTypeID, fpcBs_MakeOfId(), pData);
            if (proc != NULL) {
                proc->mpCtRq = (struct create_request*)request;
                request->base.mpRes = proc;
                request->base.mBsPcId = proc->mBsPcId;
                if (fpcBs_SubCreate(proc) == cPhs_NEXT_e) {
                    request->mpFastCreateFunc = i_createFunc;
                    request->mpFastCreateData = i_createData;
                    return proc;
                }
            }
#if VERSION <= VERSION_JPN
            fpcCtRq_Delete(&request->base);
#else
            fpcCtRq_Cancel(&request->base);
#endif
        }
        return NULL;
    }
}