📄 sbjsifuncs.cpp
字号:
* @param expr [IN] Expression to be assigned * * @result VXIjsiResult 0 on success */ extern "C" VXIjsiResult SBjsiSetVarExpr(VXIjsiInterface *pThis, VXIjsiContext *context, const VXIchar *name, const VXIchar *expr) { static const wchar_t func[] = L"SBjsiSetVarExpr"; GET_SBJSI (pThis, context, rc); context->jsiContext->Diag (SBJSI_LOG_API, func, L"entering: 0x%p, '%s', '%s'", context, name, expr); rc = context->jsiContext->SetVar (name, expr); context->jsiContext->Diag (SBJSI_LOG_API, func, L"exiting: returned %d", rc); return rc; } /** * Set a script variable to a value relative to the current scope * * @param context [IN] JavaScript context to set the variable within * @param name [IN] Name of the variable to set * @param value [IN] VXIValue based value to be assigned. VXIMap is * used to pass JavaScript objects. * * @result VXIjsiResult 0 on success */ extern "C" VXIjsiResult SBjsiSetVarValue(VXIjsiInterface *pThis, VXIjsiContext *context, const VXIchar *name, const VXIValue *value) { static const wchar_t func[] = L"SBjsiSetVarValue"; GET_SBJSI (pThis, context, rc); context->jsiContext->Diag (SBJSI_LOG_API, func, L"entering: 0x%p, '%s', 0x%p", context, name, value); rc = context->jsiContext->SetVar (name, value); context->jsiContext->Diag (SBJSI_LOG_API, func, L"exiting: returned %d", rc); return rc; } /** * Get the value of a variable * * @param context [IN] JavaScript context to get the variable from * @param name [IN] Name of the variable to get * @param value [OUT] Value of the variable, returned as the VXI * type that most closely matches the variable's * JavaScript type. This function allocates this * for return on success (returns a NULL pointer * otherwise), the caller is responsible for * destroying it via VXIValueDestroy( ). VXIMap * is used to return JavaScript objects. * * @result VXIjsiResult 0 on success, VXIjsi_RESULT_FAILURE if the * variable has a JavaScript value of Null, * VXIjsi_RESULT_NON_FATAL_ERROR if the variable is not * defined (JavaScript Undefined), or another error code for * severe errors */ extern "C" VXIjsiResult SBjsiGetVar(VXIjsiInterface *pThis, const VXIjsiContext *context, const VXIchar *name, VXIValue **value) { static const wchar_t func[] = L"SBjsiGetVar"; GET_SBJSI (pThis, context, rc); context->jsiContext->Diag (SBJSI_LOG_API, func, L"entering: 0x%p, '%s', 0x%p", context, name, value); rc = context->jsiContext->GetVar (name, value); context->jsiContext->Diag (SBJSI_LOG_API, func, L"exiting: returned %d, 0x%p (0x%p)", rc, value, (value ? *value : NULL)); return rc; } /** * Check whether a variable is defined (not JavaScript Undefined) * * NOTE: A variable with a JavaScript Null value is considered defined * * @param context [IN] JavaScript context to check the variable in * @param name [IN] Name of the variable to check * * @result VXIjsiResult 0 on success (variable is defined), * VXIjsi_RESULT_FAILURE if the variable is not defined, * or another error code for severe errors */ extern "C" VXIjsiResult SBjsiCheckVar(VXIjsiInterface *pThis, const VXIjsiContext *context, const VXIchar *name) { static const wchar_t func[] = L"SBjsiCheckVar"; GET_SBJSI (pThis, context, rc); context->jsiContext->Diag (SBJSI_LOG_API, func, L"entering: 0x%p, '%s'", context, name); rc = context->jsiContext->CheckVar (name); context->jsiContext->Diag (SBJSI_LOG_API, func, L"exiting: returned %d", rc); return rc; } /** * set a script variable read-only to the current scope * * @param context [IN] ECMAScript context in which the variable * has been created * @param name [IN] Name of the variable to set as read only. * * @return VXIjsi_RESULT_SUCCESS on success */ extern "C" VXIjsiResult SBjsiSetReadOnly(struct VXIjsiInterface *pThis, VXIjsiContext *context, const VXIchar *name) { static const wchar_t func[] = L"SBjsiSetReadOnly"; GET_SBJSI (pThis, context, rc); context->jsiContext->Diag (SBJSI_LOG_API, func, L"entering: 0x%p, '%s'", context, name); rc = context->jsiContext->SetReadOnly(name); context->jsiContext->Diag (SBJSI_LOG_API, func, L"exiting: returned %d", rc); return rc; } /** * Execute a script, optionally returning any execution result * * @param context [IN] JavaScript context to execute within * @param expr [IN] Buffer containing the script text * @param value [OUT] Result of the script execution, returned * as the VXI type that most closely matches * the variable's JavaScript type. Pass NULL * if the result is not desired. Otherwise * this function allocates this for return on * success when there is a return value (returns * a NULL pointer otherwise), the caller is * responsible for destroying it via * VXIValueDestroy( ). VXIMap is used to return * JavaScript objects. * * @result VXIjsiResult 0 on success */ extern "C" VXIjsiResult SBjsiEval(VXIjsiInterface *pThis, VXIjsiContext *context, const VXIchar *expr, VXIValue **result) { static const wchar_t func[] = L"SBjsiEval"; GET_SBJSI (pThis, context, rc); context->jsiContext->Diag (SBJSI_LOG_API, func, L"entering: 0x%p, '%s', 0x%p", context, expr, result); rc = context->jsiContext->Eval (expr, result); context->jsiContext->Diag (SBJSI_LOG_API, func, L"exiting: returned %d, 0x%p (0x%p)", rc, result, (result ? *result : NULL)); return rc; } /** * Push a new context onto the scope chain (add a nested scope) * @param context [IN] JavaScript context to push the scope onto * @param name [IN] Name of the scope, used to permit referencing * variables from an explicit scope within the * scope chain, such as "myscope.myvar" to access * "myvar" within a scope named "myscope" * * @result VXIjsiResult 0 on success */ extern "C" VXIjsiResult SBjsiPushScope(VXIjsiInterface *pThis, VXIjsiContext *context, const VXIchar *name, const VXIjsiScopeAttr attr) { static const wchar_t func[] = L"SBjsiPushScope"; GET_SBJSI (pThis, context, rc); context->jsiContext->Diag (SBJSI_LOG_API, func, L"entering: 0x%p, '%s'", context, name); rc = context->jsiContext->PushScope (name, attr); context->jsiContext->Diag (SBJSI_LOG_API, func, L"exiting: returned %d", rc); return rc; } /** * Pop a context from the scope chain (remove a nested scope) * * @param context [IN] JavaScript context to pop the scope from * * @result VXIjsiResult 0 on success */ extern "C" VXIjsiResult SBjsiPopScope(VXIjsiInterface *pThis, VXIjsiContext *context) { static const wchar_t func[] = L"SBjsiPopScope"; GET_SBJSI (pThis, context, rc); context->jsiContext->Diag (SBJSI_LOG_API, func, L"entering: 0x%p", context); rc = context->jsiContext->PopScope( ); context->jsiContext->Diag (SBJSI_LOG_API, func, L"exiting: returned %d", rc); return rc; } /** * Reset the scope chain to the global scope (pop all nested scopes) * * @param context [IN] JavaScript context to pop the scopes from * * @result VXIjsiResult 0 on success */ extern "C" VXIjsiResult SBjsiClearScopes(VXIjsiInterface *pThis, VXIjsiContext *context) { static const wchar_t func[] = L"SBjsiClearScopes"; GET_SBJSI (pThis, context, rc); context->jsiContext->Diag (SBJSI_LOG_API, func, L"entering: 0x%p", context); rc = context->jsiContext->ClearScopes( ); context->jsiContext->Diag (SBJSI_LOG_API, func, L"exiting: returned %d", rc); return rc; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -