strstr method

MemoryPointer<RVoid> strstr(
  1. MemoryPointer<RType> haystack,
  2. MemoryPointer<RType> needle
)

Implementation

MemoryPointer<RVoid> strstr(MemoryPointer haystack, MemoryPointer needle) {
  final needleLen = strlen(needle);
  if (needleLen == 0) return haystack.cast();
  var i = 0;
  while (haystack.readUint8(i) != 0) {
    var j = 0;
    while (j < needleLen && haystack.readUint8(i + j) == needle.readUint8(j)) j++;
    if (j == needleLen) return haystack.offsetBy(i);
    i++;
  }
  return MemoryPointer.nullptr();
}