20 #ifndef BUILDCACHE_STRING_LIST_HPP_
21 #define BUILDCACHE_STRING_LIST_HPP_
23 #include <initializer_list>
32 typedef typename std::vector<std::string>::iterator iterator;
33 typedef typename std::vector<std::string>::const_iterator const_iterator;
41 string_list_t(std::initializer_list<std::string> list) : m_strings(list) {
54 for (
int i = 0; i < argc; ++i) {
55 m_strings.emplace_back(std::string(argv[i]));
64 string_list_t(
const std::string& str,
const std::string& delimiter);
78 std::string
join(
const std::string& separator,
const bool escape =
false)
const;
90 std::string& operator[](
const size_t idx) {
91 return m_strings[idx];
94 const std::string& operator[](
const size_t idx)
const {
95 return m_strings[idx];
99 m_strings.emplace_back(str);
104 for (
const auto& str : list) {
105 m_strings.emplace_back(str);
122 size_t size()
const {
123 return m_strings.size();
127 return m_strings.begin();
130 const_iterator begin()
const {
131 return m_strings.begin();
134 const_iterator cbegin()
const {
135 return m_strings.cbegin();
139 return m_strings.end();
142 const_iterator end()
const {
143 return m_strings.end();
146 const_iterator cend()
const {
147 return m_strings.cend();
151 static std::string escape_arg(
const std::string& arg);
153 static std::string unescape_arg(
const std::string& arg);
155 std::vector<std::string> m_strings;
159 #endif // BUILDCACHE_STRING_LIST_HPP_
string_list_t()
Construct an empty list.
Definition: string_list.hpp:36
void pop_back()
Remove the last element.
Definition: string_list.hpp:86
string_list_t(const int argc, const char **argv)
Construct a list from command line arguments.
Definition: string_list.hpp:53
static string_list_t split_args(const std::string &cmd)
Construct a list of arguments from a string with a shell-like format.
Definition: string_list.cpp:49
The top level namespace.
Definition: compressor.cpp:34
A convenient vector of strings container with support functions for program argument handling.
Definition: string_list.hpp:30
std::string join(const std::string &separator, const bool escape=false) const
Join all elements into a single string.
Definition: string_list.cpp:101
string_list_t(const std::vector< std::string > &vec)
Construct a list from a vector of strings.
Definition: string_list.hpp:46
string_list_t(std::initializer_list< std::string > list)
Construct a list from an initializer list.
Definition: string_list.hpp:41
void clear()
Remove all the elements.
Definition: string_list.hpp:81