varlist: move to a separate header, add join

This commit is contained in:
vaxerski 2023-09-12 16:46:22 +01:00
parent 5cc53c14d9
commit 2e34548aea
4 changed files with 90 additions and 69 deletions

41
src/helpers/VarList.hpp Normal file
View file

@ -0,0 +1,41 @@
#pragma once
#include <vector>
#include <string>
#include "../macros.hpp"
class CVarList {
public:
/* passing 's' as a separator will use std::isspace */
CVarList(const std::string& in, long unsigned int lastArgNo = 0, const char separator = ',');
~CVarList() = default;
size_t size() const {
return m_vArgs.size();
}
std::string join(const std::string& joiner, size_t from = 0, size_t to = 0) const;
std::string operator[](const long unsigned int& idx) const {
if (idx >= m_vArgs.size())
return "";
return m_vArgs[idx];
}
// for range-based loops
std::vector<std::string>::iterator begin() {
return m_vArgs.begin();
}
std::vector<std::string>::const_iterator begin() const {
return m_vArgs.begin();
}
std::vector<std::string>::iterator end() {
return m_vArgs.end();
}
std::vector<std::string>::const_iterator end() const {
return m_vArgs.end();
}
private:
std::vector<std::string> m_vArgs;
};