Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
ArgParser.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2014 - 2016 Symless Ltd.
4 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
5 */
6
7#pragma once
8
9#include <string>
10#include <vector>
11
12namespace deskflow {
13class ArgsBase;
14class ServerArgs;
15class ClientArgs;
16} // namespace deskflow
17
18class App;
19
21{
22
23public:
24 explicit ArgParser(App *app);
25
26 bool parseServerArgs(deskflow::ServerArgs &args, int argc, const char *const *argv) const;
27 bool parseClientArgs(deskflow::ClientArgs &args, int argc, const char *const *argv) const;
28 bool parsePlatformArgs(deskflow::ArgsBase &argsBase, const int &argc, const char *const *argv, int &i) const;
29 bool parseGenericArgs(int argc, const char *const *argv, int &i) const;
30 bool parseDeprecatedArgs(int argc, const char *const *argv, int &i) const;
32 {
33 m_argsBase = &argsBase;
34 }
35
36 static bool isArg(
37 int argi, int argc, const char *const *argv, const char *name1, const char *name2, int minRequiredParameters = 0
38 );
39 static void splitCommandString(const std::string_view &command, std::vector<std::string> &argv);
40 static bool searchDoubleQuotes(const std::string_view &command, size_t &left, size_t &right, size_t startPos = 0);
41 static void removeDoubleQuotes(std::string_view &arg);
42 static const char **getArgv(std::vector<std::string> &argsArray);
43 static std::string assembleCommand(
44 std::vector<std::string> &argsArray, const std::string_view &ignoreArg = std::string_view(),
45 int parametersRequired = 0
46 );
47
49 {
50 return *m_argsBase;
51 }
52
53private:
54 void updateCommonArgs(const char *const *argv) const;
55 bool checkUnexpectedArgs() const;
56
57private:
58 App *m_app;
59
60 static deskflow::ArgsBase *m_argsBase;
61};
Definition App.h:35
bool parseDeprecatedArgs(int argc, const char *const *argv, int &i) const
Definition ArgParser.cpp:176
bool parseServerArgs(deskflow::ServerArgs &args, int argc, const char *const *argv) const
Definition ArgParser.cpp:27
static deskflow::ArgsBase & argsBase()
Definition ArgParser.h:48
void setArgsBase(deskflow::ArgsBase &argsBase) const
Definition ArgParser.h:31
static void removeDoubleQuotes(std::string_view &arg)
Definition ArgParser.cpp:277
ArgParser(App *app)
Definition ArgParser.cpp:23
static bool isArg(int argi, int argc, const char *const *argv, const char *name1, const char *name2, int minRequiredParameters=0)
Definition ArgParser.cpp:193
bool parsePlatformArgs(deskflow::ArgsBase &argsBase, const int &argc, const char *const *argv, int &i) const
Definition ArgParser.cpp:101
bool parseClientArgs(deskflow::ClientArgs &args, int argc, const char *const *argv) const
Definition ArgParser.cpp:56
static const char ** getArgv(std::vector< std::string > &argsArray)
Definition ArgParser.cpp:285
static bool searchDoubleQuotes(const std::string_view &command, size_t &left, size_t &right, size_t startPos=0)
Definition ArgParser.cpp:255
static void splitCommandString(const std::string_view &command, std::vector< std::string > &argv)
Definition ArgParser.cpp:211
static std::string assembleCommand(std::vector< std::string > &argsArray, const std::string_view &ignoreArg=std::string_view(), int parametersRequired=0)
Definition ArgParser.cpp:302
bool parseGenericArgs(int argc, const char *const *argv, int &i) const
Definition ArgParser.cpp:122
This is the base Argument class that will store the generic arguments passed into the applications th...
Definition ArgsBase.h:19
Definition ClientArgs.h:19
Definition ServerArgs.h:17
Definition EventTypes.h:11