summaryrefslogtreecommitdiff
path: root/include/SComponent
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2020-11-30 14:26:55 -0800
committerGitHub <noreply@github.com>2020-11-30 17:26:55 -0500
commit937da3c59bdc36e6ade59b9ab52ff8acdc71b6de (patch)
treeb7e90e234641bd93ca6cdb781c27d497af461814 /include/SComponent
parent51b0260c808258f2c0b172a80d4b03180cc52e30 (diff)
SComponent c_list / c_node (#5)
* SComponent c_list / c_node * SComponent: c_tree * SComponent: start c_phase * SComponent: c_tag * SComponent: c_counter * f_pc_line / f_pc_line_tag the beginnings of the framework process system * f_pc_method_tag * SComponent: c_node_iter / c_list_iter / c_tag_iter / c_tree_iter * f_pc_draw_priority * f_pc_method_iter * f_pc_profile Also add (untested) base header classes for f_pc_base * f_pc_searcher * f_pc_create_tag * f_pc_creator * f_pc_layer skeleton * f_pc_method * f_pc_line_iter * f_pc_leaf somewhat * f_pc_delete_tag * f_pc_create_req * Fix a few non-matchings * c_phase: slight additional notes * c_node: more matching * fix build * c_node: One more matching * f_pc_line_iter: Matching * f_pc_create_req: a bit more * f_pc_load, f_pc_deletor partial * f_pc_executor partial * f: minor cleanups * f_pc_executor Co-authored-by: Pheenoh <pheenoh@gmail.com>
Diffstat (limited to 'include/SComponent')
-rw-r--r--include/SComponent/c_list.h24
-rw-r--r--include/SComponent/c_list_iter.h15
-rw-r--r--include/SComponent/c_node.h29
-rw-r--r--include/SComponent/c_node_iter.h17
-rw-r--r--include/SComponent/c_phase.h32
-rw-r--r--include/SComponent/c_tag.h28
-rw-r--r--include/SComponent/c_tag_iter.h25
-rw-r--r--include/SComponent/c_tree.h23
-rw-r--r--include/SComponent/c_tree_iter.h15
9 files changed, 208 insertions, 0 deletions
diff --git a/include/SComponent/c_list.h b/include/SComponent/c_list.h
new file mode 100644
index 0000000000..7a7e6066c0
--- /dev/null
+++ b/include/SComponent/c_list.h
@@ -0,0 +1,24 @@
+
+#ifndef SCOMPONENT_C_LIST_H
+#define SCOMPONENT_C_LIST_H
+
+#include "SComponent/c_node.h"
+
+struct node_list_class {
+ node_class *mpHead;
+ node_class *mpTail;
+ int mSize;
+};
+
+extern "C" {
+
+void cLs_Init(node_list_class *pList);
+int cLs_SingleCut(node_class *pNode);
+int cLs_Addition(node_list_class *pList, node_class *pNode);
+int cLs_Insert(node_list_class *pList, int idx, node_class *pNode);
+node_class * cLs_GetFirst(node_list_class *pList);
+void cLs_Create(node_list_class *pList);
+
+};
+
+#endif
diff --git a/include/SComponent/c_list_iter.h b/include/SComponent/c_list_iter.h
new file mode 100644
index 0000000000..06c06590a9
--- /dev/null
+++ b/include/SComponent/c_list_iter.h
@@ -0,0 +1,15 @@
+
+#ifndef SCOMPONENT_C_LIST_ITER_H
+#define SCOMPONENT_C_LIST_ITER_H
+
+#include "SComponent/c_list.h"
+#include "SComponent/c_node_iter.h"
+
+extern "C" {
+
+int cLsIt_Method(node_list_class *pList, cNdIt_MethodFunc pMethod, void *pUserData);
+void * cLsIt_Judge(node_list_class *pList, cNdIt_JudgeFunc pJudge, void *pUserData);
+
+};
+
+#endif
diff --git a/include/SComponent/c_node.h b/include/SComponent/c_node.h
new file mode 100644
index 0000000000..73573c0bae
--- /dev/null
+++ b/include/SComponent/c_node.h
@@ -0,0 +1,29 @@
+
+#ifndef SCOMPONENT_C_NODE_H
+#define SCOMPONENT_C_NODE_H
+
+struct node_class {
+ node_class *mpPrevNode;
+ void *mpData;
+ node_class *mpNextNode;
+};
+
+extern "C" {
+
+void cNd_Join(node_class *pA, node_class *pB);
+int cNd_LengthOf(node_class *pNode);
+node_class * cNd_First(node_class *pNode);
+node_class * cNd_Last(node_class *pNode);
+node_class * cNd_Order(node_class *pNode, int idx);
+void cNd_SingleCut(node_class *pNode);
+void cNd_Cut(node_class *pNode);
+void cNd_Addition(node_class *pA, node_class *pB);
+void cNd_Insert(node_class *pA, node_class *pB);
+void cNd_SetObject(node_class *pNode, void *pData);
+void cNd_ClearObject(node_class *pNode);
+void cNd_ForcedClear(node_class *pNode);
+void cNd_Create(node_class *pNode, void *pData);
+
+};
+
+#endif
diff --git a/include/SComponent/c_node_iter.h b/include/SComponent/c_node_iter.h
new file mode 100644
index 0000000000..8d76321c05
--- /dev/null
+++ b/include/SComponent/c_node_iter.h
@@ -0,0 +1,17 @@
+
+#ifndef SCOMPONENT_C_NODE_ITER_H
+#define SCOMPONENT_C_NODE_ITER_H
+
+#include "SComponent/c_node.h"
+
+extern "C" {
+
+typedef int (*cNdIt_MethodFunc)(node_class *pNode, void *pUserData);
+int cNdIt_Method(node_class *pNode, cNdIt_MethodFunc pMethod, void *pUserData);
+
+typedef void * (*cNdIt_JudgeFunc)(node_class *pNode, void *pUserData);
+void * cNdIt_Judge(node_class *pNode, cNdIt_JudgeFunc pJudge, void *pUserData);
+
+};
+
+#endif
diff --git a/include/SComponent/c_phase.h b/include/SComponent/c_phase.h
new file mode 100644
index 0000000000..c923711dd4
--- /dev/null
+++ b/include/SComponent/c_phase.h
@@ -0,0 +1,32 @@
+
+#ifndef SCOMPONENT_C_PHASE_H
+#define SCOMPONENT_C_PHASE_H
+
+typedef int (*cPhs__Handler)(void *);
+
+enum cPhs__Step {
+ cPhs_ZERO_e = 0x00,
+ // names from Wind Waker debug strings
+ cPhs_COMPLEATE_e = 0x04,
+ cPhs_ERROR_e = 0x05,
+ cPhs_NEXT_e = 0x06,
+};
+
+struct request_of_phase_process_class {
+ cPhs__Handler *mpHandlerTable;
+ int mPhaseStep;
+};
+
+extern "C" {
+
+void cPhs_Reset(request_of_phase_process_class *pPhase);
+void cPhs_Set(request_of_phase_process_class *pPhase, cPhs__Handler *pHandlerTable);
+void cPhs_UnCompleate(request_of_phase_process_class *pPhase);
+int cPhs_Compleate(request_of_phase_process_class *pPhase);
+int cPhs_Next(request_of_phase_process_class *pPhase);
+int cPhs_Do(request_of_phase_process_class *pPhase, void *pUserData);
+int cPhs_Handler(request_of_phase_process_class *pPhase, cPhs__Handler *pHandlerTable, void *pUserData);
+
+};
+
+#endif
diff --git a/include/SComponent/c_tag.h b/include/SComponent/c_tag.h
new file mode 100644
index 0000000000..2c73b3ab10
--- /dev/null
+++ b/include/SComponent/c_tag.h
@@ -0,0 +1,28 @@
+
+#ifndef SCOMPONENT_C_TAG_H
+#define SCOMPONENT_C_TAG_H
+
+#include "global.h"
+#include "SComponent/c_node.h"
+#include "SComponent/c_list.h"
+#include "SComponent/c_tree.h"
+
+struct create_tag_class : public node_class {
+ void *mpTagData;
+ s8 mbIsUse;
+};
+
+extern "C" {
+
+int cTg_IsUse(create_tag_class *pTag);
+int cTg_SingleCutFromTree(create_tag_class *pTag);
+int cTg_AdditionToTree(node_lists_tree_class *pTree, int listIdx, create_tag_class *pTag);
+int cTg_InsertToTree(node_lists_tree_class *pTree, int listIdx, create_tag_class *pTag, int idx);
+node_class * cTg_GetFirst(node_list_class *pTag);
+int cTg_SingleCut(create_tag_class *pTag);
+int cTg_Addition(node_list_class *pList, create_tag_class *pTag);
+void cTg_Create(create_tag_class *pTag, void *pData);
+
+};
+
+#endif
diff --git a/include/SComponent/c_tag_iter.h b/include/SComponent/c_tag_iter.h
new file mode 100644
index 0000000000..b750ac9c76
--- /dev/null
+++ b/include/SComponent/c_tag_iter.h
@@ -0,0 +1,25 @@
+
+#ifndef SCOMPONENT_C_TAG_ITER_H
+#define SCOMPONENT_C_TAG_ITER_H
+
+#include "SComponent/c_tag.h"
+#include "SComponent/c_node_iter.h"
+
+struct method_filter {
+ cNdIt_MethodFunc mpMethodFunc;
+ void *mpUserData;
+};
+
+struct judge_filter {
+ cNdIt_JudgeFunc mpJudgeFunc;
+ void *mpUserData;
+};
+
+extern "C" {
+
+int cTgIt_MethodCall(create_tag_class *pTag, method_filter *pMethodFilter);
+void * cTgIt_JudgeFilter(create_tag_class *pTag, judge_filter *pJudgeFilter);
+
+};
+
+#endif
diff --git a/include/SComponent/c_tree.h b/include/SComponent/c_tree.h
new file mode 100644
index 0000000000..215b5a58e4
--- /dev/null
+++ b/include/SComponent/c_tree.h
@@ -0,0 +1,23 @@
+
+#ifndef SCOMPONENT_C_TREE_H
+#define SCOMPONENT_C_TREE_H
+
+#include "global.h"
+#include "SComponent/c_list.h"
+#include "SComponent/c_node.h"
+
+struct node_lists_tree_class {
+ node_list_class *mpLists;
+ int mNumLists;
+};
+
+extern "C" {
+
+int cTr_SingleCut(node_class *pNode);
+int cTr_Addition(node_lists_tree_class *pTree, int listIdx, node_class *pNode);
+int cTr_Insert(node_lists_tree_class *pTree, int listIdx, node_class *pNode, int idx);
+void cTr_Create(node_lists_tree_class *pTree, node_list_class *pLists, int numLists);
+
+};
+
+#endif
diff --git a/include/SComponent/c_tree_iter.h b/include/SComponent/c_tree_iter.h
new file mode 100644
index 0000000000..0334500efe
--- /dev/null
+++ b/include/SComponent/c_tree_iter.h
@@ -0,0 +1,15 @@
+
+#ifndef SCOMPONENT_C_TREE_ITER_H
+#define SCOMPONENT_C_TREE_ITER_H
+
+#include "SComponent/c_tree.h"
+#include "SComponent/c_node_iter.h"
+
+extern "C" {
+
+int cTrIt_Method(node_lists_tree_class *pTree, cNdIt_MethodFunc pJudgeFunc, void *pUserData);
+void * cTrIt_Judge(node_lists_tree_class *pTree, cNdIt_JudgeFunc pJudgeFunc, void *pUserData);
+
+};
+
+#endif