#pragma once #include #include #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::iterator begin() { return m_vArgs.begin(); } std::vector::const_iterator begin() const { return m_vArgs.begin(); } std::vector::iterator end() { return m_vArgs.end(); } std::vector::const_iterator end() const { return m_vArgs.end(); } private: std::vector m_vArgs; };