-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearch_substring.h
More file actions
134 lines (106 loc) · 4.22 KB
/
search_substring.h
File metadata and controls
134 lines (106 loc) · 4.22 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
129
130
131
132
133
134
/*
*********************************************************************************************************
* 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 __SEARCH_SUBSTRING_H
#define __SEARCH_SUBSTRING_H
/*
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*/
#include "algorithm_def.h"
/*
*********************************************************************************************************
* DEFINES
*********************************************************************************************************
*/
/* Configure if enable string matching debug. */
#define SEARCH_SUBSTRING_CFG_DEBUG_EN 1u
/* Configure if enable max match rate. */
#define SEARCH_SUBSTRING_CFG_MAX_MATCH_RATE_EN 1u
/*
*********************************************************************************************************
* DATA TYPES
*********************************************************************************************************
*/
/**
* @brief This struct will contain the necessary information that sort needed.
*/
enum search_substring_type_e {
DEFAULT_SEARCH_SUBSTRING_ALGORITHM,
BRUTE_FORCE_ALGORITHM,
SUNDAY_ALGORITHM,
};
/**
* @brief This type is the substring search function prototype typedef
*/
typedef float (*search_substring_t)(const char *str, size_t len,
const char *substr, size_t sublen);
/**
* @brief This struct will contain the necessary information that sort needed.
*/
struct string_unit_s {
char *string;
size_t length;
};
/**
* @brief This struct will contain the necessary information that sort needed.
*/
struct search_substring_package_s {
struct string_unit_s str;
struct string_unit_s substr;
};
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
*********************************************************************************************************
*/
/**
* @brief This function will search the substring upon the string in the package
* by the specified algorithm.
*
* @param algorithm the enum name of the algorithm
* @param package the package contains the necessary information
*
* @return void
*/
float search_substring_control(enum search_substring_type_e algorithm,
struct search_substring_package_s package);
/**
* @brief This function will search the substring upon the string by the brute force algorithm.
*
* @param str the pointer to the string.
* @param substr the pointer to the substring.
* @param len the length of the substring.
*
* @return the max matching rate.
*/
float search_substring_control_brute_force_algorithm(const char *str, size_t len,
const char *substr, size_t sublen);
/**
* @brief This function will search the substring upon the string by the sunday algorithm.
*
* @param str the pointer to the string.
* @param substr the pointer to the substring.
* @param len the length of the substring.
*
* @return the max matching rate.
*/
float search_substring_control_sunday_algorithm(const char *str, size_t len,
const char *substr, size_t sublen);
/*
*********************************************************************************************************
* EXTERN GLOBAL VARIABLES
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* MODULE END
*********************************************************************************************************
*/
#endif // !__SEARCH_SUBSTRING_H