예제 #1
0
/* Native resolver for the extension library. */
Dart_NativeFunction ResolveName(Dart_Handle name, int argc) {
  /* assert(Dart_IsString(name)); */
  const char* c_name;
  Dart_Handle check_error;

  check_error = Dart_StringToCString(name, &c_name);
  if (Dart_IsError(check_error)) {
    Dart_PropagateError(check_error);
  }
  if ((strcmp("TestExtension_IfNull", c_name) == 0) && (argc == 2)) {
    return IfNull;
  }
  if ((strcmp("TestExtension_ThrowMeTheBall", c_name) == 0) && (argc == 1)) {
    return ThrowMeTheBall;
  }
  return NULL;
}
예제 #2
0
Dart_NativeFunction ResolveName(Dart_Handle name,
                                int argc,
                                bool* auto_setup_scope) {
  *auto_setup_scope = true;
  Dart_NativeFunction result;
  if (!Dart_IsString(name)) return NULL;
  Dart_EnterScope();
  const char* cname;
  HandleError(Dart_StringToCString(name, &cname));

  for (int i=0; function_list[i].name != NULL; ++i) {
    if (strcmp(function_list[i].name, cname) == 0) {
      result = function_list[i].function;
      break;
    }
  }
  
  Dart_ExitScope();
  return result; 
  
}