Skip to content

Instantly share code, notes, and snippets.

@Andersama
Created August 17, 2023 10:49
Show Gist options
  • Save Andersama/582e713637cffaa6d94e54390667f150 to your computer and use it in GitHub Desktop.
Save Andersama/582e713637cffaa6d94e54390667f150 to your computer and use it in GitHub Desktop.
#pragma once
#include <string_view>
struct arguments {
int argc = {};
int contiguous_argc = {};
const char** argv = {};
size_t last_argument_size = {};
arguments(int arg_count, const char* arg_values[]) {
argc = arg_count;
argv = arg_values;
for (int i = 0; i < argc; i++) {
last_argument_size = strlen(argv[i]);
if (argv[i + 1] == 0)
break;
size_t constant_length = (argv[i + 1] - argv[i]) - 1;
if (last_argument_size != constant_length)
break;
contiguous_argc += 1;
}
}
std::string_view argument(size_t i) {
size_t constant_length = (argv[i + 1] - argv[i]) - 1;
return
(i <= contiguous_argc) ? std::string_view{argv[i], (i == contiguous_argc) ? last_argument_size : constant_length} :
(i < argc) ? std::string_view{argv[i]} : std::string_view{};
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment