_r3_tree_insert_pathl to r3_tree_insert_pathl_

This commit is contained in:
c9s 2014-05-20 23:30:36 +08:00
parent 02b4008a69
commit 750a9beaa4
5 changed files with 19 additions and 19 deletions

View file

@ -2,15 +2,15 @@
API changes: API changes:
1. Removed the `route` argument from `r3_tree_insert_pathl`: 1. Removed the `route` argument from `r3_tree_insert_pathl_`:
node * r3_tree_insert_pathl(node *tree, char *path, int path_len, void * data); node * r3_tree_insert_pathl_(node *tree, char *path, int path_len, void * data);
This reduce the interface complexity, e.g., This reduce the interface complexity, e.g.,
r3_tree_insert_path(n, "/user2/{id:\\d+}", &var2); r3_tree_insert_path(n, "/user2/{id:\\d+}", &var2);
2. The original `r3_tree_insert_pathl` has been moved to `_r3_tree_insert_pathl` as a private API. 2. The original `r3_tree_insert_pathl_` has been moved to `_r3_tree_insert_pathl_` as a private API.
3. Moved `r3_tree_matchl` to `r3_tree_matchl` since it require the length of the path string. 3. Moved `r3_tree_matchl` to `r3_tree_matchl` since it require the length of the path string.

View file

@ -44,12 +44,12 @@ int route_data = 3;
// insert the route path into the router tree // insert the route path into the router tree
r3_tree_insert_path(n, "/bar", &route_data); // ignore the length of path r3_tree_insert_path(n, "/bar", &route_data); // ignore the length of path
r3_tree_insert_pathl(n, "/zoo", strlen("/zoo"), &route_data ); r3_tree_insert_pathl_(n, "/zoo", strlen("/zoo"), &route_data );
r3_tree_insert_pathl(n, "/foo/bar", strlen("/foo/bar"), &route_data ); r3_tree_insert_pathl_(n, "/foo/bar", strlen("/foo/bar"), &route_data );
r3_tree_insert_pathl(n ,"/post/{id}", strlen("/post/{id}") , &route_data ); r3_tree_insert_pathl_(n ,"/post/{id}", strlen("/post/{id}") , &route_data );
r3_tree_insert_pathl(n, "/user/{id:\\d+}", strlen("/user/{id:\\d+}"), &route_data ); r3_tree_insert_pathl_(n, "/user/{id:\\d+}", strlen("/user/{id:\\d+}"), &route_data );
// let's compile the tree! // let's compile the tree!
r3_tree_compile(n); r3_tree_compile(n);

View file

@ -106,17 +106,17 @@ edge * r3_node_find_edge(node * n, char * pat);
void r3_node_append_edge(node *n, edge *child); void r3_node_append_edge(node *n, edge *child);
node * r3_tree_insert_pathl(node *tree, char *path, int path_len, void * data); node * r3_tree_insert_pathl_(node *tree, char *path, int path_len, void * data);
#define r3_tree_insert_path(n,p,d) _r3_tree_insert_pathl(n,p,strlen(p), NULL, d) #define r3_tree_insert_path(n,p,d) _r3_tree_insert_pathl_(n,p,strlen(p), NULL, d)
// node * r3_tree_insert_route(node *tree, route * route, void * data); // node * r3_tree_insert_route(node *tree, route * route, void * data);
#define r3_tree_insert_route(n,r,d) _r3_tree_insert_pathl(n, r->path, r->path_len, r, d) #define r3_tree_insert_route(n,r,d) _r3_tree_insert_pathl_(n, r->path, r->path_len, r, d)
/** /**
* The private API to insert a path * The private API to insert a path
*/ */
node * _r3_tree_insert_pathl(node *tree, char *path, int path_len, route * route, void * data); node * _r3_tree_insert_pathl_(node *tree, char *path, int path_len, route * route, void * data);
void r3_tree_dump(node * n, int level); void r3_tree_dump(node * n, int level);

View file

@ -403,16 +403,16 @@ route * r3_route_createl(char * path, int path_len) {
return info; return info;
} }
node * r3_tree_insert_pathl(node *tree, char *path, int path_len, void * data) node * r3_tree_insert_pathl_(node *tree, char *path, int path_len, void * data)
{ {
return _r3_tree_insert_pathl(tree, path, path_len, NULL , data); return _r3_tree_insert_pathl_(tree, path, path_len, NULL , data);
} }
/** /**
* Return the last inserted node. * Return the last inserted node.
*/ */
node * _r3_tree_insert_pathl(node *tree, char *path, int path_len, route * route, void * data) node * _r3_tree_insert_pathl_(node *tree, char *path, int path_len, route * route, void * data)
{ {
node * n = tree; node * n = tree;
edge * e = NULL; edge * e = NULL;
@ -461,7 +461,7 @@ node * _r3_tree_insert_pathl(node *tree, char *path, int path_len, route * route
r3_node_add_child(n, strndup(path, (int)(p - path)), child); r3_node_add_child(n, strndup(path, (int)(p - path)), child);
// and insert the rest part to the child // and insert the rest part to the child
return _r3_tree_insert_pathl(child, p, path_len - (int)(p - path), route, data); return _r3_tree_insert_pathl_(child, p, path_len - (int)(p - path), route, data);
} else { } else {
node * child = r3_tree_create(3); node * child = r3_tree_create(3);
r3_node_add_child(n, strndup(path, path_len) , child); r3_node_add_child(n, strndup(path, path_len) , child);
@ -482,7 +482,7 @@ node * _r3_tree_insert_pathl(node *tree, char *path, int path_len, route * route
// there are something more we can insert // there are something more we can insert
if ( subpath_len > 0 ) { if ( subpath_len > 0 ) {
return _r3_tree_insert_pathl(e->child, subpath, subpath_len, route, data); return _r3_tree_insert_pathl_(e->child, subpath, subpath_len, route, data);
} else { } else {
// there are no more path to insert // there are no more path to insert
@ -510,7 +510,7 @@ node * _r3_tree_insert_pathl(node *tree, char *path, int path_len, route * route
char * s2 = path + prefix_len; char * s2 = path + prefix_len;
int s2_len = path_len - prefix_len; int s2_len = path_len - prefix_len;
r3_edge_branch(e, prefix_len); r3_edge_branch(e, prefix_len);
return _r3_tree_insert_pathl(e->child, s2 , s2_len, route , data); return _r3_tree_insert_pathl_(e->child, s2 , s2_len, route , data);
} else { } else {
printf("unexpected route."); printf("unexpected route.");
return NULL; return NULL;

View file

@ -155,7 +155,7 @@ END_TEST
START_TEST (test_r3_tree_insert_pathl) START_TEST (test_r3_tree_insert_pathl_)
{ {
node * n = r3_tree_create(10); node * n = r3_tree_create(10);
@ -713,7 +713,7 @@ Suite* r3_suite (void) {
tcase_add_test(tcase, test_str_array); tcase_add_test(tcase, test_str_array);
tcase_add_test(tcase, test_ltrim_slash); tcase_add_test(tcase, test_ltrim_slash);
tcase_add_test(tcase, test_r3_node_find_edge); tcase_add_test(tcase, test_r3_node_find_edge);
tcase_add_test(tcase, test_r3_tree_insert_pathl); tcase_add_test(tcase, test_r3_tree_insert_pathl_);
tcase_add_test(tcase, test_compile); tcase_add_test(tcase, test_compile);
tcase_add_test(tcase, test_route_cmp); tcase_add_test(tcase, test_route_cmp);
tcase_add_test(tcase, test_insert_route); tcase_add_test(tcase, test_insert_route);