summaryrefslogtreecommitdiff
path: root/python/openvino/runtime/streaming/image_streaming_app/command_line.cpp
blob: 794310b531d000b81b502b93b5b15b8f4649f452 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Copyright 2021-2023 Intel Corporation.
//
// This software and the related documents are Intel copyrighted materials,
// and your use of them is governed by the express license under which they
// were provided to you ("License"). Unless the License provides otherwise,
// you may not use, modify, copy, publish, distribute, disclose or transmit
// this software or the related documents without Intel's prior written
// permission.
//
// This software and the related documents are provided as is, with no express
// or implied warranties, other than those that are expressly stated in the
// License.

#include "command_line.h"
#include <algorithm>

static void TrimString(std::string& trimString) {
  trimString.erase(0, trimString.find_first_not_of(" \n\r\t"));
  trimString.erase(trimString.find_last_not_of(" \n\r\t") + 1);
}

static void MakeLower(std::string& stringValue) {
  std::transform(stringValue.begin(), stringValue.end(), stringValue.begin(), ::tolower);
}

// Program -option=value
CommandLine::CommandLine(int argumentCount, char* argumentValues[]) {
  if (argumentCount > 0) _executableName = argumentValues[0];

  for (int i = 1; i < argumentCount; i++) {
    std::string inputString(argumentValues[i]);
    std::string nextChar = inputString.substr(0, 1);
    if ((nextChar == "-") or (nextChar == "/")) {
      inputString = inputString.substr(1);
      size_t equals = inputString.find("=");
      std::string option;
      std::string value;

      if (equals == std::string::npos) {
        option = inputString;
      } else {
        option = inputString.substr(0, equals);
        value = inputString.substr(equals + 1);
      }

      TrimString(option);
      TrimString(value);
      MakeLower(option);
      _optionMap[option] = value;
    }
  }
}

std::string CommandLine::GetOptionValue(const char* optionName) {
  auto i = _optionMap.find(optionName);
  if (i != _optionMap.end())
    return i->second;
  else
    return "";
}

bool CommandLine::HaveOption(const char* optionName) { return (_optionMap.find(optionName) != _optionMap.end()); }

bool CommandLine::GetOption(const char* optionName, std::string& optionValue) {
  auto i = _optionMap.find(optionName);
  if (i == _optionMap.end()) return false;

  optionValue = i->second;
  return true;
}

size_t CommandLine::NumOptions() { return _optionMap.size(); }