commandline.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * Copyright 2010-2020 Branimir Karadzic. All rights reserved.
  3. * License: https://github.com/bkaradzic/bx#license-bsd-2-clause
  4. */
  5. #ifndef BX_COMMANDLINE_H_HEADER_GUARD
  6. #define BX_COMMANDLINE_H_HEADER_GUARD
  7. #include "string.h"
  8. namespace bx
  9. {
  10. ///
  11. StringView tokenizeCommandLine(const StringView& _commandLine, char* _buffer, uint32_t& _bufferSize, int32_t& _argc, char* _argv[], int32_t _maxArgvs, char _term = '\0');
  12. ///
  13. class CommandLine
  14. {
  15. public:
  16. ///
  17. CommandLine(int32_t _argc, char const* const* _argv);
  18. ///
  19. const char* findOption(const char* _long, const char* _default) const;
  20. ///
  21. const char* findOption(const char _short, const char* _long, const char* _default) const;
  22. ///
  23. const char* findOption(const char* _long, int32_t _numParams = 1) const;
  24. ///
  25. const char* findOption(const char _short, const char* _long = NULL, int32_t _numParams = 1) const;
  26. ///
  27. const char* findOption(int32_t _skip, const char _short, const char* _long = NULL, int32_t _numParams = 1) const;
  28. ///
  29. bool hasArg(const char _short, const char* _long = NULL) const;
  30. ///
  31. bool hasArg(const char* _long) const;
  32. ///
  33. bool hasArg(const char*& _value, const char _short, const char* _long = NULL) const;
  34. ///
  35. bool hasArg(int32_t& _value, const char _short, const char* _long = NULL) const;
  36. ///
  37. bool hasArg(uint32_t& _value, const char _short, const char* _long = NULL) const;
  38. ///
  39. bool hasArg(float& _value, const char _short, const char* _long = NULL) const;
  40. ///
  41. bool hasArg(double& _value, const char _short, const char* _long = NULL) const;
  42. ///
  43. bool hasArg(bool& _value, const char _short, const char* _long = NULL) const;
  44. ///
  45. int32_t getNum() const;
  46. ///
  47. char const* get(int32_t _idx) const;
  48. private:
  49. ///
  50. const char* find(int32_t _skip, const char _short, const char* _long, int32_t _numParams) const;
  51. int32_t m_argc;
  52. char const* const* m_argv;
  53. };
  54. } // namespace bx
  55. #endif /// BX_COMMANDLINE_H_HEADER_GUARD