aboutsummaryrefslogtreecommitdiff
path: root/match.h
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2021-09-27 20:36:10 -0700
committerBruce Hill <bruce@bruce-hill.com>2021-09-27 20:36:10 -0700
commit911827fac3a53734c9a4a99c1b8ec2a689bc59d8 (patch)
tree5ac9e27f065b66ad613fbcac21c95f8b64706310 /match.h
parenta96284615b27226f4d34de8dfa7235f0c14ac1d4 (diff)
Removed definitions as a separate type and instead encode that value in
the patterns themselves. This simplifies memory management a lot and speeds up performance.
Diffstat (limited to 'match.h')
-rw-r--r--match.h8
1 files changed, 2 insertions, 6 deletions
diff --git a/match.h b/match.h
index 0a22e36..487b833 100644
--- a/match.h
+++ b/match.h
@@ -8,7 +8,6 @@
#include <stdio.h>
#include "pattern.h"
-#include "definitions.h"
struct match_s; // forward declared to resolve circular struct defs
@@ -25,7 +24,6 @@ typedef struct match_s {
pat_t *pat;
// Intrusive linked list nodes for garbage collection and cache buckets:
match_dll_t gc, cache;
- size_t defs_id;
int refcount;
struct match_s **children;
struct match_s *_children[3];
@@ -37,14 +35,12 @@ typedef struct {
void (*on_nl)(FILE *out);
} print_options_t;
-__attribute__((returns_nonnull))
-match_t *new_match(def_t *defs, pat_t *pat, const char *start, const char *end, match_t *children[]);
__attribute__((nonnull))
void recycle_if_unused(match_t **at_m);
size_t free_all_matches(void);
size_t recycle_all_matches(void);
-bool next_match(match_t **m, def_t *defs, const char *start, const char *end, pat_t *pat, pat_t *skip, bool ignorecase);
-#define stop_matching(m) next_match(m, NULL, NULL, NULL, NULL, NULL, 0)
+bool next_match(match_t **m, const char *start, const char *end, pat_t *pat, pat_t *skip, bool ignorecase);
+#define stop_matching(m) next_match(m, NULL, NULL, NULL, NULL, 0)
__attribute__((nonnull))
match_t *get_numbered_capture(match_t *m, int n);
__attribute__((nonnull, pure))