-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathalgorithm_def.h
More file actions
128 lines (100 loc) · 3.74 KB
/
Copy pathalgorithm_def.h
File metadata and controls
128 lines (100 loc) · 3.74 KB
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*
*********************************************************************************************************
* MODULE
*
* Note(s) : (1) This definition header file is protected from multiple pre-processor inclusion
* through use of the definition module present pre-processor macro definition.
*********************************************************************************************************
*/
#ifndef __ALGORITHM_DEFINITION_H
#define __ALGORITHM_DEFINITION_H
/*
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*/
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <stdbool.h>
#include <assert.h>
#include <malloc.h>
/*
*********************************************************************************************************
* DEFINES
*********************************************************************************************************
*/
#pragma warning( disable : 4996)
#pragma warning( disable : 26812)
/*
*********************************************************************************************************
* DATA TYPES
*********************************************************************************************************
*/
/**
* @brief This type is the sort algorithm category enum.
*/
enum sort_algorithm_category {
STABLE_SORT = 0x00,
UNSTABLE_SORT = 0x01,
};
/**
* @brief This type is the sort algorithm type enum.
*/
enum sort_algorithm_type {
BUBBLE_SORT = STABLE_SORT,
QUICK_SORT = UNSTABLE_SORT,
};
/**
* @brief This type is the compare function prototype typedef.
*/
typedef bool (*compare_t)(void *lhs, void *rhs, size_t len);
/**
* @brief This type is the swap function prototype typedef.
*/
typedef errno_t(*swap_t)(void *lhs, void *rhs, size_t len);
/**
* @brief This type is the sort package object operator structure.
*/
struct sort_package_object_operator_s {
void *(*get_element_ptr)(void *object, size_t loc);
void *(*get_address_ptr)(void *object, size_t loc);
};
/**
* @brief This type is the sort package structure.
*/
struct sort_package_s {
size_t mem_len;
size_t mem_len_key;
void *object_ptr;
swap_t swap_ptr;
compare_t compare_ptr;
struct sort_package_object_operator_s object_operator;
};
/**
* @brief This type is the sort function prototype typedef.
*/
typedef errno_t(*sort_t)(struct sort_package_s package,
size_t left,
size_t right);
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* EXTERN GLOBAL VARIABLES
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* FUNCTIONS
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* MODULE END
*********************************************************************************************************
*/
#endif // !__ALGORITHM_DEFINITION_H