diff options
author | David Robillard <d@drobilla.net> | 2011-09-20 19:43:18 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-09-20 19:43:18 +0000 |
commit | 06b045b28394e7d0219f626fd1a5b21236a8e303 (patch) | |
tree | 722135eac7c3f462bfe82d1e24448d05afea5baf /src | |
parent | f15595dd3245f911edc36932de298fc51f2ea02f (diff) | |
download | zix-06b045b28394e7d0219f626fd1a5b21236a8e303.tar.gz zix-06b045b28394e7d0219f626fd1a5b21236a8e303.tar.bz2 zix-06b045b28394e7d0219f626fd1a5b21236a8e303.zip |
Const correctness.
git-svn-id: http://svn.drobilla.net/zix/trunk@36 df6676b4-ccc9-40e5-b5d6-7c4628a128e3
Diffstat (limited to 'src')
-rw-r--r-- | src/patree.c | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/src/patree.c b/src/patree.c index 1903cd1..1e843e1 100644 --- a/src/patree.c +++ b/src/patree.c @@ -30,9 +30,9 @@ #ifdef __SSE4_2__ #include <smmintrin.h> -#warning Using SSE 4.2 +//#warning Using SSE 4.2 #else -#warning SSE 4.2 disabled +//#warning SSE 4.2 disabled #endif typedef uint_fast8_t n_edges_t; @@ -45,9 +45,9 @@ typedef struct { } ZixChildRef; typedef struct _ZixPatreeNode { - char* label_first; /* Start of incoming label */ - char* label_last; /* End of incoming label */ - char* str; /* String stored at this node */ + const char* label_first; /* Start of incoming label */ + const char* label_last; /* End of incoming label */ + const char* str; /* String stored at this node */ n_edges_t num_children; /* Number of outgoing edges */ ZixChildRef children[]; /* Children of this node */ } ZixPatreeNode; @@ -144,9 +144,9 @@ patree_find_edge(const ZixPatreeNode* n, const char c, n_edges_t* const index) static void patree_add_edge(ZixPatreeNode** n_ptr, - char* str, - char* first, - char* last) + const char* str, + const char* first, + const char* last) { ZixPatreeNode* n = *n_ptr; @@ -212,21 +212,22 @@ patree_split_edge(ZixPatreeNode** child_ptr, } static ZixStatus -patree_insert_internal(ZixPatreeNode** n_ptr, char* str, char* first, char* last) +patree_insert_internal(ZixPatreeNode** n_ptr, + const char* str, const char* first, const char* last) { n_edges_t child_i; assert(first <= last); ZixPatreeNode* n = *n_ptr; if (patree_find_edge(n, *first, &child_i)) { - ZixPatreeNode** child_ptr = &n->children[child_i].child; - ZixPatreeNode* child = *child_ptr; - char* const label_first = child->label_first; - char* const label_last = child->label_last; - size_t split_i = 0; - const size_t label_len = label_last - label_first + 1; - const size_t s_len = last - first + 1; - const size_t max_len = (s_len < label_len) ? s_len : label_len; + ZixPatreeNode** child_ptr = &n->children[child_i].child; + ZixPatreeNode* child = *child_ptr; + const char* const label_first = child->label_first; + const char* const label_last = child->label_last; + size_t split_i = 0; + const size_t label_len = label_last - label_first + 1; + const size_t s_len = last - first + 1; + const size_t max_len = (s_len < label_len) ? s_len : label_len; while (split_i < max_len && first[split_i] == label_first[split_i]) { ++split_i; @@ -269,7 +270,7 @@ zix_patree_insert(ZixPatree* t, const char* str) return patree_insert_internal(&t->root, (char*)str, (char*)str, (char*)str + len - 1); } -int +static inline int change_index_c(const char* a, const char* b, size_t len) { for (size_t i = 0; i < len; ++i) { @@ -281,7 +282,7 @@ change_index_c(const char* a, const char* b, size_t len) } #ifdef __SSE4_2__ -int +static inline int change_index_sse(const char* a, const char* b, const size_t len) { int ret; @@ -306,7 +307,7 @@ change_index_sse(const char* a, const char* b, const size_t len) ZIX_API ZixStatus -zix_patree_find(const ZixPatree* t, const char* const str, char** match) +zix_patree_find(const ZixPatree* t, const char* const str, const char** match) { ZixPatreeNode* n = t->root; n_edges_t child_i; @@ -316,7 +317,7 @@ zix_patree_find(const ZixPatree* t, const char* const str, char** match) while (patree_find_edge(n, p[0], &child_i)) { assert(child_i <= n->num_children); ZixPatreeNode* const child = n->children[child_i].child; - char* const child_str = child->str; + const char* const child_str = child->str; /* Prefix compare search string and label */ const char* l = child->label_first; |