feat: added strlast and strfirst (and _pred equivs) to strutil
This commit is contained in:
parent
953aacde64
commit
2d2d0bb7ca
|
@ -13,3 +13,35 @@ uintptr_t strnhash(const char* s, size_t n) {
|
|||
uintptr_t strhash(const char* s) {
|
||||
return strnhash(s, strlen(s));
|
||||
}
|
||||
|
||||
long strlast(const char* rbegin, const char* rend, char search) {
|
||||
const char* itr = rbegin;
|
||||
while(itr != rend)
|
||||
if(*itr == search) return itr - rend;
|
||||
else itr--;
|
||||
return -1;
|
||||
}
|
||||
|
||||
long strfirst(const char* begin, const char* end, char search) {
|
||||
const char* itr = begin;
|
||||
while(itr != end)
|
||||
if(*itr == search) return itr - begin;
|
||||
else itr++;
|
||||
return -1;
|
||||
}
|
||||
|
||||
long strfirst_pred(const char* begin, const char* end, CharPredFn pred) {
|
||||
const char* itr = begin;
|
||||
while(itr != end)
|
||||
if(pred(*itr)) return itr - begin;
|
||||
else itr++;
|
||||
return -1;
|
||||
}
|
||||
|
||||
long strlast_pred(const char* rbegin, const char* rend, CharPredFn pred) {
|
||||
const char* itr = rbegin;
|
||||
while(itr != rend)
|
||||
if(pred(*itr)) return itr - rend;
|
||||
else itr--;
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -4,7 +4,13 @@
|
|||
#include "stdlib.h"
|
||||
#include "stdint.h"
|
||||
|
||||
typedef int(*CharPredFn)(int);
|
||||
|
||||
extern uintptr_t strnhash(const char* s, size_t n);
|
||||
extern uintptr_t strhash(const char* s);
|
||||
extern long strlast(const char* rbegin, const char* rend, char search);
|
||||
extern long strfirst(const char* begin, const char* end, char search);
|
||||
extern long strfirst_pred(const char* begin, const char* end, CharPredFn pred);
|
||||
extern long strlast_pred(const char* rbegin, const char* rend, CharPredFn pred);
|
||||
|
||||
#endif // !_fencer_strutil_h
|
||||
|
|
Loading…
Reference in a new issue