The first byte of a t_text value has index 0.
t_bool operator==(t_text t1, t_text t2)
t_bool operator!=(t_text t1, t_text t2) = operator!(operator==(t1, t2))
t_text operator+(t_text t1, t_text t2)
t_int _length(t_text t)
t_text _elem(t_text t, t_int i)
t_text _sub(t_text t, t_int start = 0, t_int len = _length(t)) = { int w = _length(t); int i = _min(_max(start, 0)), w); int j = _min(i + _max(len, 0), w); // 0 <= i <= j <= _length(t); extract [i..j) t_text r = ""; for (; i < j; i++) r = operator+(r, _elem(t, i)); return r; }
t_int _find(t_text t, t_text p, t_int start = 0) = { int j = _length(t) - _length(p); if (j < 0) return -1; int i = _max(start, 0); if (i > j) return -1; for (; i <= j; i++) { int k = 0; while (k < _length(p) && _elem(t, i+k) == _elem(p, k)) k++; if (k == _length(p)) return i; } return -1; }
t_int _findr(t_text t, t_text p, t_int start = 0) = { int j = _length(t) - _length(p); if (j < 0) return -1; int i = _max(start, 0); if (i > j) return -1; for (; i <= j; j--) { int k = 0; while (k < _length(p) && _elem(t, j+k) == _elem(p, k)) k++; if (k == _length(p)) return j; } return -1; }