typedef std::filesystem::path PATH; typedef std::filesystem::directory_entry DIRENT; typedef std::vector DIRENTS; typedef unsigned int uint; typedef unsigned long long int UL; typedef double D; struct ENTLIST{ DIRENTS list; UL files; UL dirs; void print(); }; struct DIRLIST { DIRENTS files; DIRENTS dirs; ENTLIST all(); int charcomp(char a, char b); int strcomp(std::string a, std::string b); void sorter(DIRENTS& list, DIRENTS& newlist); }; struct PATHS { size_t i = 0; std::vector paths; size_t size() const; void add(std::string str); void remove(int n); PATH path() const; PATH operator ()(); void first(); void next(); bool end(); void validate(); DIRLIST read(); std::string str(); }paths; struct FLAGS { bool color = true; bool list = false; bool all = false; bool number = false; bool help = false; void parse(int argc, char* argv[]); void toggle(std::string arg); }flags; struct printer { printer() {r.init(30);} rainbow r; void operator()(std::string str); void operator()(); }prnt; struct ST { ST(const DIRENT &e); std::string init(const DIRENT& e); struct stat st; std::string perms(); std::string owner(); std::string size(); std::string time(); std::string str(); };