Bounded UTF-16 semantics for the admitted java.lang.String methods.
PTC strings remain UTF-8 binaries. Java indexes are measured over a temporary big-endian UTF-16 code-unit view capped at 256,000 input bytes. A substring that cuts a surrogate pair is rejected because it cannot be represented as a valid PTC UTF-8 string.
Summary
Functions
@spec contains([term()]) :: {:ok, boolean()} | {:error, PtcRunner.Lisp.Java.Condition.t()}
@spec ends_with([term()]) :: {:ok, boolean()} | {:error, PtcRunner.Lisp.Java.Condition.t()}
@spec index_of([term()]) :: {:ok, PtcRunner.Lisp.Java.Primitive.t()} | {:error, PtcRunner.Lisp.Java.Condition.t()}
@spec last_index_of([term()]) :: {:ok, PtcRunner.Lisp.Java.Primitive.t()} | {:error, PtcRunner.Lisp.Java.Condition.t()}
@spec length([term()]) :: {:ok, PtcRunner.Lisp.Java.Primitive.t()} | {:error, PtcRunner.Lisp.Java.Condition.t()}
@spec starts_with([term()]) :: {:ok, boolean()} | {:error, PtcRunner.Lisp.Java.Condition.t()}
@spec substring([term()]) :: {:ok, binary()} | {:error, PtcRunner.Lisp.Java.Condition.t()}
@spec trim([term()]) :: {:ok, binary()} | {:error, PtcRunner.Lisp.Java.Condition.t()}
@spec validate_input(term()) :: :ok | {:error, :invalid_utf8 | :too_large}