in memory based on the user-defined workspace. Enable centralizing
the calculation through a new function.
+2007-06-06 Ben Pfaff <blp@gnu.org>
+
+ In a couple of places we calculate the maximum number of cases to
+ keep in memory based on the user-defined workspace. Enable
+ centralizing the calculation through a new function.
+
+ * settings.c (get_workspace_cases): New function.
+
2007-06-06 Ben Pfaff <blp@gnu.org>
The casenumber type is defined in transformations.h, but case.h is
return workspace;
}
+/* Approximate maximum number of cases to allocate in-core, given
+ that each case contains VALUE_CNT values. */
+size_t
+get_workspace_cases (size_t value_cnt)
+{
+ size_t case_size = sizeof (union value) * value_cnt + 4 * sizeof (void *);
+ size_t case_cnt = MAX (get_workspace () / case_size, 4);
+ return case_cnt;
+}
+
/* Set approximate maximum amount of memory to use for cases, in
bytes. */
void set_endcmd (char);
size_t get_workspace (void);
+size_t get_workspace_cases (size_t value_cnt);
void set_workspace (size_t);
const struct fmt_spec *get_format (void);