encode method

Int32List encode(
  1. String text
)

Implementation

Int32List encode(String text) {
  int status;

  if (!available) {
    throw Exception("Model not opened");
  }

  Pointer<Int8> nativeText = text.toNativeUtf8().cast<Int8>();
  status = ailiaTokenizer.ailiaTokenizerEncode(
    ppAiliaTokenizer!.value,
    nativeText,
  );
  calloc.free(nativeText);
  if (status != ailiaStatusSuccess) {
    throw Exception("ailiaTokenizerEncode error $status");
  }

  final Pointer<Uint32> count = malloc<Uint32>();
  count.value = 0;
  status = ailiaTokenizer.ailiaTokenizerGetTokenCount(
    ppAiliaTokenizer!.value,
    count,
  );
  if (status != ailiaStatusSuccess) {
    throw Exception("ailiaTokenizerGetTokenCount error $status");
  }

  Pointer<Int32> tokens = malloc<Int32>(count.value);
  status = ailiaTokenizer.ailiaTokenizerGetTokens(
    ppAiliaTokenizer!.value,
    tokens,
    count.value,
  );
  if (status != ailiaStatusSuccess) {
    throw Exception("ailiaTokenizerGetTokens error $status");
  }

  Int32List tokensF = Int32List(count.value);
  for (int i = 0; i < count.value; i++) {
    tokensF[i] = tokens[i];
  }

  malloc.free(tokens);
  malloc.free(count);

  return tokensF;
}