本文整理汇总了C++中JSValueMakeUndefined函数的典型用法代码示例。如果您正苦于以下问题:C++ JSValueMakeUndefined函数的具体用法?C++ JSValueMakeUndefined怎么用?C++ JSValueMakeUndefined使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了JSValueMakeUndefined函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: keyDownCallback
static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
if (argumentCount < 1)
return JSValueMakeUndefined(context);
static const JSStringRef lengthProperty = JSStringCreateWithUTF8CString("length");
webkit_web_frame_layout(mainFrame);
// handle modifier keys.
int state = 0;
if (argumentCount > 1) {
JSObjectRef modifiersArray = JSValueToObject(context, arguments[1], exception);
if (modifiersArray) {
for (int i = 0; i < JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, lengthProperty, 0), 0); ++i) {
JSValueRef value = JSObjectGetPropertyAtIndex(context, modifiersArray, i, 0);
JSStringRef string = JSValueToStringCopy(context, value, 0);
if (JSStringIsEqualToUTF8CString(string, "ctrlKey"))
state |= GDK_CONTROL_MASK;
else if (JSStringIsEqualToUTF8CString(string, "shiftKey"))
state |= GDK_SHIFT_MASK;
else if (JSStringIsEqualToUTF8CString(string, "altKey"))
state |= GDK_MOD1_MASK;
JSStringRelease(string);
}
}
}
// handle location argument.
int location = DOM_KEY_LOCATION_STANDARD;
if (argumentCount > 2)
location = (int)JSValueToNumber(context, arguments[2], exception);
JSStringRef character = JSValueToStringCopy(context, arguments[0], exception);
g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
int gdkKeySym = GDK_VoidSymbol;
if (location == DOM_KEY_LOCATION_NUMPAD) {
if (JSStringIsEqualToUTF8CString(character, "leftArrow"))
gdkKeySym = GDK_KP_Left;
else if (JSStringIsEqualToUTF8CString(character, "rightArrow"))
gdkKeySym = GDK_KP_Right;
else if (JSStringIsEqualToUTF8CString(character, "upArrow"))
gdkKeySym = GDK_KP_Up;
else if (JSStringIsEqualToUTF8CString(character, "downArrow"))
gdkKeySym = GDK_KP_Down;
else if (JSStringIsEqualToUTF8CString(character, "pageUp"))
gdkKeySym = GDK_KP_Page_Up;
else if (JSStringIsEqualToUTF8CString(character, "pageDown"))
gdkKeySym = GDK_KP_Page_Down;
else if (JSStringIsEqualToUTF8CString(character, "home"))
gdkKeySym = GDK_KP_Home;
else if (JSStringIsEqualToUTF8CString(character, "end"))
gdkKeySym = GDK_KP_End;
else
// Assume we only get arrow/pgUp/pgDn/home/end keys with
// location=NUMPAD for now.
g_assert_not_reached();
} else {
if (JSStringIsEqualToUTF8CString(character, "leftArrow"))
gdkKeySym = GDK_Left;
else if (JSStringIsEqualToUTF8CString(character, "rightArrow"))
gdkKeySym = GDK_Right;
else if (JSStringIsEqualToUTF8CString(character, "upArrow"))
gdkKeySym = GDK_Up;
else if (JSStringIsEqualToUTF8CString(character, "downArrow"))
gdkKeySym = GDK_Down;
else if (JSStringIsEqualToUTF8CString(character, "pageUp"))
gdkKeySym = GDK_Page_Up;
else if (JSStringIsEqualToUTF8CString(character, "pageDown"))
gdkKeySym = GDK_Page_Down;
else if (JSStringIsEqualToUTF8CString(character, "home"))
gdkKeySym = GDK_Home;
else if (JSStringIsEqualToUTF8CString(character, "end"))
gdkKeySym = GDK_End;
else if (JSStringIsEqualToUTF8CString(character, "delete"))
gdkKeySym = GDK_BackSpace;
else if (JSStringIsEqualToUTF8CString(character, "F1"))
gdkKeySym = GDK_F1;
else if (JSStringIsEqualToUTF8CString(character, "F2"))
gdkKeySym = GDK_F2;
else if (JSStringIsEqualToUTF8CString(character, "F3"))
gdkKeySym = GDK_F3;
else if (JSStringIsEqualToUTF8CString(character, "F4"))
gdkKeySym = GDK_F4;
else if (JSStringIsEqualToUTF8CString(character, "F5"))
gdkKeySym = GDK_F5;
else if (JSStringIsEqualToUTF8CString(character, "F6"))
gdkKeySym = GDK_F6;
else if (JSStringIsEqualToUTF8CString(character, "F7"))
gdkKeySym = GDK_F7;
else if (JSStringIsEqualToUTF8CString(character, "F8"))
gdkKeySym = GDK_F8;
else if (JSStringIsEqualToUTF8CString(character, "F9"))
gdkKeySym = GDK_F9;
else if (JSStringIsEqualToUTF8CString(character, "F10"))
gdkKeySym = GDK_F10;
else if (JSStringIsEqualToUTF8CString(character, "F11"))
gdkKeySym = GDK_F11;
else if (JSStringIsEqualToUTF8CString(character, "F12"))
//.........这里部分代码省略.........
示例2: JSValueMakeUndefined
JSValueRef LayoutTestController::originsWithApplicationCache(JSContextRef context)
{
// FIXME: Implement to get origins that contain application caches.
return JSValueMakeUndefined(context);
}
示例3: keyDownCallback
static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
if (argumentCount < 1)
return JSValueMakeUndefined(context);
static const JSStringRef lengthProperty = JSStringCreateWithUTF8CString("length");
COMPtr<IWebFramePrivate> framePrivate;
if (SUCCEEDED(frame->QueryInterface(&framePrivate)))
framePrivate->layout();
JSStringRef character = JSValueToStringCopy(context, arguments[0], exception);
ASSERT(!*exception);
int virtualKeyCode;
int charCode = 0;
int keyData = 1;
bool needsShiftKeyModifier = false;
if (JSStringIsEqualToUTF8CString(character, "leftArrow")) {
virtualKeyCode = VK_LEFT;
keyData += KF_EXTENDED << 16; // In this case, extended means "not keypad".
} else if (JSStringIsEqualToUTF8CString(character, "rightArrow")) {
virtualKeyCode = VK_RIGHT;
keyData += KF_EXTENDED << 16;
} else if (JSStringIsEqualToUTF8CString(character, "upArrow")) {
virtualKeyCode = VK_UP;
keyData += KF_EXTENDED << 16;
} else if (JSStringIsEqualToUTF8CString(character, "downArrow")) {
virtualKeyCode = VK_DOWN;
keyData += KF_EXTENDED << 16;
} else if (JSStringIsEqualToUTF8CString(character, "pageUp"))
virtualKeyCode = VK_PRIOR;
else if (JSStringIsEqualToUTF8CString(character, "pageDown"))
virtualKeyCode = VK_NEXT;
else if (JSStringIsEqualToUTF8CString(character, "home"))
virtualKeyCode = VK_HOME;
else if (JSStringIsEqualToUTF8CString(character, "end"))
virtualKeyCode = VK_END;
else if (JSStringIsEqualToUTF8CString(character, "insert"))
virtualKeyCode = VK_INSERT;
else if (JSStringIsEqualToUTF8CString(character, "delete"))
virtualKeyCode = VK_DELETE;
else if (JSStringIsEqualToUTF8CString(character, "printScreen"))
virtualKeyCode = VK_SNAPSHOT;
else if (JSStringIsEqualToUTF8CString(character, "menu"))
virtualKeyCode = VK_APPS;
else if (JSStringIsEqualToUTF8CString(character, "leftControl"))
virtualKeyCode = VK_LCONTROL;
else if (JSStringIsEqualToUTF8CString(character, "leftShift"))
virtualKeyCode = VK_LSHIFT;
else if (JSStringIsEqualToUTF8CString(character, "leftAlt"))
virtualKeyCode = VK_LMENU;
else if (JSStringIsEqualToUTF8CString(character, "rightControl"))
virtualKeyCode = VK_RCONTROL;
else if (JSStringIsEqualToUTF8CString(character, "rightShift"))
virtualKeyCode = VK_RSHIFT;
else if (JSStringIsEqualToUTF8CString(character, "rightAlt"))
virtualKeyCode = VK_RMENU;
else {
charCode = JSStringGetCharactersPtr(character)[0];
virtualKeyCode = LOBYTE(VkKeyScan(charCode));
if (WTF::isASCIIUpper(charCode))
needsShiftKeyModifier = true;
}
JSStringRelease(character);
BYTE keyState[256];
if (argumentCount > 1 || needsShiftKeyModifier) {
::GetKeyboardState(keyState);
BYTE newKeyState[256];
memcpy(newKeyState, keyState, sizeof(keyState));
if (needsShiftKeyModifier)
newKeyState[VK_SHIFT] = 0x80;
if (argumentCount > 1) {
JSObjectRef modifiersArray = JSValueToObject(context, arguments[1], 0);
if (modifiersArray) {
int modifiersCount = JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, lengthProperty, 0), 0);
for (int i = 0; i < modifiersCount; ++i) {
JSValueRef value = JSObjectGetPropertyAtIndex(context, modifiersArray, i, 0);
JSStringRef string = JSValueToStringCopy(context, value, 0);
if (JSStringIsEqualToUTF8CString(string, "ctrlKey") || JSStringIsEqualToUTF8CString(string, "addSelectionKey"))
newKeyState[VK_CONTROL] = 0x80;
else if (JSStringIsEqualToUTF8CString(string, "shiftKey") || JSStringIsEqualToUTF8CString(string, "rangeSelectionKey"))
newKeyState[VK_SHIFT] = 0x80;
else if (JSStringIsEqualToUTF8CString(string, "altKey"))
newKeyState[VK_MENU] = 0x80;
JSStringRelease(string);
}
}
}
::SetKeyboardState(newKeyState);
}
MSG msg = makeMsg(webViewWindow, (::GetKeyState(VK_MENU) & 0x8000) ? WM_SYSKEYDOWN : WM_KEYDOWN, virtualKeyCode, keyData);
if (virtualKeyCode != 255)
dispatchMessage(&msg);
//.........这里部分代码省略.........
示例4: main
int main(int argc, char* argv[])
{
const char *scriptPath = "testapi.js";
if (argc > 1) {
scriptPath = argv[1];
}
// Test garbage collection with a fresh context
context = JSGlobalContextCreateInGroup(NULL, NULL);
TestInitializeFinalize = true;
testInitializeFinalize();
JSGlobalContextRelease(context);
TestInitializeFinalize = false;
ASSERT(Base_didFinalize);
JSClassDefinition globalObjectClassDefinition = kJSClassDefinitionEmpty;
globalObjectClassDefinition.initialize = globalObject_initialize;
globalObjectClassDefinition.staticValues = globalObject_staticValues;
globalObjectClassDefinition.staticFunctions = globalObject_staticFunctions;
globalObjectClassDefinition.attributes = kJSClassAttributeNoAutomaticPrototype;
JSClassRef globalObjectClass = JSClassCreate(&globalObjectClassDefinition);
context = JSGlobalContextCreateInGroup(NULL, globalObjectClass);
JSGlobalContextRetain(context);
JSGlobalContextRelease(context);
JSObjectRef globalObject = JSContextGetGlobalObject(context);
ASSERT(JSValueIsObject(context, globalObject));
JSValueRef jsUndefined = JSValueMakeUndefined(context);
JSValueRef jsNull = JSValueMakeNull(context);
JSValueRef jsTrue = JSValueMakeBoolean(context, true);
JSValueRef jsFalse = JSValueMakeBoolean(context, false);
JSValueRef jsZero = JSValueMakeNumber(context, 0);
JSValueRef jsOne = JSValueMakeNumber(context, 1);
JSValueRef jsOneThird = JSValueMakeNumber(context, 1.0 / 3.0);
JSObjectRef jsObjectNoProto = JSObjectMake(context, NULL, NULL);
JSObjectSetPrototype(context, jsObjectNoProto, JSValueMakeNull(context));
// FIXME: test funny utf8 characters
JSStringRef jsEmptyIString = JSStringCreateWithUTF8CString("");
JSValueRef jsEmptyString = JSValueMakeString(context, jsEmptyIString);
JSStringRef jsOneIString = JSStringCreateWithUTF8CString("1");
JSValueRef jsOneString = JSValueMakeString(context, jsOneIString);
UniChar singleUniChar = 65; // Capital A
CFMutableStringRef cfString =
CFStringCreateMutableWithExternalCharactersNoCopy(kCFAllocatorDefault,
&singleUniChar,
1,
1,
kCFAllocatorNull);
JSStringRef jsCFIString = JSStringCreateWithCFString(cfString);
JSValueRef jsCFString = JSValueMakeString(context, jsCFIString);
CFStringRef cfEmptyString = CFStringCreateWithCString(kCFAllocatorDefault, "", kCFStringEncodingUTF8);
JSStringRef jsCFEmptyIString = JSStringCreateWithCFString(cfEmptyString);
JSValueRef jsCFEmptyString = JSValueMakeString(context, jsCFEmptyIString);
CFIndex cfStringLength = CFStringGetLength(cfString);
UniChar* buffer = (UniChar*)malloc(cfStringLength * sizeof(UniChar));
CFStringGetCharacters(cfString,
CFRangeMake(0, cfStringLength),
buffer);
JSStringRef jsCFIStringWithCharacters = JSStringCreateWithCharacters((JSChar*)buffer, cfStringLength);
JSValueRef jsCFStringWithCharacters = JSValueMakeString(context, jsCFIStringWithCharacters);
JSStringRef jsCFEmptyIStringWithCharacters = JSStringCreateWithCharacters((JSChar*)buffer, CFStringGetLength(cfEmptyString));
free(buffer);
JSValueRef jsCFEmptyStringWithCharacters = JSValueMakeString(context, jsCFEmptyIStringWithCharacters);
ASSERT(JSValueGetType(context, jsUndefined) == kJSTypeUndefined);
ASSERT(JSValueGetType(context, jsNull) == kJSTypeNull);
ASSERT(JSValueGetType(context, jsTrue) == kJSTypeBoolean);
ASSERT(JSValueGetType(context, jsFalse) == kJSTypeBoolean);
ASSERT(JSValueGetType(context, jsZero) == kJSTypeNumber);
ASSERT(JSValueGetType(context, jsOne) == kJSTypeNumber);
ASSERT(JSValueGetType(context, jsOneThird) == kJSTypeNumber);
ASSERT(JSValueGetType(context, jsEmptyString) == kJSTypeString);
ASSERT(JSValueGetType(context, jsOneString) == kJSTypeString);
ASSERT(JSValueGetType(context, jsCFString) == kJSTypeString);
ASSERT(JSValueGetType(context, jsCFStringWithCharacters) == kJSTypeString);
ASSERT(JSValueGetType(context, jsCFEmptyString) == kJSTypeString);
ASSERT(JSValueGetType(context, jsCFEmptyStringWithCharacters) == kJSTypeString);
JSObjectRef myObject = JSObjectMake(context, MyObject_class(context), NULL);
JSStringRef myObjectIString = JSStringCreateWithUTF8CString("MyObject");
JSObjectSetProperty(context, globalObject, myObjectIString, myObject, kJSPropertyAttributeNone, NULL);
JSStringRelease(myObjectIString);
JSValueRef exception;
// Conversions that throw exceptions
exception = NULL;
ASSERT(NULL == JSValueToObject(context, jsNull, &exception));
ASSERT(exception);
//.........这里部分代码省略.........
示例5: if
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);
}
示例6: collectCallback
static JSValueRef collectCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
GCController* controller = static_cast<GCController*>(JSObjectGetPrivate(thisObject));
controller->collect();
return JSValueMakeUndefined(context);
}
示例7: logAccessibilityEventsCallback
static JSValueRef logAccessibilityEventsCallback(JSContextRef ctx, JSObjectRef, JSObjectRef thisObject, size_t, const JSValueRef[], JSValueRef*)
{
AccessibilityController* controller = static_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject));
controller->setLogAccessibilityEvents(true);
return JSValueMakeUndefined(ctx);
}
示例8: keyDownCallback
static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
if (argumentCount < 1)
return JSValueMakeUndefined(context);
static JSStringRef ctrlKey = JSStringCreateWithUTF8CString("ctrlKey");
static JSStringRef shiftKey = JSStringCreateWithUTF8CString("shiftKey");
static JSStringRef altKey = JSStringCreateWithUTF8CString("altKey");
static JSStringRef metaKey = JSStringCreateWithUTF8CString("metaKey");
static JSStringRef lengthProperty = JSStringCreateWithUTF8CString("length");
COMPtr<IWebFramePrivate> framePrivate;
if (SUCCEEDED(frame->QueryInterface(&framePrivate)))
framePrivate->layout();
JSStringRef character = JSValueToStringCopy(context, arguments[0], exception);
ASSERT(!exception || !*exception);
int charCode = JSStringGetCharactersPtr(character)[0];
int virtualKeyCode = toupper(LOBYTE(VkKeyScan(charCode)));
JSStringRelease(character);
// Hack to map option-delete to ctrl-delete
// Remove this when we fix <rdar://problem/5102974> layout tests need a way to decide how to choose the appropriate modifier keys
bool convertOptionToCtrl = false;
if (virtualKeyCode == VK_DELETE || virtualKeyCode == VK_BACK)
convertOptionToCtrl = true;
BYTE keyState[256];
if (argumentCount > 1) {
::GetKeyboardState(keyState);
BYTE newKeyState[256];
memcpy(newKeyState, keyState, sizeof(keyState));
JSObjectRef modifiersArray = JSValueToObject(context, arguments[1], exception);
if (modifiersArray) {
int modifiersCount = JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, lengthProperty, 0), 0);
for (int i = 0; i < modifiersCount; ++i) {
JSValueRef value = JSObjectGetPropertyAtIndex(context, modifiersArray, i, 0);
JSStringRef string = JSValueToStringCopy(context, value, 0);
if (JSStringIsEqual(string, ctrlKey))
newKeyState[VK_CONTROL] = 0x80;
else if (JSStringIsEqual(string, shiftKey))
newKeyState[VK_SHIFT] = 0x80;
else if (JSStringIsEqual(string, altKey)) {
if (convertOptionToCtrl)
newKeyState[VK_CONTROL] = 0x80;
else
newKeyState[VK_MENU] = 0x80;
} else if (JSStringIsEqual(string, metaKey))
newKeyState[VK_MENU] = 0x80;
JSStringRelease(string);
}
}
::SetKeyboardState(newKeyState);
}
MSG msg = makeMsg(webViewWindow, WM_KEYDOWN, virtualKeyCode, 0);
dispatchMessage(&msg);
if (argumentCount > 1)
::SetKeyboardState(keyState);
return JSValueMakeUndefined(context);
}
示例9: removeNotificationListenerCallback
static JSValueRef removeNotificationListenerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
AccessibilityController* controller = static_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject));
controller->removeNotificationListener();
return JSValueMakeUndefined(context);
}
示例10: removeSelectionCallback
static JSValueRef removeSelectionCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
toAXElement(thisObject)->removeSelection();
return JSValueMakeUndefined(context);
}
示例11: context
jsc::Value::Value(Context &context) : context(context) {
value = JSValueMakeUndefined(context);
JSValueProtect(context, value);
}
示例12: leapForwardCallback
static JSValueRef leapForwardCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
// FIXME: Add proper support for forward leaps
return JSValueMakeUndefined(context);
}
示例13: releaseForJSBuffer
/**
* release
*/
JSValueRef releaseForJSBuffer (JSContextRef ctx, JSObjectRef function, JSObjectRef object, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
ReleaseBuffer(object);
return JSValueMakeUndefined(ctx);
}
示例14: putForJSBuffer
/**
* put
*/
JSValueRef putForJSBuffer (JSContextRef ctx, JSObjectRef function, JSObjectRef object, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
BUFFER(buffer);
ARGCOUNT(4);
JSValueRef bufValueRef = arguments[0];
if (!JSValueIsObject(ctx,bufValueRef))
{
JSStringRef string = JSStringCreateWithUTF8CString("first argument must be a buffer object");
JSValueRef message = JSValueMakeString(ctx, string);
JSStringRelease(string);
*exception = JSObjectMakeError(ctx, 1, &message, 0);
return JSValueMakeUndefined(ctx);
}
JSObjectRef bufObjectRef = JSValueToObject(ctx,bufValueRef,exception);
CHECK_EXCEPTION_UNDEFINED
JSBuffer *srcBuffer = (JSBuffer*)HyperloopGetPrivateObjectAsJSBuffer(bufObjectRef);
if (srcBuffer==nullptr)
{
JSStringRef string = JSStringCreateWithUTF8CString("first argument must be a buffer object (JSBuffer nullptr)");
JSValueRef message = JSValueMakeString(ctx, string);
JSStringRelease(string);
*exception = JSObjectMakeError(ctx, 1, &message, 0);
return JSValueMakeUndefined(ctx);
}
GET_NUMBER(1,srcIndex);
GET_NUMBER(2,srcLength);
GET_NUMBER(3,destIndex);
if (srcLength > srcBuffer->length)
{
JSStringRef string = JSStringCreateWithUTF8CString("source length passed in greater than source buffer length");
JSValueRef message = JSValueMakeString(ctx, string);
JSStringRelease(string);
*exception = JSObjectMakeError(ctx, 1, &message, 0);
return JSValueMakeUndefined(ctx);
}
if (srcLength <= 0)
{
JSStringRef string = JSStringCreateWithUTF8CString("source length must be greater than 0");
JSValueRef message = JSValueMakeString(ctx, string);
JSStringRelease(string);
*exception = JSObjectMakeError(ctx, 1, &message, 0);
return JSValueMakeUndefined(ctx);
}
throw ref new Exception(0, "JSBuffer's putForJSBuffer has not been implemented on Windows yet.");
/*void *src = &(srcBuffer->buffer[(int)srcIndex]);
size_t newsize = (buffer->length - (int)destIndex);
newsize = newsize + srcLength - newsize;
void *dest = &(buffer->buffer[(int)destIndex]);
if (newsize > buffer->length)
{
// new to grow it
void *copy = malloc(buffer->length);
size_t copylen = buffer->length;
memcpy(copy, buffer->buffer, copylen);
free(buffer->buffer);
buffer->buffer = malloc(newsize);
buffer->length = newsize;
memcpy(buffer->buffer,copy,copylen);
}
memcpy(dest, src, (int)srcLength);
return object;*/
}
示例15: callMethod
static JSValueRef callMethod(JSContextRef jscore_ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef *exception)
{
pdf_jsimp *imp;
fz_context *ctx;
pdf_jsimp_obj *res = NULL;
JSValueRef resref = NULL;
int i;
pdf_jsimp_obj **args = NULL;
pdf_jsimp_method *meth = JSObjectGetPrivate(function);
priv_data *pdata = JSObjectGetPrivate(thisObject);
if (meth == NULL)
{
/*
The attempt to store the method pointer as private data failed, so we
turn the function into a string, which will have the form "function name() xxx",
and then lookup the name.
*/
char name[STRING_BUF_SIZE];
char *np;
char *bp;
JSStringRef jname = JSValueToStringCopy(jscore_ctx, function, NULL);
prop *p;
JSStringGetUTF8CString(jname, name, STRING_BUF_SIZE);
if (strlen(name) >= FUNCTION_PREAMBLE_LEN)
{
np = name + FUNCTION_PREAMBLE_LEN; /* strlen("function "); */
bp = strchr(np, '(');
if (bp)
*bp = 0;
p = find_prop(pdata->type->props, np);
if (p && p->type == PROP_FN)
{
meth = p->u.fn.meth;
}
}
JSStringRelease(jname);
}
if (meth == NULL || pdata == NULL)
return JSValueMakeUndefined(jscore_ctx);
imp = pdata->type->imp;
ctx = imp->ctx;
fz_var(args);
fz_var(res);
fz_try(ctx)
{
args = fz_malloc_array(ctx, argumentCount, sizeof(pdf_jsimp_obj));
for (i = 0; i < argumentCount; i++)
args[i] = wrap_val(imp, arguments[i]);
res = meth(imp->nat_ctx, pdata->natobj, argumentCount, args);
if (res)
resref = res->ref;
}
fz_always(ctx)
{
if (args)
{
for (i = 0; i < argumentCount; i++)
pdf_jsimp_drop_obj(imp, args[i]);
fz_free(ctx, args);
}
pdf_jsimp_drop_obj(imp, res);
}
fz_catch(ctx)
{
return JSValueMakeUndefined(jscore_ctx);
}
return resref;
}