odin-blend2d

Odin bindings to Blend2D
Log | Files | Refs | README | LICENSE

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