/* This value musn't be misinterpreted as shared string. When string
* handling is changed, change this value appropriately.
* This value should also not be mixed up with the null pointer, which is
* used for a string that is not in the shared string table
* (and thus won't be found) .
*/
#define ZERO_AS_STR_CASE_LABEL ((char *)&findstring)
#define CASE_BLOCKING_FACTOR 256 /* must be >= 3 */
struct case_list_entry {
union svalue key;
p_int addr, line;
struct case_list_entry *next;
};
struct s_case_state {
struct case_list_entry *free_block, *next_free, *list0, *list1, *zero;
struct s_case_state *previous;
p_int default_addr;
char some_numeric_labels, no_string_labels;
};
struct case_list_entry *new_case_entry(void);
int store_case_labels(
p_int total_length,
p_int default_addr,
int numeric,
struct case_list_entry *zero,
char *(*get_space)(p_int),
void (*move_instructions)(int, p_int),
void (*cerror)(char *),
int (*cerrorl)(char *, char*, int, int)
);