Formatting tweaks / index terms in Unequal docs.
[sgt/puzzles] / puzzles.h
index 4b977a5..129ddd1 100644 (file)
--- a/puzzles.h
+++ b/puzzles.h
@@ -215,6 +215,7 @@ int midend_process_key(midend *me, int x, int y, int button);
 void midend_force_redraw(midend *me);
 void midend_redraw(midend *me);
 float *midend_colours(midend *me, int *ncolours);
+void midend_freeze_timer(midend *me, float tprop);
 void midend_timer(midend *me, float tplus);
 int midend_num_presets(midend *me);
 void midend_fetch_preset(midend *me, int n,
@@ -278,7 +279,22 @@ void draw_rect_outline(drawing *dr, int x, int y, int w, int h,
 /*
  * dsf.c
  */
+int *snew_dsf(int size);
+
+void print_dsf(int *dsf, int size);
+
+/* Return the canonical element of the equivalence class containing element
+ * val.  If 'inverse' is non-NULL, this function will put into it a flag
+ * indicating whether the canonical element is inverse to val. */
+int edsf_canonify(int *dsf, int val, int *inverse);
 int dsf_canonify(int *dsf, int val);
+
+/* Allow the caller to specify that two elements should be in the same
+ * equivalence class.  If 'inverse' is TRUE, the elements are actually opposite
+ * to one another in some sense.  This function will fail an assertion if the
+ * caller gives it self-contradictory data, ie if two elements are claimed to
+ * be both opposite and non-opposite. */
+void edsf_merge(int *dsf, int v1, int v2, int inverse);
 void dsf_merge(int *dsf, int v1, int v2);
 void dsf_init(int *dsf, int len);
 
@@ -349,7 +365,7 @@ void free_combi(combi_ctx *combi);
  */
 struct game {
     const char *name;
-    const char *winhelp_topic;
+    const char *winhelp_topic, *htmlhelp_topic;
     game_params *(*default_params)(void);
     int (*fetch_preset)(int i, char **name, game_params **params);
     void (*decode_params)(game_params *, char const *string);