41 lines
1.1 KiB
Plaintext
41 lines
1.1 KiB
Plaintext
// Generated by CMake from snippet_dispatcher.cpp.in - DO NOT EDIT
|
|
#include <cstdio>
|
|
#include <cstring>
|
|
|
|
@FORWARD_DECLARATIONS@
|
|
struct SnippetEntry {
|
|
const char* name;
|
|
int (*func)(int argc, char** argv);
|
|
};
|
|
|
|
static const SnippetEntry snippets[] = {
|
|
@DISPATCH_ENTRIES@};
|
|
|
|
static const char* snippet_names[] = {
|
|
@SNIPPET_LIST_LITERAL@};
|
|
|
|
int main(int argc, char* argv[]) {
|
|
if (argc < 2) {
|
|
fprintf(stderr, "Usage: %s <snippet_name> [args...]\n\n", argv[0]);
|
|
fprintf(stderr, "Available snippets:\n");
|
|
for (const auto& name : snippet_names) {
|
|
fprintf(stderr, " %s\n", name);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
for (const auto& entry : snippets) {
|
|
if (strcmp(argv[1], entry.name) == 0) {
|
|
// Shift argv so the snippet sees its name as argv[0].
|
|
return entry.func(argc - 1, argv + 1);
|
|
}
|
|
}
|
|
|
|
fprintf(stderr, "Unknown snippet: '%s'\n\n", argv[1]);
|
|
fprintf(stderr, "Available snippets:\n");
|
|
for (const auto& name : snippet_names) {
|
|
fprintf(stderr, " %s\n", name);
|
|
}
|
|
return 1;
|
|
}
|