Archeus 0.0.0
A C library and game engine that focuses on documentation
Loading...
Searching...
No Matches
handler.h
Go to the documentation of this file.
1#ifndef ARC_STD_HANDLER_H_
2#define ARC_STD_HANDLER_H_
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8#include "arc/std/bool.h"
9#include <stdint.h>
10
11/**
12 * @brief a handler type
13 */
14typedef struct ARC_Handler ARC_Handler;
15
16/**
17 * @brief data comparison function ptr
18 *
19 * @note this is used for comparison within vectors
20 *
21 * @param a first data struct
22 * @param b second data struct
23 *
24 * @return 0 when a == b
25 */
26typedef ARC_Bool (* ARC_Handler_CompareDataFn)(void *a, void *b);
27
28/**
29 * @brief a function that will take iterated data
30 *
31 * @param data iterated data from ARC_Handler_Iterate
32 */
33typedef void (* ARC_Handler_DataFn)(void *data);
34
35/**
36 * @brief a function that will be used during destruction of trash vector
37 *
38 * @param data data that is being destroyed from trash
39 */
40typedef void (* ARC_Handler_CleanDataFn)(void *data);
41
42/**
43 * @brief creates ARC_Handler type
44 *
45 * @param config ARC_Handler to initialize
46 * @param compareFn function to remove handler data
47 * @param cleanFn function to clean data in handler
48 * can be null
49 */
51
52/**
53 * @brief destroyes ARC_Handler type
54 *
55 * @param handler ARC_Handler to destory
56 */
58
59/**
60 * @brief adds data to handler
61 *
62 * @param handler ARC_Handler to add to
63 * @param data data that is being added
64 */
65void ARC_Handler_Add(ARC_Handler *handler, void *data);
66
67/**
68 * @brief remove from handler
69 *
70 * @note the data that is removed is stored in a trash vector
71 * the ARC_Handler_Clean function must be called clean the trash vector
72 * the trash vector is to make sure a state is not deleted while being run
73 *
74 * @param handler ARC_Handler to remove from
75 * @param data data that is being removed
76 */
77void ARC_Handler_Remove(ARC_Handler *handler, void *data);
78
79/**
80 * @brief remove from handler
81 *
82 * @note the data that is removed is stored in a trash vector
83 * the ARC_Handler_Clean function must be called clean the trash vector
84 * the trash vector is to make sure a state is not deleted while being run
85 *
86 * @param handler ARC_Handler to remove from
87 * @param index index of data that is being removed
88 */
89void ARC_Handler_RemoveIndex(ARC_Handler *handler, uint32_t index);
90
91/**
92 * @brief calls provided function on each element in handler
93 *
94 * @param handler ARC_Handler to iterate through
95 * @param datafn function that will be called on each element of data
96 */
98
99/**
100 * @brief clears all data from handler and puts it in trash vector
101 *
102 * @param handler ARC_Handler to clear data from
103 */
105
106/**
107 * @brief clears trash from handler
108 *
109 * @note cleanfn's main purpose is to help manage memory
110 *
111 * @param handler ARC_Handler to remove trash from
112 */
114
115/**
116 * @brief gets size of vector
117 *
118 * @param handler ARC_handler to get size from
119 */
121
122#ifdef __cplusplus
123}
124#endif
125
126#endif //ARC_STD_HANDLER_H_
#define ARC_Bool
Definition bool.h:10
void ARC_Handler_Add(ARC_Handler *handler, void *data)
adds data to handler
ARC_Bool(* ARC_Handler_CompareDataFn)(void *a, void *b)
data comparison function ptr
Definition handler.h:26
void ARC_Handler_Destroy(ARC_Handler *handler)
destroyes ARC_Handler type
void ARC_Handler_Create(ARC_Handler **handler, ARC_Handler_CompareDataFn *compareFn, ARC_Handler_CleanDataFn cleanFn)
creates ARC_Handler type
void ARC_Handler_Clear(ARC_Handler *handler)
clears all data from handler and puts it in trash vector
void(* ARC_Handler_CleanDataFn)(void *data)
a function that will be used during destruction of trash vector
Definition handler.h:40
void(* ARC_Handler_DataFn)(void *data)
a function that will take iterated data
Definition handler.h:33
uint32_t ARC_Handler_GetSize(ARC_Handler *handler)
gets size of vector
void ARC_Handler_Iterate(ARC_Handler *handler, ARC_Handler_DataFn datafn)
calls provided function on each element in handler
void ARC_Handler_Clean(ARC_Handler *handler)
clears trash from handler
void ARC_Handler_Remove(ARC_Handler *handler, void *data)
remove from handler
struct ARC_Handler ARC_Handler
a handler type
Definition handler.h:14
void ARC_Handler_RemoveIndex(ARC_Handler *handler, uint32_t index)
remove from handler