src/sn_{comparator,stage}.h: Add initial Doxygen stuff.
[sort-networks.git] / src / sn_stage.h
index 4a57f5e..192887a 100644 (file)
@@ -1,6 +1,10 @@
 /**
- * collectd - src/sn_stage.h
- * Copyright (C) 2008  Florian octo Forster
+ * \file sn_stage.h
+ * \brief The sn_stage_t class and associated methods.
+ *
+ * \verbatim
+ * libsortnetwork - src/sn_stage.h
+ * Copyright (C) 2008-2010  Florian octo Forster
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
@@ -16,7 +20,8 @@
  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  *
  * Authors:
- *   Florian octo Forster <octo at verplant.org>
+ *   Florian octo Forster <ff at octo.it>
+ * \endverbatim
  **/
 
 #ifndef SN_STAGE_H
@@ -45,15 +50,26 @@ enum sn_network_cut_dir_e
 #define SN_STAGE_COMP_GET(s,n) ((s)->comparators + (n))
 
 sn_stage_t *sn_stage_create (int depth);
+
+/**
+ * Clones an existing stage.
+ *
+ * \param s Stage to clone.
+ * \return Copied stage or NULL on error. The returned stage must be freed
+ *   using sn_stage_destroy().
+ */
 sn_stage_t *sn_stage_clone (const sn_stage_t *s);
 void sn_stage_destroy (sn_stage_t *s);
 
+int sn_stage_sort (sn_stage_t *s, int *values);
+
 int sn_stage_comparator_add (sn_stage_t *s, const sn_comparator_t *c);
 int sn_stage_comparator_remove (sn_stage_t *s, int c_num);
 int sn_stage_comparator_check_conflict (sn_stage_t *s, const sn_comparator_t *c);
 
 int sn_stage_show (sn_stage_t *s);
 int sn_stage_invert (sn_stage_t *s);
+int sn_stage_shift (sn_stage_t *s, int sw, int inputs_num);
 int sn_stage_swap (sn_stage_t *s, int con0, int con1);
 int sn_stage_cut_at (sn_stage_t *s, int input, enum sn_network_cut_dir_e dir);
 int sn_stage_remove_input (sn_stage_t *s, int input);
@@ -61,6 +77,10 @@ int sn_stage_remove_input (sn_stage_t *s, int input);
 sn_stage_t *sn_stage_read (FILE *fh);
 int sn_stage_write (sn_stage_t *s, FILE *fh);
 
+int sn_stage_serialize (sn_stage_t *s,
+    char **ret_buffer, size_t *ret_buffer_size);
+sn_stage_t *sn_stage_unserialize (char **buffer, size_t *buffer_size);
+
 #endif /* SN_STAGE_H */
 
 /* vim: set shiftwidth=2 softtabstop=2 : */