/// This helper class can be shared between unit tests that
/// need to initialize CommandOptions objects and feed it with
/// specific command line. The command line can be given as a
-/// string represinting program name, options and arguments.
+/// string representing program name, options and arguments.
/// The static method exposed by this class can be used to
/// tokenize this string into array of C-strings that are later
/// consumed by \ref CommandOptions::parse. The state of the
class CommandOptionsHelper {
public:
+ /// \brief Wrapper class for allocated argv[] array.
+ ///
+ /// This class wraps allocated char** array and ensures that memory
+ /// allocated for this array is freed at the end o the scope.
class ArgvPtr {
public:
+ /// \brief Constructor.
+ ///
+ /// \param argv array of C-strings.
+ /// \param number of C-strings in the array.
ArgvPtr(char** argv, int argc) : argv_(argv), argc_(argc) { }
- char** getArgv() const { return(argv_); }
- int getArgc() const { return(argc_); }
+ /// \brief Destructor.
+ ///
+ /// Dealocates wrapped array of C-strings.
~ArgvPtr() {
if (argv_ != NULL) {
for(int i = 0; i < argc_; ++i) {
}
}
+ /// \brief Return the array of C-strings.
+ ///
+ /// \return array of C-strings.
+ char** getArgv() const { return (argv_); }
+
+ /// \brief Return C-strings counter.
+ ///
+ /// \return C-strings counter.
+ int getArgc() const { return(argc_); }
+
public:
- char** argv_;
- int argc_;
+ char** argv_; ///< array of C-strings being wrapped.
+ int argc_; ///< number of C-strings.
};
+ /// \brief Parse command line provided as string.
+ ///
+ /// Method transforms the string representing command line
+ /// to the array of C-strings consumed by the
+ /// \ref CommandOptions::parse function and performs
+ /// parsing.
+ ///
+ /// \param cmdline command line provided as single string.
static void process(const std::string& cmdline) {
CommandOptions& opt = CommandOptions::instance();
int argc = 0;
private:
+ /// \brief Split string to the array of C-strings.
+ ///
+ /// \param text_to_split string to be splited.
+ /// \param [out] num number of substrings returned.
+ /// \return array of C-strings created from split.
static char** tokenizeString(const std::string& text_to_split, int& num) {
char** results = NULL;
// Tokenization with std streams
}
};
-} // namespace perfdhcp
+} // namespace isc::perfdhcp
} // namespace isc
#endif // __COMMAND_OPTIONS_HELPER_H