/** * The callback from JavaScriptCore. We told JSC to call this function * whenever it sees "console.setscript". */ static JSValueRef console_setscript(JSContextRef ctx, JSObjectRef /*function*/, JSObjectRef thisObject, size_t argumentCount, const JSValueRef* arguments, JSValueRef* exception) { if (!JSValueIsObjectOfClass(ctx, thisObject, ConsoleClass())) return JSValueMakeUndefined(ctx); if (argumentCount < 1) return JSValueMakeUndefined(ctx); // Convert the result into a string for display. if (!JSValueIsString(ctx, arguments[0])) return JSValueMakeUndefined(ctx); JSStringRef temp = JSValueToStringCopy (ctx, arguments[0], exception); if (exception && *exception) return JSValueMakeUndefined(ctx); BSTR strTemp = ::SysAllocString(JSStringGetCharactersPtr(temp)); JSStringRelease(temp); CallJSDlg* dlg = static_cast<CallJSDlg*>(JSObjectGetPrivate(thisObject)); dlg->setScript(strTemp); ::SysFreeString(strTemp); return JSValueMakeUndefined(ctx); }
template<> size_t RJSAccessor::to_existing_object_index(JSContextRef ctx, JSValueRef &val) { JSObjectRef object = RJSValidatedValueToObject(ctx, val); if (JSValueIsObjectOfClass(ctx, val, RJSObjectClass())) { return RJSGetInternal<Object *>(object)->row().get_index(); } throw std::runtime_error("object is not a Realm Object"); }
/** * The callback from JavaScriptCore. We told JSC to call this function * whenever it sees "console.log". */ static JSValueRef console_log(JSContextRef ctx, JSObjectRef /*function*/, JSObjectRef thisObject, size_t argumentCount, const JSValueRef* arguments, JSValueRef* exception) { if (!JSValueIsObjectOfClass(ctx, thisObject, ConsoleClass())) return JSValueMakeUndefined(ctx); if (argumentCount < 1) return JSValueMakeUndefined(ctx); // Convert the result into a string for display. if (!JSValueIsString(ctx, arguments[0])) return JSValueMakeUndefined(ctx); JSStringRef temp = JSValueToStringCopy (ctx, arguments[0], exception); if (exception && *exception) return JSValueMakeUndefined(ctx); BSTR strTemp = ::SysAllocString(JSStringGetCharactersPtr(temp)); JSStringRelease(temp); ::OutputDebugString(strTemp); ::OutputDebugString(_T("\r\n")); ::SysFreeString(strTemp); return JSValueMakeUndefined(ctx); }
static JSValueRef getLineNumber(JSContextRef ctx, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { if (!JSValueIsObjectOfClass(ctx, thisObject, ProfileNodeClass())) return JSValueMakeUndefined(ctx); ProfileNode* profileNode = static_cast<ProfileNode*>(JSObjectGetPrivate(thisObject)); return JSValueMakeNumber(ctx, profileNode->lineNumber()); }
JNIEXPORT jint JNICALL WebKit_win32_NATIVE(JSValueIsObjectOfClass) (JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jintLong arg2) { jint rc = 0; WebKit_win32_NATIVE_ENTER(env, that, JSValueIsObjectOfClass_FUNC); rc = (jint)JSValueIsObjectOfClass((JSContextRef)arg0, (JSValueRef)arg1, (JSClassRef)arg2); WebKit_win32_NATIVE_EXIT(env, that, JSValueIsObjectOfClass_FUNC); return rc; }
static JSValueRef JSNode_removeChild(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { UNUSED_PARAM(function); /* Example of ignoring invalid values */ if (argumentCount > 0) { if (JSValueIsObjectOfClass(context, thisObject, JSNode_class(context))) { if (JSValueIsObjectOfClass(context, arguments[0], JSNode_class(context))) { Node* node = JSObjectGetPrivate(thisObject); Node* child = JSObjectGetPrivate(JSValueToObject(context, arguments[0], exception)); Node_removeChild(node, child); } } } return JSValueMakeUndefined(context); }
static JSValueRef getURL(JSContextRef ctx, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { if (!JSValueIsObjectOfClass(ctx, thisObject, ProfileNodeClass())) return JSValueMakeUndefined(ctx); ProfileNode* profileNode = static_cast<ProfileNode*>(JSObjectGetPrivate(thisObject)); JSRetainPtr<JSStringRef> urlString(Adopt, JSStringCreateWithCharacters(profileNode->url().data(), profileNode->url().size())); return JSValueMakeString(ctx, urlString.get()); }
static JSValueRef getSelfTime(JSContextRef ctx, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { KJS::JSLock lock(false); if (!JSValueIsObjectOfClass(ctx, thisObject, ProfileNodeClass())) return JSValueMakeUndefined(ctx); ProfileNode* profileNode = static_cast<ProfileNode*>(JSObjectGetPrivate(thisObject)); return JSValueMakeNumber(ctx, profileNode->selfTime()); }
static JSValueRef console_getSharedBool(JSContextRef ctx, JSObjectRef thisObject, JSStringRef /*propertyName*/, JSValueRef* /*exception*/) { if (!JSValueIsObjectOfClass(ctx, thisObject, ConsoleClass())) return JSValueMakeUndefined(ctx); CallJSDlg* dlg = static_cast<CallJSDlg*>(JSObjectGetPrivate(thisObject)); if (!dlg) return JSValueMakeUndefined(ctx); return JSValueMakeBoolean(ctx, dlg->sharedBool()); }
static JSValueRef JSNode_replaceChild(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { UNUSED_PARAM(function); if (argumentCount > 1) { if (JSValueIsObjectOfClass(context, thisObject, JSNode_class(context))) { if (JSValueIsObjectOfClass(context, arguments[0], JSNode_class(context))) { if (JSValueIsObjectOfClass(context, arguments[1], JSNode_class(context))) { Node* node = JSObjectGetPrivate(thisObject); Node* newChild = JSObjectGetPrivate(JSValueToObject(context, arguments[0], exception)); Node* oldChild = JSObjectGetPrivate(JSValueToObject(context, arguments[1], exception)); Node_replaceChild(node, newChild, oldChild); } } } } return JSValueMakeUndefined(context); }
static JSValueRef JSNode_appendChild(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { UNUSED_PARAM(function); /* Example of throwing a type error for invalid values */ if (!JSValueIsObjectOfClass(context, thisObject, JSNode_class(context))) { JSStringRef message = JSStringCreateWithUTF8CString("TypeError: appendChild can only be called on nodes"); *exception = JSValueMakeString(context, message); JSStringRelease(message); } else if (argumentCount < 1 || !JSValueIsObjectOfClass(context, arguments[0], JSNode_class(context))) { JSStringRef message = JSStringCreateWithUTF8CString("TypeError: first argument to appendChild must be a node"); *exception = JSValueMakeString(context, message); JSStringRelease(message); } else { Node* node = JSObjectGetPrivate(thisObject); Node* child = JSObjectGetPrivate(JSValueToObject(context, arguments[0], NULL)); Node_appendChild(node, child); } return JSValueMakeUndefined(context); }
template<> size_t RJSAccessor::to_object_index(JSContextRef ctx, SharedRealm realm, JSValueRef &val, const std::string &type, bool try_update) { JSObjectRef object = RJSValidatedValueToObject(ctx, val); if (JSValueIsObjectOfClass(ctx, val, RJSObjectClass())) { return RJSGetInternal<Object *>(object)->row().get_index(); } auto object_schema = realm->config().schema->find(type); if (RJSIsValueArray(ctx, object)) { object = RJSDictForPropertyArray(ctx, *object_schema, object); } Object child = Object::create<JSValueRef>(ctx, realm, *object_schema, (JSValueRef)object, try_update); return child.row().get_index(); }
static JSValueRef console_getSharedValue(JSContextRef ctx, JSObjectRef thisObject, JSStringRef /*propertyName*/, JSValueRef* /*exception*/) { if (!JSValueIsObjectOfClass(ctx, thisObject, ConsoleClass())) return JSValueMakeUndefined(ctx); CallJSDlg* dlg = static_cast<CallJSDlg*>(JSObjectGetPrivate(thisObject)); if (!dlg) return JSValueMakeUndefined(ctx); JSStringRef jsString = JSStringCreateWithBSTR(dlg->sharedString()); JSValueRef jsValue = JSValueMakeString(ctx, jsString); JSStringRelease(jsString); return jsValue; }
static JSValueRef getChildren(JSContextRef ctx, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { KJS::JSLock lock(false); if (!JSValueIsObjectOfClass(ctx, thisObject, ProfileNodeClass())) return JSValueMakeUndefined(ctx); ProfileNode* profileNode = static_cast<ProfileNode*>(JSObjectGetPrivate(thisObject)); const Vector<RefPtr<ProfileNode> >& children = profileNode->children(); JSObjectRef global = JSContextGetGlobalObject(ctx); JSRetainPtr<JSStringRef> arrayString(Adopt, JSStringCreateWithUTF8CString("Array")); JSValueRef arrayProperty = JSObjectGetProperty(ctx, global, arrayString.get(), exception); if (exception && *exception) return JSValueMakeUndefined(ctx); JSObjectRef arrayConstructor = JSValueToObject(ctx, arrayProperty, exception); if (exception && *exception) return JSValueMakeUndefined(ctx); JSObjectRef result = JSObjectCallAsConstructor(ctx, arrayConstructor, 0, 0, exception); if (exception && *exception) return JSValueMakeUndefined(ctx); JSRetainPtr<JSStringRef> pushString(Adopt, JSStringCreateWithUTF8CString("push")); JSValueRef pushProperty = JSObjectGetProperty(ctx, result, pushString.get(), exception); if (exception && *exception) return JSValueMakeUndefined(ctx); JSObjectRef pushFunction = JSValueToObject(ctx, pushProperty, exception); if (exception && *exception) return JSValueMakeUndefined(ctx); for (Vector<RefPtr<ProfileNode> >::const_iterator it = children.begin(); it != children.end(); ++it) { JSValueRef arg0 = toRef(toJS(toJS(ctx), (*it).get() )); JSObjectCallAsFunction(ctx, pushFunction, result, 1, &arg0, exception); if (exception && *exception) return JSValueMakeUndefined(ctx); } return result; }
/** * The callback from JavaScriptCore. We told JSC to call this function * whenever it sees "console.report". */ static JSValueRef console_report(JSContextRef ctx, JSObjectRef /*function*/, JSObjectRef thisObject, size_t argumentCount, const JSValueRef* arguments, JSValueRef* exception) { if (!JSValueIsObjectOfClass(ctx, thisObject, ConsoleClass())) return JSValueMakeUndefined(ctx); CallJSDlg* dlg = static_cast<CallJSDlg*>(JSObjectGetPrivate(thisObject)); if (!dlg) return JSValueMakeUndefined(ctx); if (argumentCount) return JSValueMakeUndefined(ctx); JSStringRef jsString = JSStringCreateWithBSTR(dlg->sharedString()); JSValueRef jsValue = JSValueMakeString(ctx, jsString); JSStringRelease(jsString); return jsValue; }
static JSValueRef JSOSInstaller_setDoneHookFunc(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { if (!JSValueIsObjectOfClass(context, thisObject, JSOSInstaller_class(context))) { JSStringRef message = JSStringCreateWithUTF8CString("TypeError: SetDoneHookFunc can only be called on JSOSInstaller"); *exception = JSValueMakeString(context, message); JSStringRelease(message); } else if (argumentCount < 1 || !JSValueIsObject(context, arguments[0])) { JSStringRef message = JSStringCreateWithUTF8CString("TypeError: first argument to SetDoneHookFunc must be a callable"); *exception = JSValueMakeString(context, message); JSStringRelease(message); } else { JSInstaller* jsinst = JSObjectGetPrivate(thisObject); jsinst->done_func = JSValueToObject(context,arguments[0],exception); } return JSValueMakeUndefined(context); }
static JSValueRef JSOSInstaller_setRestart(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { if (!JSValueIsObjectOfClass(context, thisObject, JSOSInstaller_class(context))) { JSStringRef message = JSStringCreateWithUTF8CString("TypeError: setRestart can only be called on JSOSInstaller"); *exception = JSValueMakeString(context, message); JSStringRelease(message); } else if (argumentCount < 1 || !JSValueIsBoolean(context, arguments[0])) { JSStringRef message = JSStringCreateWithUTF8CString("TypeError: first argument to setRestart must be a boolean"); *exception = JSValueMakeString(context, message); JSStringRelease(message); } else { JSInstaller* jsinst = JSObjectGetPrivate(thisObject); jsinst->restart = JSValueToBoolean(context,arguments[0]); } return JSValueMakeUndefined(context); }
BB::PatchCollection* BB::PatchCollection::FromJS(JSContextRef ctx, JSObjectRef object) { BB::Context * context; BB::PatchCollection * collection; if (ctx != NULL) { context = BB::Context::FromJS(ctx); if (!JSValueIsObjectOfClass(ctx, object, context->patchCollectionClass())) { return NULL; } } collection = static_cast<BB::PatchCollection*>(JSObjectGetPrivate(object)); return collection; }
QVariant QtPixmapRuntime::toQt(JSContextRef context, JSObjectRef obj, QMetaType::Type hint, JSValueRef* exception) { if (!obj) return emptyVariantForHint(hint); if (JSValueIsObjectOfClass(context, obj, QtPixmapRuntime::getClassRef())) { QVariant* originalVariant = static_cast<QVariant*>(JSObjectGetPrivate(obj)); if (hint == qMetaTypeId<QPixmap>()) return QVariant::fromValue<QPixmap>(toPixmap(*originalVariant)); if (hint == qMetaTypeId<QImage>()) return QVariant::fromValue<QImage>(toImage(*originalVariant)); } JSObject* jsObject = ::toJS(obj); if (!jsObject->inherits(&JSHTMLImageElement::s_info)) return emptyVariantForHint(hint); JSHTMLImageElement* elementJSWrapper = static_cast<JSHTMLImageElement*>(jsObject); HTMLImageElement* imageElement = static_cast<HTMLImageElement*>(elementJSWrapper->impl()); if (!imageElement) return emptyVariantForHint(hint); CachedImage* cachedImage = imageElement->cachedImage(); if (!cachedImage) return emptyVariantForHint(hint); Image* image = cachedImage->imageForRenderer(imageElement->renderer()); if (!image) return emptyVariantForHint(hint); QImage* nativeImage = image->nativeImageForCurrentFrame(); if (!nativeImage) return emptyVariantForHint(hint); return (hint == static_cast<QMetaType::Type>(qMetaTypeId<QPixmap>())) ? QVariant::fromValue<QPixmap>(QPixmap::fromImage(*nativeImage)) : QVariant::fromValue<QImage>(*nativeImage); }
VValueSingle *JS4D::ValueToVValue( ContextRef inContext, ValueRef inValue, ValueRef *outException) { if (inValue == NULL) return NULL; VValueSingle *value; JSType type = JSValueGetType( inContext, inValue); switch( type) { case kJSTypeUndefined: case kJSTypeNull: value = NULL; //new VEmpty; break; case kJSTypeBoolean: value = new VBoolean( JSValueToBoolean( inContext, inValue)); break; case kJSTypeNumber: value = new VReal( JSValueToNumber( inContext, inValue, outException)); break; case kJSTypeString: { JSStringRef jsString = JSValueToStringCopy( inContext, inValue, outException); if (jsString != NULL) { VString *s = new VString; size_t length = JSStringGetLength( jsString); UniChar *p = (s != NULL) ? s->GetCPointerForWrite( length) : NULL; if (p != NULL) { ::memcpy( p, JSStringGetCharactersPtr( jsString), length * sizeof( UniChar)); s->Validate( length); value = s; } else { delete s; value = NULL; } JSStringRelease( jsString); } else { value = NULL; } break; } case kJSTypeObject: { if (ValueIsInstanceOf( inContext, inValue, CVSTR( "Date"), outException)) { VTime *time = new VTime; if (time != NULL) { JSObjectRef dateObject = JSValueToObject( inContext, inValue, outException); DateObjectToVTime( inContext, dateObject, *time, outException); value = time; } else { value = NULL; } } else if (JSValueIsObjectOfClass( inContext, inValue, VJSFolderIterator::Class())) { value = NULL; JS4DFolderIterator* container = static_cast<JS4DFolderIterator*>(JSObjectGetPrivate( JSValueToObject( inContext, inValue, outException) )); if (testAssert( container != NULL)) { VFolder* folder = container->GetFolder(); if (folder != NULL) { VString *s = new VString; if (s != NULL) folder->GetPath( *s, FPS_POSIX); value = s; } } } else if (JSValueIsObjectOfClass( inContext, inValue, VJSFileIterator::Class())) { value = NULL; JS4DFileIterator* container = static_cast<JS4DFileIterator*>(JSObjectGetPrivate( JSValueToObject( inContext, inValue, outException) )); if (testAssert( container != NULL)) { VFile* file = container->GetFile(); if (file != NULL) { VString *s = new VString; if (s != NULL) file->GetPath( *s, FPS_POSIX); value = s; } } } else if (JSValueIsObjectOfClass( inContext, inValue, VJSBlob::Class())) { // remember File inherits from Blob so one must check File before Blob VJSBlob::PrivateDataType* blobValue = static_cast<VJSBlob::PrivateDataType*>(JSObjectGetPrivate( JSValueToObject( inContext, inValue, outException) )); if (testAssert( blobValue != NULL)) { VJSDataSlice *slice = blobValue->RetainDataSlice(); VBlobWithPtr *blob = new VBlobWithPtr; if ( (blob != NULL) && (slice != NULL) && (slice->GetDataSize() > 0) ) { if (blob->PutData( slice->GetDataPtr(), slice->GetDataSize()) != VE_OK) { delete blob; blob = NULL; } } value = blob; ReleaseRefCountable( &slice); } else { value = NULL; } } #if !VERSION_LINUX // Postponed Linux Implementation ! else if (JSValueIsObjectOfClass( inContext, inValue, VJSImage::Class())) { VJSImage::PrivateDataType* piccontainer = static_cast<VJSImage::PrivateDataType*>(JSObjectGetPrivate( JSValueToObject( inContext, inValue, outException) )); if (testAssert( piccontainer != NULL)) { VPicture *vpic = piccontainer->GetPict(); value = (vpic != NULL) ? new VPicture(*vpic) : NULL; } else { value = NULL; } } #endif else { value = NULL; } break; } default: value = NULL; break; } return value; }
static Internal_ *Get(JSContextRef context, JSObjectRef object) { _assert(JSValueIsObjectOfClass(context, object, Class_)); return static_cast<Internal_ *>(JSObjectGetPrivate(object)); }
JSValueRef JSCInt16Array::setCallback(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObj, size_t argumentCount, const JSValueRef* arguments, JSValueRef* exception) { struct JSCInt16ArrayPrivate* privData = (struct JSCInt16ArrayPrivate*)JSObjectGetPrivate(thisObj); if (false) { } else if (argumentCount == 2 && JSValueIsObject(ctx, arguments[0]) && JSValueIsObjectOfClass(ctx, arguments[0], JSCInt16Array::getTmpl()) && JSValueIsNumber(ctx, arguments[1])) { uscxml::Int16Array* localArray = ((struct JSCInt16Array::JSCInt16ArrayPrivate*)JSObjectGetPrivate(JSValueToObject(ctx, arguments[0], exception)))->nativeObj; unsigned long localOffset = (unsigned long)JSValueToNumber(ctx, arguments[1], exception); privData->nativeObj->set(localArray, localOffset); JSValueRef jscRetVal = JSValueMakeUndefined(ctx); return jscRetVal; } else if (argumentCount == 2 && JSValueIsNumber(ctx, arguments[0]) && JSValueIsNumber(ctx, arguments[1])) { unsigned long localIndex = (unsigned long)JSValueToNumber(ctx, arguments[0], exception); short localValue = (short)JSValueToNumber(ctx, arguments[1], exception); privData->nativeObj->set(localIndex, localValue); JSValueRef jscRetVal = JSValueMakeUndefined(ctx); return jscRetVal; } else if (argumentCount == 2 && JSValueIsObject(ctx, arguments[0]) && JSValueIsNumber(ctx, arguments[1])) { std::vector<short> localArray; JSValueRef localArrayItem; unsigned int localArrayIndex = 0; while((localArrayItem = JSObjectGetPropertyAtIndex(ctx, JSValueToObject(ctx, arguments[0], exception), localArrayIndex, exception))) { if (JSValueIsUndefined(ctx, localArrayItem)) break; if (JSValueIsNumber(ctx,localArrayItem)) localArray.push_back(JSValueToNumber(ctx, localArrayItem, exception)); localArrayIndex++; } unsigned long localOffset = (unsigned long)JSValueToNumber(ctx, arguments[1], exception); privData->nativeObj->set(localArray, localOffset); JSValueRef jscRetVal = JSValueMakeUndefined(ctx); return jscRetVal; } else if (argumentCount == 1 && JSValueIsObject(ctx, arguments[0]) && JSValueIsObjectOfClass(ctx, arguments[0], JSCInt16Array::getTmpl())) { uscxml::Int16Array* localArray = ((struct JSCInt16Array::JSCInt16ArrayPrivate*)JSObjectGetPrivate(JSValueToObject(ctx, arguments[0], exception)))->nativeObj; privData->nativeObj->set(localArray); JSValueRef jscRetVal = JSValueMakeUndefined(ctx); return jscRetVal; } else if (argumentCount == 1 && JSValueIsObject(ctx, arguments[0])) { std::vector<short> localArray; JSValueRef localArrayItem; unsigned int localArrayIndex = 0; while((localArrayItem = JSObjectGetPropertyAtIndex(ctx, JSValueToObject(ctx, arguments[0], exception), localArrayIndex, exception))) { if (JSValueIsUndefined(ctx, localArrayItem)) break; if (JSValueIsNumber(ctx,localArrayItem)) localArray.push_back(JSValueToNumber(ctx, localArrayItem, exception)); localArrayIndex++; } privData->nativeObj->set(localArray); JSValueRef jscRetVal = JSValueMakeUndefined(ctx); return jscRetVal; } JSStringRef exceptionString = JSStringCreateWithUTF8CString("Parameter mismatch while calling set"); *exception = JSValueMakeString(ctx, exceptionString); JSStringRelease(exceptionString); return JSValueMakeUndefined(ctx); }
JSObjectRef JSCInt16Array::jsConstructor(JSContextRef ctx, JSObjectRef constructor, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { uscxml::Int16Array* localInstance = NULL; if (false) { } else if (argumentCount == 3 && JSValueIsObject(ctx, arguments[0]) && JSValueIsObjectOfClass(ctx, arguments[0], JSCArrayBuffer::getTmpl()) && JSValueIsNumber(ctx, arguments[1]) && JSValueIsNumber(ctx, arguments[2])) { uscxml::ArrayBuffer* localBuffer = ((struct JSCArrayBuffer::JSCArrayBufferPrivate*)JSObjectGetPrivate(JSValueToObject(ctx, arguments[0], exception)))->nativeObj; unsigned long localByteOffset = (unsigned long)JSValueToNumber(ctx, arguments[1], exception); unsigned long localLength = (unsigned long)JSValueToNumber(ctx, arguments[2], exception); localInstance = new uscxml::Int16Array(localBuffer, localByteOffset, localLength); } else if (argumentCount == 2 && JSValueIsObject(ctx, arguments[0]) && JSValueIsObjectOfClass(ctx, arguments[0], JSCArrayBuffer::getTmpl()) && JSValueIsNumber(ctx, arguments[1])) { uscxml::ArrayBuffer* localBuffer = ((struct JSCArrayBuffer::JSCArrayBufferPrivate*)JSObjectGetPrivate(JSValueToObject(ctx, arguments[0], exception)))->nativeObj; unsigned long localByteOffset = (unsigned long)JSValueToNumber(ctx, arguments[1], exception); localInstance = new uscxml::Int16Array(localBuffer, localByteOffset); } else if (argumentCount == 1 && JSValueIsObject(ctx, arguments[0]) && JSValueIsObjectOfClass(ctx, arguments[0], JSCInt16Array::getTmpl())) { uscxml::Int16Array* localArray = ((struct JSCInt16Array::JSCInt16ArrayPrivate*)JSObjectGetPrivate(JSValueToObject(ctx, arguments[0], exception)))->nativeObj; localInstance = new uscxml::Int16Array(localArray); } else if (argumentCount == 1 && JSValueIsObject(ctx, arguments[0]) && JSValueIsObjectOfClass(ctx, arguments[0], JSCArrayBuffer::getTmpl())) { uscxml::ArrayBuffer* localBuffer = ((struct JSCArrayBuffer::JSCArrayBufferPrivate*)JSObjectGetPrivate(JSValueToObject(ctx, arguments[0], exception)))->nativeObj; localInstance = new uscxml::Int16Array(localBuffer); } else if (argumentCount == 1 && JSValueIsNumber(ctx, arguments[0])) { unsigned long localLength = (unsigned long)JSValueToNumber(ctx, arguments[0], exception); localInstance = new uscxml::Int16Array(localLength); } else if (argumentCount == 1 && JSValueIsObject(ctx, arguments[0])) { std::vector<short> localArray; JSValueRef localArrayItem; unsigned int localArrayIndex = 0; while((localArrayItem = JSObjectGetPropertyAtIndex(ctx, JSValueToObject(ctx, arguments[0], exception), localArrayIndex, exception))) { if (JSValueIsUndefined(ctx, localArrayItem)) break; if (JSValueIsNumber(ctx,localArrayItem)) localArray.push_back(JSValueToNumber(ctx, localArrayItem, exception)); localArrayIndex++; } localInstance = new uscxml::Int16Array(localArray); } if (!localInstance) { JSStringRef exceptionString = JSStringCreateWithUTF8CString("Parameter mismatch while calling constructor for Int16Array"); *exception = JSValueMakeString(ctx, exceptionString); JSStringRelease(exceptionString); return (JSObjectRef)JSValueMakeNull(ctx); } JSClassRef retClass = JSCInt16Array::getTmpl(); struct JSCInt16Array::JSCInt16ArrayPrivate* retPrivData = new JSCInt16Array::JSCInt16ArrayPrivate(); retPrivData->nativeObj = localInstance; JSObjectRef retObj = JSObjectMake(ctx, retClass, retPrivData); return retObj; }