#ifdef NALL_STRING_INTERNAL_HPP //usage example: //if(auto position = strpos(str, key)) print(position(), "\n"); //prints position of key within str; but only if it is found namespace nall { template optional ustrpos(const char* str, const char* key) { const char* base = str; while(*str) { if(quoteskip(str)) continue; for(unsigned n = 0;; n++) { if(key[n] == 0) return {true, (unsigned)(str - base)}; if(str[n] == 0) return false; if(!chrequal(str[n], key[n])) break; } str++; } return false; } optional strpos(const char* str, const char* key) { return ustrpos(str, key); } optional istrpos(const char* str, const char* key) { return ustrpos(str, key); } optional qstrpos(const char* str, const char* key) { return ustrpos(str, key); } optional iqstrpos(const char* str, const char* key) { return ustrpos(str, key); } } #endif