diff options
Diffstat (limited to '3rdparty/asmjit/test/cmdline.h')
-rw-r--r-- | 3rdparty/asmjit/test/cmdline.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/3rdparty/asmjit/test/cmdline.h b/3rdparty/asmjit/test/cmdline.h new file mode 100644 index 00000000000..4da0d2ed559 --- /dev/null +++ b/3rdparty/asmjit/test/cmdline.h @@ -0,0 +1,61 @@ +// This file is part of AsmJit project <https://asmjit.com> +// +// See asmjit.h or LICENSE.md for license and copyright information +// SPDX-License-Identifier: Zlib + +#ifndef CMDLINE_H_INCLUDED +#define CMDLINE_H_INCLUDED + +#include <stdint.h> +#include <stdlib.h> +#include <string.h> + +class CmdLine { +public: + int _argc; + const char* const* _argv; + + CmdLine(int argc, const char* const* argv) + : _argc(argc), + _argv(argv) {} + + bool hasArg(const char* key) const { + for (int i = 1; i < _argc; i++) + if (strcmp(key, _argv[i]) == 0) + return true; + return false; + } + + const char* valueOf(const char* key, const char* defaultValue) const { + size_t keySize = strlen(key); + for (int i = 1; i < _argc; i++) { + const char* val = _argv[i]; + if (strlen(val) >= keySize + 1 && val[keySize] == '=' && memcmp(val, key, keySize) == 0) + return val + keySize + 1; + } + + return defaultValue; + } + + int valueAsInt(const char* key, int defaultValue) const { + const char* val = valueOf(key, nullptr); + if (val == nullptr || val[0] == '\0') + return defaultValue; + + return atoi(val); + } + + unsigned valueAsUInt(const char* key, unsigned defaultValue) const { + const char* val = valueOf(key, nullptr); + if (val == nullptr || val[0] == '\0') + return defaultValue; + + int v = atoi(val); + if (v < 0) + return defaultValue; + else + return unsigned(v); + } +}; + +#endif // CMDLINE_H_INCLUDED |