Beispiel #1
0
unsigned JSArray::length() {
  JSValueRef val = JSObjectGetProperty(ctx_, instance_, JSString("length"), nullptr);
  if (JSValueIsNumber(ctx_, val))
    return static_cast<unsigned>(JSValueToNumber(ctx_, val, nullptr));

  return 0;
}
Beispiel #2
0
void JSArray::push(const JSValue& val) {
  JSValueRef prop = JSObjectGetProperty(ctx_, instance_, JSString("push"), nullptr);
  if (JSValueIsObject(ctx_, prop)) {
    JSObjectRef func = JSValueToObject(ctx_, prop, nullptr);
    if (JSObjectIsFunction(ctx_, func)) {
      JSValueRef arg = val;
      JSObjectCallAsFunction(ctx_, func, instance_, 1, &arg, nullptr);
    }
  }
}
Beispiel #3
0
int JSArray::indexOf(const JSValue& val, int start) const {
  JSValueRef prop = JSObjectGetProperty(ctx_, instance_, JSString("indexOf"), nullptr);
  if (JSValueIsObject(ctx_, prop)) {
    JSObjectRef func = JSValueToObject(ctx_, prop, nullptr);
    if (JSObjectIsFunction(ctx_, func)) {
      JSValueRef args[2] = { val, JSValueMakeNumber(ctx_, start) };
      JSValueRef result = JSObjectCallAsFunction(ctx_, func, instance_, 2, args, nullptr);
      if (JSValueIsNumber(ctx_, result)) {
        return static_cast<int>(JSValueToNumber(ctx_, result, nullptr));
      }
    }
  }

  return -1;
}
Beispiel #4
0
 JSValue::operator std::string() const {
   return operator JSString();
 }
Beispiel #5
0
JSValue::JSValue(const ultralight::String& val) : ctx_(GetJSContext()) {
  instance_ = JSValueMakeString(ctx_, JSString(val));
  JSValueProtect(ctx_, instance_);
}
Beispiel #6
0
JSValue::JSValue(const char* val) : ctx_(GetJSContext()) {
  instance_ = JSValueMakeString(ctx_, JSString(val));
  JSValueProtect(ctx_, instance_);
}