#ifndef RADIXTREE2_H_
#define RADIXTREE2_H_

#include <typedef.h>

#pragma pack(1)

struct radixTreeNode_t {
	struct radixTreeNode_t *left;
	struct radixTreeNode_t *right;
	char *str;
	uint32t numBits;
	uint32t value;
};

#pragma pack()

static inline uint8t getBit(char *str, uint32t bit) {	
	return ((str[bit >> 3] & (1 << (bit & 7))) >> (bit & 7));
}

void radixTreeInit(void *mem);
struct radixTreeNode_t *radixTreeDeinit();
struct radixTreeNode_t *radixTreeGetEndMem();
void radixTreeInsert(char *str, uint32t val);
uint32t radixTreeGetValue(char *str);
char *radixTreeGetStr(char *str);

#endif