Add optional callback functions to categoricals.
[pspp] / src / math / categoricals.h
index 697d846b48351c729b7cc6013aab8099aebbf3bd..ff33540ca1193148779e5ce7ebd0df4f2cd131f5 100644 (file)
@@ -27,8 +27,17 @@ struct ccase;
 
 union value ;
 
-struct categoricals *categoricals_create (const struct variable **v, size_t n_vars,
-                                         const struct variable *wv, enum mv_class exclude);
+typedef void update_func (void *user_data,
+                         const struct variable *wv, 
+                         const struct variable *catvar,
+                         const struct ccase *c, void *aux);
+
+typedef void *user_data_create_func (void);
+
+struct categoricals *categoricals_create (const struct variable *const *v, size_t n_vars,
+                                         const struct variable *wv, enum mv_class exclude,
+                                         user_data_create_func *udf,
+                                         update_func *update, void *update_aux);
 
 void categoricals_destroy (struct categoricals *);
 
@@ -50,9 +59,6 @@ size_t categoricals_total (const struct categoricals *cat);
 */
 size_t categoricals_get_n_variables (const struct categoricals *cat);
 
-/* Return the index for variable N */
-int categoricals_index (const struct categoricals *cat, size_t n, const union value *val);
-
 void categoricals_done (struct categoricals *cat);
 
 const struct variable * categoricals_get_variable_by_subscript (const struct categoricals *cat, int subscript);
@@ -66,6 +72,8 @@ double categoricals_get_sum_by_subscript (const struct categoricals *cat, int su
 double categoricals_get_binary_by_subscript (const struct categoricals *cat, int subscript,
                                             const struct ccase *c);
 
+void * categoricals_get_user_data_by_subscript (const struct categoricals *cat, int subscript);
+