void Java_com_spotify_voyager_jni_Index_nativeConstructor()

in java/com_spotify_voyager_jni_Index.cpp [313:344]


void Java_com_spotify_voyager_jni_Index_nativeConstructor(
    JNIEnv *env, jobject self, jobject spaceType, jint numDimensions, jlong M,
    jlong efConstruction, jlong randomSeed, jlong maxElements,
    jobject storageDataType) {

  try {
    switch (toStorageDataType(env, storageDataType)) {
    case StorageDataType::Float32:
      setHandle<Index>(env, self,
                       new TypedIndex<float>(toSpaceType(env, spaceType),
                                             numDimensions, M, efConstruction,
                                             randomSeed, maxElements));
      break;
    case StorageDataType::Float8:
      setHandle<Index>(env, self,
                       new TypedIndex<float, int8_t, std::ratio<1, 127>>(
                           toSpaceType(env, spaceType), numDimensions, M,
                           efConstruction, randomSeed, maxElements));
      break;
    case StorageDataType::E4M3:
      setHandle<Index>(env, self,
                       new TypedIndex<float, E4M3>(
                           toSpaceType(env, spaceType), numDimensions, M,
                           efConstruction, randomSeed, maxElements));
      break;
    }
  } catch (std::exception const &e) {
    if (!env->ExceptionCheck()) {
      env->ThrowNew(env->FindClass("java/lang/RuntimeException"), e.what());
    }
  }
}