getEnvironmentList static method

List<AiliaEnvironment> getEnvironmentList()

Implementation

static List<AiliaEnvironment> getEnvironmentList() {
  List<AiliaEnvironment> envList =
      List<AiliaEnvironment>.empty(growable: true);
  final ailia =
      ailia_dart.ailiaFFI(_ailiaCommonGetLibrary(_ailiaCommonGetPath()));

  final Pointer<Uint32> count = malloc<Uint32>();
  count.value = 0;
  int status = ailia.ailiaGetEnvironmentCount(count);
  if (status != ailia_dart.AILIA_STATUS_SUCCESS) {
    throw Exception("ailiaGetEnvironmentCount failed $status");
  }

  for (int envIdx = 0; envIdx < count.value; envIdx++) {
    Pointer<Pointer<ailia_dart.AILIAEnvironment>> ppEnv =
        malloc<Pointer<ailia_dart.AILIAEnvironment>>();
    status = ailia.ailiaGetEnvironment(
      ppEnv,
      envIdx,
      ailia_dart.AILIA_ENVIRONMENT_VERSION,
    );
    if (status != ailia_dart.AILIA_STATUS_SUCCESS) {
      throw Exception("ailiaGetEnvironment failed $status");
    }
    Pointer<ailia_dart.AILIAEnvironment> pEnv = ppEnv.value;
    malloc.free(ppEnv);
    AiliaEnvironment env = AiliaEnvironment();
    env.id = pEnv.ref.id;
    env.name = pEnv.ref.name.cast<Utf8>().toDartString();
    env.props = pEnv.ref.props;
    envList.add(env);
  }
  malloc.free(count);
  return envList;
}