Exemplo n.º 1
0
JsValueRef CALLBACK addEventListener(JsValueRef callee, bool isConstructCall, JsValueRef *arguments, unsigned short argumentCount, void *callbackState) {
	JsValueRef result;

	JsValueType arg1, arg2;
	JsGetValueType(arguments[1], &arg1);
	JsGetValueType(arguments[2], &arg2);
	if (arg1 != JsString || arg2 != JsFunction) {
		JsGetFalseValue(&result);
		return result;
	}

	const wchar_t* stringValue;
	size_t length;
	JsStringToPointer(arguments[1], &stringValue, &length);
	wstring type(stringValue);

	if (type == L"main") {
		queue<Task*> * taskQueue = (queue<Task*> *)callbackState;
		taskQueue->push(new Task(arguments[2], true));
		JsGetTrueValue(&result);
	}
	else {
		JsGetFalseValue(&result);
	}

	return result;
}
JsErrorCode StringifyJsValue(JsValueRef value, USHORT depth, std::set<JsValueRef> seen)
{
    JsValueType type;
    IfFailRet(JsGetValueType(value, &type));

    switch (type)
    {
    case JsUndefined:
        OutputDebugStringW(L"undefined");
        break;
    case JsNull:
        OutputDebugStringW(L"null");
        break;
    case JsBoolean:
        IfFailRet(StringifyJsBoolean(value));
        break;
    case JsString:
        IfFailRet(StringifyJsString(value));
        break;
    case JsObject:
        IfFailRet(StringifyJsObject(value, depth, seen));
        break;
    case JsFunction:
        IfFailRet(StringifyJsFunction(value));
        break;
    case JsTypedArray:
        IfFailRet(StringifyJsTypedArray(value));
        break;
    case JsArray:
        IfFailRet(StringifyJsArray(value, depth, seen));
        break;
    case JsError:
    case JsNumber:
    case JsSymbol:
    case JsArrayBuffer:
        IfFailRet(StringifyToString(value));
        break;
    }

    return JsNoError;
}
Exemplo n.º 3
0
		BC_PLATFORMIMP_DLL
		core::bc_wstring bc_platform_script_error<core_platform::g_api_win32>::error_message() const
		{
			bc_chakra_call l_call;
			JsValueRef l_message_property;
			JsPropertyIdRef l_message_id;
			JsValueType l_message_type;

			l_call = JsGetPropertyIdFromName(L"message", &l_message_id);
			l_call = JsGetProperty(m_pack.m_js_error, l_message_id, &l_message_property);

			if(!l_call.successed())
			{
				l_call.clear();
				return L"";
			}

			JsGetValueType(l_message_property, &l_message_type);

			if(l_message_type != JsString)
			{
				return L"";
			}

			bcSIZE l_str_lenght;
			const bcWCHAR* l_str_data;

			l_call = JsStringToPointer(l_message_property, &l_str_data, &l_str_lenght);

			if(!l_call.successed())
			{
				l_call.clear();
				return L"";
			}

			return core::bc_wstring(l_str_data);
		}