#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, 0 }; if(!chrequal(str[n], key[n])) break; } str++; } return { false, 0 }; } 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