Refactoring search code using clixon_xvec data structures

This commit is contained in:
Olof hagsand 2020-02-28 18:08:10 +01:00
parent bac2089a04
commit f1ceec689a
10 changed files with 211 additions and 175 deletions

View file

@ -86,13 +86,13 @@ int api_path2xml(char *api_path, yang_stmt *yspec, cxobj *xtop,
cxobj **xpathp, yang_stmt **ypathp, cxobj **xerr);
int xml2api_path_1(cxobj *x, cbuf *cb);
#if defined(__GNUC__) && __GNUC__ >= 3
int clixon_xml_find_api_path(cxobj *xt, yang_stmt *yt, cxobj ***xvec, size_t *xlen, char *format,
...) __attribute__ ((format (printf, 5, 6)));;
int clixon_xml_find_instance_id(cxobj *xt, yang_stmt *yt, cxobj ***xvec, size_t *xlen, char *format,
...) __attribute__ ((format (printf, 5, 6)));;
int clixon_xml_find_api_path(cxobj *xt, yang_stmt *yt, clixon_xvec **xvec, char *format,
...) __attribute__ ((format (printf, 4, 5)));;
int clixon_xml_find_instance_id(cxobj *xt, yang_stmt *yt, clixon_xvec **xvec, char *format,
...) __attribute__ ((format (printf, 4, 5)));;
#else
int clixon_xml_find_api_path(cxobj *xt, yang_stmt *yt, cxobj ***xvec, size_t *xlen, char *format, ...);
int clixon_xml_find_instance_id(cxobj *xt, yang_stmt *yt, cxobj ***xvec, size_t *xlen, char *format, ...);
int clixon_xml_find_api_path(cxobj *xt, yang_stmt *yt, clixon_xvec **xvec, char *format, ...);
int clixon_xml_find_instance_id(cxobj *xt, yang_stmt *yt, clixon_xvec **xvec, char *format, ...);
#endif
#endif /* _CLIXON_PATH_H_ */

View file

@ -50,7 +50,7 @@ int xml_search_indexvar_binary_pos(cxobj *xp, char *indexvar, clixon_xvec *xvec,
#endif
int match_base_child(cxobj *x0, cxobj *x1c, yang_stmt *yc, cxobj **x0cp);
int clixon_xml_find_index(cxobj *xp, yang_stmt *yp, char *namespace, char *name,
cvec *cvk, cxobj ***xvec, size_t *xlen);
int clixon_xml_find_pos(cxobj *xp, yang_stmt *yc, uint32_t pos, cxobj ***xvec, size_t *xlen);
cvec *cvk, clixon_xvec **xvec);
int clixon_xml_find_pos(cxobj *xp, yang_stmt *yc, uint32_t pos, clixon_xvec **xvec);
#endif /* _CLIXON_XML_SORT_H */

View file

@ -51,6 +51,7 @@ clixon_xvec *clixon_xvec_dup(clixon_xvec *xv0);
int clixon_xvec_free(clixon_xvec *xv);
int clixon_xvec_len(clixon_xvec *xv);
cxobj *clixon_xvec_i(clixon_xvec *xv, int i);
int clixon_xvec_vec(clixon_xvec *xv, cxobj ***xvec, size_t *xlen);
int clixon_xvec_append(clixon_xvec *xv, cxobj *x);
int clixon_xvec_prepend(clixon_xvec *xv, cxobj *x);
int clixon_xvec_insert_pos(clixon_xvec *xv, cxobj *x, int i);

View file

@ -38,9 +38,10 @@
#define _CLIXON_XPATH_OPTIMIZE_H
int xpath_list_optimize_stats(int *hits);
int xpath_list_optimize_set(int enable);
int xpath_list_optimize_stats(int *hits);
int xpath_list_optimize_set(int enable);
void xpath_optimize_exit(void);
int xpath_optimize_check();
//int xpath_optimize_check(xpath_tree *xs, cxobj *xv, cxobj ***xvec0, size_t *xlen0);
int xpath_optimize_check();
#endif /* _CLIXON_XPATH_OPTIMIZE_H */