mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-03 18:06:02 -04:00
170 lines
4.1 KiB
C++
170 lines
4.1 KiB
C++
/**
|
|
* f_pc_layer.cpp
|
|
* Framework - Process Layer
|
|
*/
|
|
|
|
#include "f_pc/f_pc_layer.h"
|
|
#include "f_pc/f_pc_method_iter.h"
|
|
#include "f_pc/f_pc_method_tag.h"
|
|
|
|
void fpcLy_CancelQTo(process_method_tag_class* i_methods) {
|
|
fpcMtdTg_MethodQTo(i_methods);
|
|
}
|
|
|
|
int fpcLy_ToCancelQ(layer_class* i_layer, process_method_tag_class* i_methods) {
|
|
return fpcMtdTg_ToMethodQ(&i_layer->cancel_list, i_methods);
|
|
}
|
|
|
|
BOOL fpcLy_CancelMethod(process_method_tag_class* i_layer) {
|
|
if (fpcMtdTg_Do(i_layer) == 1) {
|
|
return TRUE;
|
|
} else {
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
int fpcLy_IntoQueue(layer_class* i_layer, int i_treeListNo, create_tag_class* i_createTag, int i_no) {
|
|
int ret = cTg_InsertToTree(&i_layer->node_tree, i_treeListNo, i_createTag, i_no);
|
|
return ret;
|
|
}
|
|
|
|
int fpcLy_ToQueue(layer_class* i_layer, int i_treeListNo, create_tag_class* i_createTag) {
|
|
int ret = cTg_AdditionToTree(&i_layer->node_tree, i_treeListNo, i_createTag);
|
|
return ret;
|
|
}
|
|
|
|
int fpcLy_QueueTo(layer_class* i_layer, create_tag_class* i_createTag) {
|
|
UNUSED(i_layer);
|
|
|
|
int ret = cTg_SingleCutFromTree(i_createTag);
|
|
return ret;
|
|
}
|
|
|
|
BOOL fpcLy_IsDeletingMesg(layer_class* i_layer) {
|
|
BOOL ret;
|
|
if (i_layer->counts.delete_count > 0) {
|
|
ret = TRUE;
|
|
} else {
|
|
ret = FALSE;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
void fpcLy_DeletingMesg(layer_class* i_layer) {
|
|
i_layer->counts.delete_count++;
|
|
}
|
|
|
|
void fpcLy_DeletedMesg(layer_class* i_layer) {
|
|
if (i_layer->counts.delete_count > 0) {
|
|
i_layer->counts.delete_count--;
|
|
}
|
|
}
|
|
|
|
BOOL fpcLy_IsCreatingMesg(layer_class* i_layer) {
|
|
BOOL ret;
|
|
if (i_layer->counts.create_count > 0) {
|
|
ret = TRUE;
|
|
} else {
|
|
ret = FALSE;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
void fpcLy_CreatingMesg(layer_class* i_layer) {
|
|
i_layer->counts.create_count++;
|
|
}
|
|
|
|
void fpcLy_CreatedMesg(layer_class* i_layer) {
|
|
if (i_layer->counts.create_count > 0) {
|
|
i_layer->counts.create_count--;
|
|
}
|
|
}
|
|
|
|
layer_class l_fpcLy_Crear = {
|
|
NULL, NULL, 0, 0xFFFFFFFF, NULL, 0, NULL, NULL, NULL, 0, 0, 0,
|
|
};
|
|
|
|
static node_list_class l_fpcLy_LayerList = {
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
};
|
|
|
|
layer_class* fpcLy_RootLayer() {
|
|
return (layer_class*)l_fpcLy_LayerList.mpHead;
|
|
}
|
|
|
|
static layer_class* l_fpcLy_CurrLayer_p;
|
|
|
|
void fpcLy_SetCurrentLayer(layer_class* i_layer) {
|
|
l_fpcLy_CurrLayer_p = i_layer;
|
|
}
|
|
|
|
layer_class* fpcLy_CurrentLayer() {
|
|
return l_fpcLy_CurrLayer_p;
|
|
}
|
|
|
|
layer_class* fpcLy_Search(fpc_ProcID i_id) {
|
|
layer_class* layer_p = fpcLy_RootLayer();
|
|
while (layer_p != NULL) {
|
|
if (layer_p->layer_id == i_id) {
|
|
return layer_p;
|
|
}
|
|
layer_p = (layer_class*)layer_p->node.mpNextNode;
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
layer_class* fpcLy_Layer(fpc_ProcID i_id) {
|
|
if (i_id == 0 || fpcLy_RootLayer()->layer_id == i_id) {
|
|
return fpcLy_RootLayer();
|
|
} else if (i_id == fpcLy_CURRENT_e || fpcLy_CurrentLayer()->layer_id == i_id) {
|
|
return fpcLy_CurrentLayer();
|
|
} else {
|
|
return fpcLy_Search(i_id);
|
|
}
|
|
}
|
|
|
|
void fpcLy_Regist(layer_class* i_layer) {
|
|
cLs_Addition(&l_fpcLy_LayerList, (node_class*)i_layer);
|
|
}
|
|
|
|
int fpcLy_Delete(layer_class* i_layer) {
|
|
if (i_layer->node_tree.mpLists->mSize == 0 && i_layer->cancel_list.mSize == 0) {
|
|
cLs_SingleCut((node_class*)i_layer);
|
|
*i_layer = l_fpcLy_Crear;
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int fpcLy_Cancel(layer_class* i_layer) {
|
|
return fpcMtdIt_Method(&i_layer->cancel_list, (fpcMtdIt_MethodFunc)fpcLy_CancelMethod);
|
|
}
|
|
|
|
void fpcLy_Create(layer_class* i_layer, void* i_node, node_list_class* i_nodeList, int i_numLists) {
|
|
static BOOL IsInitOfLayerList = TRUE;
|
|
static fpc_ProcID layer_id = 0;
|
|
|
|
*i_layer = l_fpcLy_Crear;
|
|
cNd_Create((node_class*)i_layer, NULL);
|
|
|
|
i_layer->layer_id = layer_id++;
|
|
i_layer->process_node = (process_node_class*)i_node;
|
|
|
|
if (IsInitOfLayerList == TRUE) {
|
|
IsInitOfLayerList = FALSE;
|
|
cLs_Create(&l_fpcLy_LayerList);
|
|
fpcLy_SetCurrentLayer(i_layer);
|
|
}
|
|
|
|
i_layer->node_tree.mpLists = i_nodeList;
|
|
i_layer->node_tree.mNumLists = i_numLists;
|
|
cTr_Create(&i_layer->node_tree, i_layer->node_tree.mpLists, i_layer->node_tree.mNumLists);
|
|
fpcLy_Regist(i_layer);
|
|
}
|