Copying Bio-python to globplot to satisfy the dependency
[jabaws.git] / binaries / src / globplot / biopython-1.50 / Bio / trie.h
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 (file)
index 0000000..eb85549
--- /dev/null
@@ -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);