// This file is part of AsmJit project // // See asmjit.h or LICENSE.md for license and copyright information // SPDX-License-Identifier: Zlib #ifndef CMDLINE_H_INCLUDED #define CMDLINE_H_INCLUDED #include #include #include 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