dte test coverage


Directory: ./
File: src/search.h
Date: 2024-12-21 16:03:22
Exec Total Coverage
Lines: 10 10 100.0%
Functions: 3 3 100.0%
Branches: 0 0 -%

Line Branch Exec Source
1 #ifndef SEARCH_H
2 #define SEARCH_H
3
4 #include <regex.h>
5 #include <stdbool.h>
6 #include "util/macros.h"
7 #include "view.h"
8
9 typedef enum {
10 CSS_FALSE,
11 CSS_TRUE,
12 CSS_AUTO,
13 } SearchCaseSensitivity;
14
15 typedef struct {
16 regex_t regex;
17 char *pattern;
18 int re_flags; // If zero, regex hasn't been compiled
19 bool reverse;
20 } SearchState;
21
22 bool do_search_next(View *view, SearchState *search, SearchCaseSensitivity cs, bool skip) NONNULL_ARGS WARN_UNUSED_RESULT;
23
24 2 static inline void toggle_search_direction(SearchState *search)
25 {
26 2 search->reverse ^= 1;
27 2 }
28
29 NONNULL_ARGS WARN_UNUSED_RESULT
30 2 static inline bool search_next(View *view, SearchState *search, SearchCaseSensitivity cs)
31 {
32 2 return do_search_next(view, search, cs, false);
33 }
34
35 NONNULL_ARGS WARN_UNUSED_RESULT
36 1 static inline bool search_prev(View *view, SearchState *search, SearchCaseSensitivity cs)
37 {
38 1 toggle_search_direction(search);
39 1 bool r = search_next(view, search, cs);
40 1 toggle_search_direction(search);
41 1 return r;
42 }
43
44 bool search_tag(View *view, const char *pattern) NONNULL_ARGS WARN_UNUSED_RESULT;
45 void search_set_regexp(SearchState *search, const char *pattern) NONNULL_ARGS;
46 void search_free_regexp(SearchState *search) NONNULL_ARGS;
47
48 #endif
49