X-Git-Url: http://git.nguyen.vg/gitweb/?p=SXSI%2Flibbp.git;a=blobdiff_plain;f=bp.h;fp=bp.h;h=b4da26ffbc2c3b25a7c477652ad222aba7f129aa;hp=0000000000000000000000000000000000000000;hb=b94f8d72735df125b191bf5a49cba0c037278787;hpb=657b1bc3dc283b45b9cceab5f1825a06496146cd diff --git a/bp.h b/bp.h new file mode 100644 index 0000000..b4da26f --- /dev/null +++ b/bp.h @@ -0,0 +1,178 @@ +#ifndef BP_H_ +#define BP_H_ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include +#include +#include "darray.h" + +#define OP 1 +#define CP 0 + +#define OPT_MIN 0 +#define OPT_MAX 1 +#define OPT_LEFT 0 +#define OPT_RIGHT 2 + +#define OPT_LEAF (1<<0) +#define OPT_INORDER (1<<1) +#define OPT_DEGREE (1<<2) +#define OPT_FAST_PREORDER_SELECT (1<<3) +#define OPT_FAST_LEAF_SELECT (1<<4) +#define OPT_FAST_INORDER_SELECT (1<<5) +#define OPT_FAST_POSTORDER_SELECT (1<<6) +#define OPT_DFUDS_LEAF (1<<7) +#define OPT_FAST_DFUDS_LEAF_SELECT (1<<8) + +//#define logSB 9 +#define logSB 7 +//#define logSB 2 +#define SB (1<0) { + x>>=1; + l++; + } + return l; +} + +pb getpat_preorder(pb *b); +pb getpat_leaf(pb *b); +pb getpat_inorder(pb *b); +pb getpat_postorder(pb *b); + + +int fwd_excess(bp *b,int s, int rel); +int bwd_excess(bp *b,int s, int rel); + +extern int *matchtbl,*parenttbl; +void make_naivetbl(pb *B,int n); + +extern int popCount[1<