X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=binaries%2Fsrc%2Fglobplot%2Fbiopython-1.50%2FBio%2Ftrie.h;fp=binaries%2Fsrc%2Fglobplot%2Fbiopython-1.50%2FBio%2Ftrie.h;h=eb85549e39b2923ec1571a1bc66a359cd1dd6e67;hb=119df1cedad3d4760e6fd458713da2488eff79cc;hp=0000000000000000000000000000000000000000;hpb=d3806a66f002b93f6dc03447b6628f943a3ba90c;p=jabaws.git diff --git a/binaries/src/globplot/biopython-1.50/Bio/trie.h b/binaries/src/globplot/biopython-1.50/Bio/trie.h new file mode 100644 index 0000000..eb85549 --- /dev/null +++ b/binaries/src/globplot/biopython-1.50/Bio/trie.h @@ -0,0 +1,129 @@ +typedef struct _Trie *Trie; + + + +/* Trie_new + * -------- + * Create a new trie. Return a Trie structure, which is an abstract + * data structure. The client should not have to know about the + * details of this structure. When finished, each Trie should be + * freed with Trie_del. + */ +Trie Trie_new(void); + + +/* Trie_del + * -------- + * Free a Trie data structure. + */ +void Trie_del(Trie trie); + + +/* Trie_set + * -------- + * Set a string in the Trie to some value. Returns a 0 if the + * function succeeded. + */ +int Trie_set(Trie trie, const unsigned char *key, const void *value); + +/* Trie_get + * -------- + * Lookup whether a key exists in the Trie. Returns the value that + * was previous set in the Trie, or NULL if it doesn't exist. + */ +void *Trie_get(const Trie trie, const unsigned char *key); + + +/* Trie_get_approximate + * -------------------- + * Lookup whether a key exists in the Trie, allowing for mismatches to + * the dictionary. Passes back values using a callback function. + */ +void +Trie_get_approximate(const Trie trie, const unsigned char *key, const int k, + void (*callback)(const unsigned char *key, + const void *value, + const int mismatches, + void *data), + void *data + ); + +/* Trie_len + * -------- + * Return the number of strings in the trie. + */ +int Trie_len(const Trie trie); + + +/* Trie_has_key + * ------------ + * Return whether a key exists in the trie. + */ +int Trie_has_key(const Trie trie, const unsigned char *key); + + +/* Trie_has_prefix + * --------------- + * Return whether a string is a prefix of a key in the trie. + */ +int Trie_has_prefix(const Trie trie, const unsigned char *prefix); + + +/* Trie_with_prefix + * ---------------- + * Iterate over all the keys in the trie that start with a prefix. + */ +void Trie_with_prefix(const Trie trie, const unsigned char *prefix, + void (*callback)(const unsigned char *key, + const void *value, + void *data), + void *data + ); + + +/* Trie_iterate + * ------------ + * Iterate through everything stored in the trie. callback is a + * function that gets called for each thing in the trie. It is called + * in arbitrary order. data is a pointer to some arbitrary data and + * gets passed unchanged to the callback. + */ +void Trie_iterate(const Trie trie, + void (*callback)(const unsigned char *key, + const void *value, + void *data), + void *data + ); + +/* Trie_serialize + * -------------- + * Serialize a tree into a stream of bytes. This function takes a + * callback 'write' that should take a pointer to data and the length + * of the data in bytes. This will be called repeatedly until the + * whole Trie is serialized. When it is done, this function will call + * 'write' with a length of 0. Since the values are handled by the + * client, this function also takes a callback function 'write_value' + * so that the client can serialize their own values. + * + * This function is platform-dependent, so byte streams created on one + * machine may not necessarily port to another. + */ +int Trie_serialize(const Trie trie, + int (*write)(const void *towrite, const int length, + void *data), + int (*write_value)(const void *value, void *data), + void *data); + + + +/* Trie_deserialize + * ---------------- + * Deserialize a tree that was previously serialized with + * Trie_serialize. This function takes a callback 'read' that should + * read 'length' bytes and save it to 'wasread'. 'read_value' should + * read a value and return a pointer to it. 'data' is a pointer that + * will be passed unchanged to 'read' and 'read_value'. + */ +Trie Trie_deserialize(int (*read)(void *wasread, const int length, void *data), + void *(*read_value)(void *data), + void *data);