2022-03-19 00:20:01 +00:00
|
|
|
; Internal library routines - always included by the compiler
|
|
|
|
;
|
|
|
|
; Written by Irmen de Jong (irmen@razorvine.net) - license: GNU GPL 3.0
|
|
|
|
|
2022-03-27 13:23:32 +00:00
|
|
|
%import textio
|
|
|
|
|
2022-03-19 00:20:01 +00:00
|
|
|
prog8_lib {
|
2022-03-21 20:19:32 +00:00
|
|
|
%option force_output
|
2022-03-19 00:20:01 +00:00
|
|
|
|
2022-03-27 13:23:32 +00:00
|
|
|
sub string_contains(ubyte needle, str haystack) -> ubyte {
|
2022-03-27 19:59:46 +00:00
|
|
|
repeat {
|
|
|
|
if @(haystack)==0
|
|
|
|
return false
|
|
|
|
if @(haystack)==needle
|
|
|
|
return true
|
|
|
|
haystack++
|
|
|
|
}
|
2022-03-27 13:23:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub bytearray_contains(ubyte needle, uword haystack_ptr, ubyte num_elements) -> ubyte {
|
2022-03-27 19:59:46 +00:00
|
|
|
haystack_ptr--
|
|
|
|
while num_elements {
|
|
|
|
if haystack_ptr[num_elements]==needle
|
|
|
|
return true
|
|
|
|
num_elements--
|
|
|
|
}
|
|
|
|
return false
|
2022-03-27 13:23:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub wordarray_contains(ubyte needle, uword haystack_ptr, ubyte num_elements) -> ubyte {
|
2022-03-27 19:59:46 +00:00
|
|
|
haystack_ptr += (num_elements-1) * 2
|
|
|
|
while num_elements {
|
|
|
|
if peekw(haystack_ptr)==needle
|
|
|
|
return true
|
|
|
|
haystack_ptr -= 2
|
|
|
|
num_elements--
|
|
|
|
}
|
|
|
|
return false
|
2022-03-27 13:23:32 +00:00
|
|
|
}
|
2022-03-19 00:20:01 +00:00
|
|
|
}
|