#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 maybe 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 (unsigned)(str - base); if(str[n] == 0) return nothing; if(!chrequal(str[n], key[n])) break; } str++; } return nothing; } maybe strpos(const char* str, const char* key) { return ustrpos(str, key); } maybe istrpos(const char* str, const char* key) { return ustrpos(str, key); } maybe qstrpos(const char* str, const char* key) { return ustrpos(str, key); } maybe iqstrpos(const char* str, const char* key) { return ustrpos(str, key); } } #endif