1 /* 2 * Copyright 2007-2012, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _ARGUMENT_VECTOR_H 6 #define _ARGUMENT_VECTOR_H 7 8 9 #include <SupportDefs.h> 10 11 12 namespace BPrivate { 13 14 15 class ArgumentVector { 16 public: 17 enum ParseError { 18 NO_ERROR, 19 NO_MEMORY, 20 UNTERMINATED_QUOTED_STRING, 21 TRAILING_BACKSPACE 22 }; 23 24 public: 25 ArgumentVector(); 26 ~ArgumentVector(); 27 ArgumentCount()28 int32 ArgumentCount() const { return fCount; } Arguments()29 const char* const* Arguments() const { return fArguments; } 30 31 char** DetachArguments(); 32 // Caller must free() -- it's all one big allocation at the 33 // returned pointer. 34 35 ParseError Parse(const char* commandLine, 36 const char** _errorLocation = NULL); 37 38 private: 39 struct Parser; 40 41 private: 42 char** fArguments; 43 int32 fCount; 44 }; 45 46 47 } // namespace BPrivate 48 49 50 using BPrivate::ArgumentVector; 51 52 53 #endif // _ARGUMENT_VECTOR_H 54