Refactor library code.
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
a9df95b303
commit
5d13a15994
|
@ -26,7 +26,6 @@
|
||||||
#include "ctlseqs.h"
|
#include "ctlseqs.h"
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <limits.h>
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -417,18 +416,15 @@ ctlseqs_reader_match(struct ctlseqs_reader *reader, struct ctlseqs_matcher const
|
||||||
struct ctlseqs_matcher *
|
struct ctlseqs_matcher *
|
||||||
ctlseqs_matcher_init()
|
ctlseqs_matcher_init()
|
||||||
{
|
{
|
||||||
struct ctlseqs_trie_node *pool = malloc(sizeof(struct ctlseqs_trie_node) * CTLSEQS_TRIE_NODE_POOL_INIT_SIZE);
|
struct ctlseqs_matcher *mem = malloc(sizeof(struct ctlseqs_matcher) +
|
||||||
struct ctlseqs_matcher *matcher = malloc(sizeof(struct ctlseqs_matcher));
|
sizeof(struct ctlseqs_trie_node) * CTLSEQS_TRIE_NODE_POOL_INIT_SIZE);
|
||||||
if (ctlseqs_unlikely(pool == NULL || matcher == NULL)) {
|
if (ctlseqs_likely(mem != NULL)) {
|
||||||
free(pool);
|
*mem = (struct ctlseqs_matcher) {
|
||||||
free(matcher);
|
.node_pools = { (struct ctlseqs_trie_node *)(mem + 1) },
|
||||||
return NULL;
|
.pool_size = CTLSEQS_TRIE_NODE_POOL_INIT_SIZE
|
||||||
|
};
|
||||||
}
|
}
|
||||||
*matcher = (struct ctlseqs_matcher) {
|
return mem;
|
||||||
.node_pools = { pool },
|
|
||||||
.pool_size = CTLSEQS_TRIE_NODE_POOL_INIT_SIZE
|
|
||||||
};
|
|
||||||
return matcher;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -456,7 +452,7 @@ ctlseqs_matcher_config(struct ctlseqs_matcher *matcher, struct ctlseqs_matcher_o
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (ctlseqs_unlikely(++node_idx >= matcher->pool_size)) {
|
if (ctlseqs_unlikely(++node_idx >= matcher->pool_size)) {
|
||||||
if (ctlseqs_unlikely(++matcher->pool_idx >= CTLSEQS_TRIE_NODE_POOL_MAX_NUM)) {
|
if (ctlseqs_unlikely(matcher->pool_idx >= CTLSEQS_TRIE_NODE_POOL_MAX_NUM - 1)) {
|
||||||
return CTLSEQS_NOMEM;
|
return CTLSEQS_NOMEM;
|
||||||
}
|
}
|
||||||
node_pool = malloc(sizeof(struct ctlseqs_trie_node) * matcher->pool_size * 2);
|
node_pool = malloc(sizeof(struct ctlseqs_trie_node) * matcher->pool_size * 2);
|
||||||
|
@ -464,7 +460,7 @@ ctlseqs_matcher_config(struct ctlseqs_matcher *matcher, struct ctlseqs_matcher_o
|
||||||
return CTLSEQS_NOMEM;
|
return CTLSEQS_NOMEM;
|
||||||
}
|
}
|
||||||
node_idx = 0;
|
node_idx = 0;
|
||||||
matcher->node_pools[matcher->pool_idx] = node_pool;
|
matcher->node_pools[++matcher->pool_idx] = node_pool;
|
||||||
matcher->pool_size *= 2;
|
matcher->pool_size *= 2;
|
||||||
}
|
}
|
||||||
old_node->children[ch] = node = node_pool + node_idx;
|
old_node->children[ch] = node = node_pool + node_idx;
|
||||||
|
@ -513,8 +509,8 @@ ctlseqs_match(struct ctlseqs_matcher const *matcher, char const *str, size_t str
|
||||||
ctlseqs_cold void
|
ctlseqs_cold void
|
||||||
ctlseqs_matcher_free(struct ctlseqs_matcher *matcher)
|
ctlseqs_matcher_free(struct ctlseqs_matcher *matcher)
|
||||||
{
|
{
|
||||||
if (matcher != NULL) {
|
if (ctlseqs_likely(matcher != NULL)) {
|
||||||
for (size_t idx = 0; idx <= matcher->pool_idx; ++idx) {
|
for (size_t idx = 1; idx <= matcher->pool_idx; ++idx) {
|
||||||
free(matcher->node_pools[idx]);
|
free(matcher->node_pools[idx]);
|
||||||
}
|
}
|
||||||
free(matcher);
|
free(matcher);
|
||||||
|
@ -534,13 +530,12 @@ ctlseqs_reader_init()
|
||||||
int
|
int
|
||||||
ctlseqs_reader_config(struct ctlseqs_reader *reader, struct ctlseqs_reader_options const *options)
|
ctlseqs_reader_config(struct ctlseqs_reader *reader, struct ctlseqs_reader_options const *options)
|
||||||
{
|
{
|
||||||
size_t readlen = options->maxlen;
|
size_t const readlen = options->maxlen;
|
||||||
if (reader->readlen != readlen) {
|
if (reader->readlen != readlen) {
|
||||||
char *rbuf;
|
|
||||||
if (readlen < reader->buf_end) {
|
if (readlen < reader->buf_end) {
|
||||||
return CTLSEQS_ERROR;
|
return CTLSEQS_ERROR;
|
||||||
}
|
}
|
||||||
rbuf = realloc(reader->rbuf, readlen);
|
char *rbuf = realloc(reader->rbuf, readlen);
|
||||||
if (rbuf == NULL) {
|
if (rbuf == NULL) {
|
||||||
return CTLSEQS_NOMEM;
|
return CTLSEQS_NOMEM;
|
||||||
}
|
}
|
||||||
|
@ -550,9 +545,9 @@ ctlseqs_reader_config(struct ctlseqs_reader *reader, struct ctlseqs_reader_optio
|
||||||
reader->buf_end = reader->readlen;
|
reader->buf_end = reader->readlen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reader->result = options->result;
|
reader->result = options->result;
|
||||||
reader->pollfd.fd = options->fd;
|
reader->pollfd.fd = options->fd;
|
||||||
reader->no_poll = options->flags & CTLSEQS_READER_NO_POLL;
|
reader->no_poll = options->flags & CTLSEQS_READER_NO_POLL;
|
||||||
reader->save_matched = options->flags & CTLSEQS_READER_SAVE_MATCHED_SEQS;
|
reader->save_matched = options->flags & CTLSEQS_READER_SAVE_MATCHED_SEQS;
|
||||||
return CTLSEQS_OK;
|
return CTLSEQS_OK;
|
||||||
}
|
}
|
||||||
|
@ -599,7 +594,7 @@ ctlseqs_purge(struct ctlseqs_reader *reader, size_t nbytes)
|
||||||
ctlseqs_cold void
|
ctlseqs_cold void
|
||||||
ctlseqs_reader_free(struct ctlseqs_reader *reader)
|
ctlseqs_reader_free(struct ctlseqs_reader *reader)
|
||||||
{
|
{
|
||||||
if (reader != NULL) {
|
if (ctlseqs_likely(reader != NULL)) {
|
||||||
free(reader->rbuf);
|
free(reader->rbuf);
|
||||||
free(reader);
|
free(reader);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue