TITANIUM_FUNCTION(API, log) { ENSURE_STRING_AT_INDEX(level, 0); ENSURE_STRING_AT_INDEX(message, 1); const auto js_context = this_object.get_context(); GetStaticObject(js_context).GetPrivate<API>()->log(message); return js_context.CreateUndefined(); }
TITANIUM_FUNCTION(Properties, setString) { ENSURE_STRING_AT_INDEX(property, 0); ENSURE_STRING_AT_INDEX(value, 1); const auto js_context = this_object.get_context(); const auto object_ptr = GetStaticObject(js_context).GetPrivate<Properties>(); object_ptr->setString(property, value); return js_context.CreateUndefined(); }
TITANIUM_FUNCTION(API, log) { const auto js_context = this_object.get_context(); if (arguments.size() == 1) { ENSURE_STRING_AT_INDEX(message, 0); GetStaticObject(js_context).GetPrivate<API>()->log("info", message); } else if (arguments.size() == 2) { ENSURE_ARGUMENT_INDEX(1); ENSURE_STRING_AT_INDEX(level, 0); JOIN_ARGUMENT_STRINGS(message, 1); GetStaticObject(js_context).GetPrivate<API>()->log(level, message.str()); } return js_context.CreateUndefined(); }
TITANIUM_FUNCTION(Module, fireEvent) { ENSURE_STRING_AT_INDEX(name, 0); ENSURE_OPTIONAL_OBJECT_AT_INDEX(param, 1); fireEvent(name, param); return get_context().CreateUndefined(); }
TITANIUM_FUNCTION(Module, removeEventListener) { ENSURE_STRING_AT_INDEX(name, 0); ENSURE_OBJECT_AT_INDEX(callback, 1); TITANIUM_ASSERT(callback.IsFunction()); removeEventListener(name, callback, this_object); return get_context().CreateUndefined(); }
TITANIUM_FUNCTION(Properties, hasProperty) { ENSURE_STRING_AT_INDEX(property, 0); const auto js_context = this_object.get_context(); const auto object_ptr = GetStaticObject(js_context).GetPrivate<Properties>(); return js_context.CreateBoolean(object_ptr->hasProperty(property)); }
TITANIUM_FUNCTION(Properties, removeProperty) { ENSURE_STRING_AT_INDEX(property, 0); const auto js_context = this_object.get_context(); const auto object_ptr = GetStaticObject(js_context).GetPrivate<Properties>(); object_ptr->removeProperty(property); return js_context.CreateUndefined(); }
TITANIUM_FUNCTION(Properties, getObject) { ENSURE_STRING_AT_INDEX(property, 0); ENSURE_OPTIONAL_OBJECT_AT_INDEX(defaultValue, 1); const auto js_context = this_object.get_context(); const auto object_ptr = GetStaticObject(js_context).GetPrivate<Properties>(); return object_ptr->getObject(property, defaultValue); }
TITANIUM_FUNCTION(Properties, getInt) { ENSURE_STRING_AT_INDEX(property, 0); ENSURE_OPTIONAL_DOUBLE_AT_INDEX(defaultValue, 1, 0); const auto js_context = this_object.get_context(); const auto object_ptr = GetStaticObject(js_context).GetPrivate<Properties>(); return js_context.CreateNumber(object_ptr->getInt(property, defaultValue)); }
TITANIUM_FUNCTION(Properties, getBool) { ENSURE_STRING_AT_INDEX(property, 0); ENSURE_OPTIONAL_BOOL_AT_INDEX(defaultValue, 1, false); const auto js_context = this_object.get_context(); const auto object_ptr = GetStaticObject(js_context).GetPrivate<Properties>(); return js_context.CreateBoolean(object_ptr->getBool(property, defaultValue)); }
TITANIUM_FUNCTION(WebView, evalJS) { if (arguments.size() < 1) { return get_context().CreateUndefined(); } ENSURE_STRING_AT_INDEX(code, 0); ENSURE_OPTIONAL_OBJECT_AT_INDEX(callback, 1); return get_context().CreateString(evalJS(code, callback)); }
TITANIUM_FUNCTION(Properties, setList) { ENSURE_STRING_AT_INDEX(property, 0); ENSURE_ARRAY_AT_INDEX(array, 1); const auto js_context = this_object.get_context(); const auto object_ptr = GetStaticObject(js_context).GetPrivate<Properties>(); object_ptr->setList(property, array); return js_context.CreateUndefined(); }
TITANIUM_FUNCTION(Properties, getList) { ENSURE_STRING_AT_INDEX(property, 0); ENSURE_OPTIONAL_ARRAY_AT_INDEX(defaultValue, 1); const auto js_context = this_object.get_context(); const auto object_ptr = GetStaticObject(js_context).GetPrivate<Properties>(); const auto list = object_ptr->getList(property, static_cast<std::vector<JSValue>>(defaultValue)); return js_context.CreateArray(list); }
TITANIUM_FUNCTION(DB, execute) { ENSURE_STRING_AT_INDEX(sql, 0); if (arguments.size() > 1) { // TODO Drop the first arg (the sql statement) and grab all the varargs //std::vector<JSValue> varargs = std::vector<JSValue>(arguments.begin() + 1, arguments.end()).swap(arguments); return execute(sql, arguments); } else { return execute(sql); } }
TITANIUM_FUNCTION(ResultSet, fieldByName) { ENSURE_STRING_AT_INDEX(name, 0); if (arguments.size() > 1) { const auto _1 = arguments.at(1); TITANIUM_ASSERT(_1.IsNumber()); const auto fieldType = Constants::to_FIELD_TYPE(static_cast<std::underlying_type<FIELD_TYPE>::type>(_1)); return fieldByName(name, fieldType); } return fieldByName(name); }
TITANIUM_FUNCTION(Properties, getString) { ENSURE_STRING_AT_INDEX(property, 0); boost::optional<std::string> defaultValue = nullptr; if (arguments.size() > 1) { const auto _1 = arguments.at(1); if (_1.IsString()) { defaultValue = static_cast<std::string>(_1); } } const auto js_context = this_object.get_context(); const auto object_ptr = GetStaticObject(js_context).GetPrivate<Properties>(); const auto result = object_ptr->getString(property, defaultValue); if (result) { return js_context.CreateString(*result); } return js_context.CreateNull(); }