cmdline.h (1500B)
1 // This file is part of AsmJit project <https://asmjit.com> 2 // 3 // See <asmjit/core.h> or LICENSE.md for license and copyright information 4 // SPDX-License-Identifier: Zlib 5 6 #ifndef CMDLINE_H_INCLUDED 7 #define CMDLINE_H_INCLUDED 8 9 #include <stdint.h> 10 #include <stdlib.h> 11 #include <string.h> 12 13 class CmdLine { 14 public: 15 int _argc; 16 const char* const* _argv; 17 18 CmdLine(int argc, const char* const* argv) 19 : _argc(argc), 20 _argv(argv) {} 21 22 bool has_arg(const char* key) const { 23 for (int i = 1; i < _argc; i++) { 24 if (strcmp(key, _argv[i]) == 0) { 25 return true; 26 } 27 } 28 return false; 29 } 30 31 const char* value_of(const char* key, const char* default_value) const { 32 size_t keySize = strlen(key); 33 for (int i = 1; i < _argc; i++) { 34 const char* val = _argv[i]; 35 if (strlen(val) >= keySize + 1 && val[keySize] == '=' && memcmp(val, key, keySize) == 0) 36 return val + keySize + 1; 37 } 38 39 return default_value; 40 } 41 42 int value_as_int(const char* key, int default_value) const { 43 const char* val = value_of(key, nullptr); 44 if (val == nullptr || val[0] == '\0') 45 return default_value; 46 47 return atoi(val); 48 } 49 50 unsigned value_as_uint(const char* key, unsigned default_value) const { 51 const char* val = value_of(key, nullptr); 52 if (val == nullptr || val[0] == '\0') 53 return default_value; 54 55 int v = atoi(val); 56 if (v < 0) 57 return default_value; 58 else 59 return unsigned(v); 60 } 61 }; 62 63 #endif // CMDLINE_H_INCLUDED