size_t admiration_delay; /* ...in seconds. */
/* The following values correspond directly to independent CLI options. */
- Bool rule_random;
- uint8_t rule_requested; /* Note: Repurposing Rule 0 as null value. */
+ Bool random_rule;
+ int requested_rule;
int cell_size; /* If cell_size=N then draw NxN pixels per cell. */
int delay_microsec; /* ...between calls to WolframAutomata_draw(). */
int num_generations; /* Reset simulation after this many generations. */
}
/* Time to figure out which rule to use for this simulation. */
- /* We ignore any weirdness resulting from the following cast since every */
+ /* We ignore any weirdness resulting from the following casts since every */
/* bit pattern is also a valid rule; if the user provides weird input, */
/* then we'll return weird (but well-defined!) output. */
- state->rule_requested = (uint8_t) get_integer_resource(state->dpy, "rule-requested", "Integer");
- state->rule_random = get_boolean_resource(state->dpy, "rule-random", "Boolean");
+ state->requested_rule = get_integer_resource(state->dpy, "rule", "Integer");
+ state->random_rule = get_boolean_resource(state->dpy, "random-rule", "Boolean");
/* Through the following set of branches, we enforce CLI flag precedence. */
- if (state->rule_random) {
+ if (state->random_rule) {
/* If this flag is set, the user wants truly random rules rather than */
/* random rules from a curated list. */
state->rule_number = (uint8_t) random();
- } else if (state->rule_requested != 0) {
- /* Rule 0 is terribly uninteresting, so we are reusing it as a 'null' */
- /* value and hoping nobody notices. Finding a non-zero value means */
- /* the user requested a specific rule. Use it. */
- state->rule_number = state->rule_requested;
+ } else if (state->requested_rule != -1) {
+ /* The user requested a specific rule. Use it. */
+ state->rule_number = (uint8_t) state->requested_rule;
} else {
/* No command-line options were specified, so select rules randomly */
/* from a curated list. */
"*random-delay: False",
"*random-length: False",
"*random-rule: False",
- "*rule-requested: 0",
+ "*rule: -1",
0
};
{ "-random-cell-size", ".random-cell-size", XrmoptionNoArg, "True" },
{ "-random-delay", ".random-delay", XrmoptionNoArg, "True" },
{ "-random-length", ".random-length", XrmoptionNoArg, "True" },
- { "-random-rule", ".rule-random", XrmoptionNoArg, "True" },
- { "-rule", ".rule-requested", XrmoptionSepArg, 0 },
+ { "-random-rule", ".random-rule", XrmoptionNoArg, "True" },
+ { "-rule", ".rule", XrmoptionSepArg, 0 },
{ 0, 0, 0, 0 }
};