Handle<Object> SorrowContext::SetupInternals(int argc, const char *argv[]) { HandleScope scope; Local<FunctionTemplate> internals_template = FunctionTemplate::New(); internals = Persistent<Object>::New(internals_template->GetFunction()->NewInstance()); Local<Object> global = Context::GetCurrent()->Global(); SET_METHOD(global, "quit", Quit) SET_METHOD(global, "version", Version) SET_METHOD(internals, "compile", CompileScript) if (argc) { Local<Array> lineArgs = Array::New(argc-1); for (int i = 0; i +1 < argc; i++) { lineArgs->Set(Integer::New(i), V8_STR(argv[i+1])); } internals->Set(V8_STR("args"), lineArgs); } else { internals->Set(V8_STR("args"), Array::New()); } Handle<Object> libsObject = Object::New(); LoadNativeLibraries(libsObject); internals->Set(V8_STR("stdlib"), libsObject); Handle<ObjectTemplate> env = ObjectTemplate::New(); env->SetNamedPropertyHandler(EnvGetter); internals->Set(V8_STR("env"), env->NewInstance()); internals->Set(V8_STR("global"), global); binarytypes = new BinaryTypes(internals); iostreams = new IOStreams(internals); Filesystem::Initialize(internals); Extensions::Initialize(internals); TryCatch tryCatch; Local<Value> func = ExecuteString(V8_STR(sorrow_native), V8_STR("sorrow.js")); if (tryCatch.HasCaught()) { ReportException(&tryCatch); exit(10); } ASSERT_PIN(func->IsFunction(), "sorrow.js main function not found"); Local<Function> f = Local<Function>::Cast(func); Local<Value> args[1] = { Local<Value>::New(internals) }; f->Call(global, 1, args); if (tryCatch.HasCaught()) { ReportException(&tryCatch); exit(11); } return internals; } // SetupInternals
V7_PRIVATE void init_array(void) { init_standard_constructor(V7_CLASS_ARRAY, Array_ctor); SET_PROP_FUNC(s_prototypes[V7_CLASS_ARRAY], "length", Arr_length); SET_METHOD(s_prototypes[V7_CLASS_ARRAY], "push", Arr_push); SET_METHOD(s_prototypes[V7_CLASS_ARRAY], "sort", Arr_sort); SET_RO_PROP_V(s_global, "Array", s_constructors[V7_CLASS_ARRAY]); }
V7_PRIVATE void init_json(void) { SET_METHOD(s_json, "stringify", Json_stringify); v7_set_class(&s_json, V7_CLASS_OBJECT); s_json.ref_count = 1; SET_RO_PROP_V(s_global, "JSON", s_json); }
V7_PRIVATE void init_number(void) { init_standard_constructor(V7_CLASS_NUMBER, Number_ctor); SET_RO_PROP(NUMCTOR, "MAX_VALUE", V7_TYPE_NUM, num, LONG_MAX); SET_RO_PROP(NUMCTOR, "MIN_VALUE", V7_TYPE_NUM, num, LONG_MIN); SET_RO_PROP(NUMCTOR, "NaN", V7_TYPE_NUM, num, NAN); SET_METHOD(s_prototypes[V7_CLASS_NUMBER], "toFixed", Num_toFixed); SET_RO_PROP_V(s_global, "Number", s_constructors[V7_CLASS_NUMBER]); }
NODE *ast_create(NODE_TYPE type, ...) { static struct constructor constructor[] = { {ast_array_size, ast_array_init}, {ast_binary_size, ast_binary_init}, {ast_block_size, ast_block_init}, {ast_call_size, ast_call_init}, {ast_conditional_size, ast_conditional_init}, {ast_constant_size, ast_constant_init}, {ast_declare_size, ast_declare_init}, {ast_for_size, ast_for_init}, {ast_formal_size, ast_formal_init}, {ast_function_size, ast_function_init}, {ast_group_size, ast_group_init}, {ast_identifier_size, ast_identifier_init}, {ast_list_size, ast_list_init}, {ast_postfix_size, ast_postfix_init}, {ast_prefix_size, ast_prefix_init}, {ast_read_size, ast_read_init}, {ast_return_size, ast_return_init}, {ast_string_literal_size, ast_string_literal_init}, {ast_while_size, ast_while_init}, {ast_write_size, ast_write_init} }; va_list args; NODE *result = ast_alloc(type); size_t size = constructor[type].size(); result->slots = my_malloc(size); SET_METHOD(result, generate_lval_ir, ast_default_generate_lval_ir); SET_METHOD(result, generate_param_ir, ast_default_generate_param_ir); SET_METHOD(result, find_literals, ast_default_find_literals); SET_METHOD(result, get_symbol, ast_default_get_symbol); SET_METHOD(result, add_symbols, ast_default_add_symbols); SET_METHOD(result, check_functions, ast_default_check_functions); SET_METHOD(result, ir_type, ast_default_ir_type); SET_METHOD(result, ir_value, ast_default_ir_value); SET_METHOD(result, is_lvalue, ast_default_is_lvalue); va_start(args, type); constructor[type].init(result, args); va_end(args); return result; }
V7_PRIVATE void init_string(void) { init_standard_constructor(V7_CLASS_STRING, String_ctor); SET_PROP_FUNC(s_prototypes[V7_CLASS_STRING], "length", Str_length); SET_METHOD(s_prototypes[V7_CLASS_STRING], "charCodeAt", Str_charCodeAt); SET_METHOD(s_prototypes[V7_CLASS_STRING], "charAt", Str_charAt); SET_METHOD(s_prototypes[V7_CLASS_STRING], "indexOf", Str_indexOf); SET_METHOD(s_prototypes[V7_CLASS_STRING], "substr", Str_substr); SET_METHOD(s_prototypes[V7_CLASS_STRING], "match", Str_match); SET_METHOD(s_prototypes[V7_CLASS_STRING], "split", Str_split); SET_METHOD(s_prototypes[V7_CLASS_STRING], "search", Str_search); SET_METHOD(s_prototypes[V7_CLASS_STRING], "replace", Str_replace); SET_RO_PROP_V(s_global, "String", s_constructors[V7_CLASS_STRING]); }
static void init_string(void) { SET_PROP_FUNC(s_prototypes[V7_CLASS_STRING], "length", Str_length); SET_METHOD(s_prototypes[V7_CLASS_STRING], "charCodeAt", Str_charCodeAt); SET_METHOD(s_prototypes[V7_CLASS_STRING], "charAt", Str_charAt); SET_METHOD(s_prototypes[V7_CLASS_STRING], "indexOf", Str_indexOf); SET_METHOD(s_prototypes[V7_CLASS_STRING], "substr", Str_substr); SET_METHOD(s_prototypes[V7_CLASS_STRING], "match", Str_match); SET_METHOD(s_prototypes[V7_CLASS_STRING], "split", Str_split); SET_RO_PROP_V(s_global, "String", s_constructors[V7_CLASS_STRING]); }
V7_PRIVATE void init_object(void) { init_standard_constructor(V7_CLASS_OBJECT, Object_ctor); SET_METHOD(s_prototypes[V7_CLASS_OBJECT], "toString", Obj_toString); SET_METHOD(s_prototypes[V7_CLASS_OBJECT], "keys", Obj_keys); SET_RO_PROP_V(s_global, "Object", s_constructors[V7_CLASS_OBJECT]); }
return CreateExternalArray(args, kExternalFloatArray, sizeof(float)); // NOLINT } Handle<Value> Float64Array(const Arguments& args) { return CreateExternalArray(args, kExternalDoubleArray, sizeof(double)); // NOLINT } Handle<Value> PixelArray(const Arguments& args) { return CreateExternalArray(args, kExternalPixelArray, sizeof(uint8_t)); } void InitV8Arrays(Handle<Object> target) { SET_METHOD(target, "ArrayBuffer", ArrayBuffer) SET_METHOD(target, "MemoryBuffer", MemoryBuffer) SET_METHOD(target, "Int8Array", Int8Array) SET_METHOD(target, "Uint8Array", Uint8Array) SET_METHOD(target, "Int16Array", Int16Array) SET_METHOD(target, "Uint16Array", Uint16Array) SET_METHOD(target, "Int32Array", Int32Array) SET_METHOD(target, "Uint32Array", Uint32Array) SET_METHOD(target, "Float32Array", Float32Array) SET_METHOD(target, "Float64Array", Float64Array) SET_METHOD(target, "PixelArray", PixelArray) } } // namespce sorrow
if (cameraId < 0 || cameraId >= HAL_getNumberOfCameras()) { ALOGE("ERR(%s):Invalid camera ID %d", __func__, cameraId); return -EINVAL; } memcpy(info, &sCameraInfo[cameraId], sizeof(CameraInfo)); info->device_version = HARDWARE_DEVICE_API_VERSION(1, 0); return NO_ERROR; } #define SET_METHOD(m) m : HAL_camera_device_##m static camera_device_ops_t camera_device_ops = { SET_METHOD(set_preview_window), SET_METHOD(set_callbacks), SET_METHOD(enable_msg_type), SET_METHOD(disable_msg_type), SET_METHOD(msg_type_enabled), SET_METHOD(start_preview), SET_METHOD(stop_preview), SET_METHOD(preview_enabled), SET_METHOD(store_meta_data_in_buffers), SET_METHOD(start_recording), SET_METHOD(stop_recording), SET_METHOD(recording_enabled), SET_METHOD(release_recording_frame), SET_METHOD(auto_focus), SET_METHOD(cancel_auto_focus), SET_METHOD(take_picture),