C++ Utilities  4.7.0
Common C++ classes and routines used by my applications such as argument parser, IO and conversion utilities
commandlineutils.h
Go to the documentation of this file.
1 #ifndef APPLICATIONUTILITIES_COMMANDLINEUTILS_H
2 #define APPLICATIONUTILITIES_COMMANDLINEUTILS_H
3 
4 #include "../global.h"
5 
6 #include <ostream>
7 
8 #ifdef PLATFORM_WINDOWS
9 #include <memory>
10 #include <vector>
11 #endif
12 
13 namespace ApplicationUtilities {
14 
18 enum class Response { None, Yes, No };
19 
20 bool CPP_UTILITIES_EXPORT confirmPrompt(const char *message, Response defaultResponse = Response::None);
21 
22 #ifdef PLATFORM_WINDOWS
23 void CPP_UTILITIES_EXPORT startConsole();
24 std::pair<std::vector<std::unique_ptr<char[]>>, std::vector<char *>> CPP_UTILITIES_EXPORT convertArgsToUtf8();
25 #define CMD_UTILS_START_CONSOLE ::ApplicationUtilities::startConsole();
26 #define CMD_UTILS_CONVERT_ARGS_TO_UTF8 \
27  auto utf8Args = ::ApplicationUtilities::convertArgsToUtf8(); \
28  argv = utf8Args.second.data(); \
29  argc = static_cast<int>(utf8Args.second.size());
30 #else
31 #define CMD_UTILS_START_CONSOLE
32 #define CMD_UTILS_CONVERT_ARGS_TO_UTF8
33 #endif
34 
39 public:
40  Indentation(unsigned char level = 4, char character = ' ')
41  : level(level)
42  , character(character)
43  {
44  }
45 
46  Indentation operator+(unsigned char level)
47  {
48  return Indentation(this->level + level, character);
49  }
50 
51  unsigned char level;
52  char character;
53 };
54 
55 inline CPP_UTILITIES_EXPORT std::ostream &operator<<(std::ostream &out, Indentation indentation)
56 {
57  for (unsigned char i = 0; i < indentation.level; ++i) {
58  out << indentation.character;
59  }
60  return out;
61 }
62 
63 } // namespace ApplicationUtilities
64 
65 #endif // APPLICATIONUTILITIES_COMMANDLINEUTILS_H
Contains currently only ArgumentParser and related classes.
The Indentation class allows printing indentation conveniently, eg.
bool CPP_UTILITIES_EXPORT confirmPrompt(const char *message, Response defaultResponse=Response::None)
Prompts for confirmation displaying the specified message.
Response
The Response enum is used to specify the default response for the confirmPrompt() method...
Indentation operator+(unsigned char level)
#define CPP_UTILITIES_EXPORT
Marks the symbol to be exported by the c++utilities library.
Indentation(unsigned char level=4, char character=' ')
CPP_UTILITIES_EXPORT std::ostream & operator<<(std::ostream &out, Indentation indentation)