import string

#if NULLCHAR_SAME
alias scrstrzlen = strzlen
alias scrstrzcmp = strzcmp
alias scrstrzcopy = strzcopy
alias scrstrzpaste = strzpaste
alias scrstrzappendchar = strzappendchar
alias scrstrzappend = strzappend


#else

#if ARCH_I80
import internal/scrstring_fastpointers
#else
import internal/scrstring_fastindices
#endif

void scrstrzappend(pointer buffer, pointer str) {
    scrstrzcopy(buffer + scrstrzlen(buffer), str)
}
void scrstrzappendchar(pointer buffer, byte char) {
   buffer += scrstrzlen(buffer)
   buffer[0] = char
   buffer[1] = nullchar_scr
}

#endif

#if DECIMALS_SAME

alias scrstrz2word = strz2word

#else

word scrstrz2word(pointer str) {
    byte i
    byte char
    word next
    word result
    result = 0
    i = 0
    errno = err_ok
    while true {
        char = str[i]
        if char == nullchar_scr {
            if i == 0 {
                errno = err_numberformat
            }
            return result
        }
        if '0'scr <= char <= '0'scr + 9 {
            next = result * 10
            next += char - '0'scr
            if next < result {
                errno = err_range
            }
            result = next
        } else {
            errno = err_numberformat
            return result
        }
        i += 1
    }
}


#endif