refactor: pass structs as pointers except for background things
This commit is contained in:
+54
-56
@@ -100,31 +100,30 @@ static unsigned int parse_uint(char *arg, char *value) {
|
||||
return (unsigned int)tmp_value;
|
||||
}
|
||||
|
||||
Parameters args_parse(int argc, char **argv) {
|
||||
Parameters params;
|
||||
void args_parse(Parameters *params, int argc, char **argv) {
|
||||
int i;
|
||||
char *arg;
|
||||
char *value;
|
||||
|
||||
strlcpy(params.project_path, DATADIR "/default", STR_LEN);
|
||||
strlcpy(params.config_file, "forge_project.cfg", STR_LEN);
|
||||
params.hot_reload = false;
|
||||
params.output = true;
|
||||
params.output_screen = 0;
|
||||
params.monitor = false;
|
||||
params.monitor_screen = 0;
|
||||
params.windowed = false;
|
||||
params.base_tempo = 60.0f;
|
||||
params.demo = false;
|
||||
params.auto_random = false;
|
||||
params.video_in.length = 0;
|
||||
params.video_size = 0;
|
||||
params.internal_size = 720;
|
||||
strlcpy(params.state_file, "forge_saved_state.txt", STR_LEN);
|
||||
params.load_state = true;
|
||||
params.save_state = true;
|
||||
params.trace_midi = false;
|
||||
params.trace_fps = false;
|
||||
strncpy(params->project_path, DATADIR "/default", STR_LEN);
|
||||
strncpy(params->config_file, "forge_project.cfg", STR_LEN);
|
||||
params->hot_reload = false;
|
||||
params->output = true;
|
||||
params->output_screen = 0;
|
||||
params->monitor = false;
|
||||
params->monitor_screen = 0;
|
||||
params->windowed = false;
|
||||
params->base_tempo = 60.0f;
|
||||
params->demo = false;
|
||||
params->auto_random = false;
|
||||
params->video_in.length = 0;
|
||||
params->video_size = 0;
|
||||
params->internal_size = 720;
|
||||
strncpy(params->state_file, "forge_saved_state.txt", STR_LEN);
|
||||
params->load_state = true;
|
||||
params->save_state = true;
|
||||
params->trace_midi = false;
|
||||
params->trace_fps = false;
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
arg = argv[i];
|
||||
@@ -135,76 +134,75 @@ Parameters args_parse(int argc, char **argv) {
|
||||
puts(PACKAGE " " VERSION);
|
||||
exit(EXIT_SUCCESS);
|
||||
} else if (is_arg(arg, "-p") || is_arg(arg, "--project")) {
|
||||
strlcpy(params.project_path, value, STR_LEN);
|
||||
strncpy(params->project_path, value, STR_LEN);
|
||||
} else if (is_arg(arg, "-c") || is_arg(arg, "--config")) {
|
||||
strlcpy(params.config_file, value, STR_LEN);
|
||||
strncpy(params->config_file, value, STR_LEN);
|
||||
} else if (is_arg(arg, "-hr") || is_arg(arg, "--hot-reload")) {
|
||||
params.hot_reload = true;
|
||||
params->hot_reload = true;
|
||||
} else if (is_arg(arg, "-s") || is_arg(arg, "--screen")) {
|
||||
params.output_screen = parse_uint(arg, value);
|
||||
params->output_screen = parse_uint(arg, value);
|
||||
} else if (is_arg(arg, "-m") || is_arg(arg, "--monitor")) {
|
||||
params.monitor = true;
|
||||
params.monitor_screen = parse_uint(arg, value);
|
||||
params->monitor = true;
|
||||
params->monitor_screen = parse_uint(arg, value);
|
||||
} else if (is_arg(arg, "-mo") || is_arg(arg, "--monitor-only")) {
|
||||
params.output = false;
|
||||
params.monitor = true;
|
||||
params->output = false;
|
||||
params->monitor = true;
|
||||
} else if (is_arg(arg, "-w") || is_arg(arg, "--windowed")) {
|
||||
params.windowed = true;
|
||||
params->windowed = true;
|
||||
} else if (is_arg(arg, "-t") || is_arg(arg, "--tempo")) {
|
||||
params.base_tempo = (float)parse_uint(arg, value);
|
||||
params->base_tempo = (float)parse_uint(arg, value);
|
||||
} else if (is_arg(arg, "-d") || is_arg(arg, "--demo")) {
|
||||
params.demo = true;
|
||||
params.load_state = false;
|
||||
params.save_state = false;
|
||||
params.auto_random = true;
|
||||
params->demo = true;
|
||||
params->load_state = false;
|
||||
params->save_state = false;
|
||||
params->auto_random = true;
|
||||
} else if (is_arg(arg, "-ar") || is_arg(arg, "--auto-random")) {
|
||||
params.auto_random = true;
|
||||
params->auto_random = true;
|
||||
} else if (is_arg(arg, "-nar") || is_arg(arg, "--no-auto-random")) {
|
||||
params.auto_random = false;
|
||||
params->auto_random = false;
|
||||
} else if (is_arg(arg, "-v") || is_arg(arg, "--video-in")) {
|
||||
if (params.video_in.length == MAX_VIDEO) {
|
||||
if (params->video_in.length == MAX_VIDEO) {
|
||||
log_error("maximum video input reached");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
strlcpy(params.video_in.values[params.video_in.length++], value, STR_LEN);
|
||||
strncpy(params->video_in.values[params->video_in.length++], value,
|
||||
STR_LEN);
|
||||
} else if (is_arg(arg, "-vs") || is_arg(arg, "--video-size")) {
|
||||
params.video_size = parse_uint(arg, value);
|
||||
if (params.video_size == 0) {
|
||||
params->video_size = parse_uint(arg, value);
|
||||
if (params->video_size == 0) {
|
||||
invalid_value(arg, value);
|
||||
}
|
||||
} else if (is_arg(arg, "-is") || is_arg(arg, "--internal-size")) {
|
||||
params.internal_size = parse_uint(arg, value);
|
||||
if (params.internal_size == 0) {
|
||||
params->internal_size = parse_uint(arg, value);
|
||||
if (params->internal_size == 0) {
|
||||
invalid_value(arg, value);
|
||||
}
|
||||
} else if (is_arg(arg, "-sf") || is_arg(arg, "--state-file")) {
|
||||
strlcpy(params.state_file, value, STR_LEN);
|
||||
strncpy(params->state_file, value, STR_LEN);
|
||||
} else if (is_arg(arg, "-ls") || is_arg(arg, "--load-state")) {
|
||||
params.load_state = true;
|
||||
params->load_state = true;
|
||||
} else if (is_arg(arg, "-nls") || is_arg(arg, "--no-load-state")) {
|
||||
params.load_state = false;
|
||||
params->load_state = false;
|
||||
} else if (is_arg(arg, "-ss") || is_arg(arg, "--save-state")) {
|
||||
params.save_state = true;
|
||||
params->save_state = true;
|
||||
} else if (is_arg(arg, "-nss") || is_arg(arg, "--no-save-state")) {
|
||||
params.save_state = false;
|
||||
params->save_state = false;
|
||||
} else if (is_arg(arg, "-tm") || is_arg(arg, "--trace-midi")) {
|
||||
params.trace_midi = true;
|
||||
params->trace_midi = true;
|
||||
} else if (is_arg(arg, "-tf") || is_arg(arg, "--trace-fps")) {
|
||||
params.trace_fps = true;
|
||||
params->trace_fps = true;
|
||||
} else {
|
||||
invalid_arg(arg);
|
||||
}
|
||||
}
|
||||
|
||||
if (params.monitor && params.output &&
|
||||
params.monitor_screen == params.output_screen && !params.windowed) {
|
||||
if (params->monitor && params->output &&
|
||||
params->monitor_screen == params->output_screen && !params->windowed) {
|
||||
log_error("monitor screen cannot be the same as output screen");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (params.video_size == 0) {
|
||||
params.video_size = params.internal_size;
|
||||
if (params->video_size == 0) {
|
||||
params->video_size = params->internal_size;
|
||||
}
|
||||
|
||||
return params;
|
||||
}
|
||||
Reference in New Issue
Block a user