awtk/docs/manual/fscript_t.md

264 lines
7.2 KiB
Markdown
Raw Normal View History

2020-12-08 09:04:40 +08:00
## fscript\_t
### 概述
一个简易的函数式脚本引擎。
用法请参考https://github.com/zlgopen/awtk/blob/master/docs/fscript.md
----------------------------------
### 函数
<p id="fscript_t_methods">
| 函数名称 | 说明 |
| -------- | ------------ |
2021-01-11 08:23:05 +08:00
| <a href="#fscript_t_fscript_create">fscript\_create</a> | 创建引擎对象,并解析代码。 |
2020-12-08 09:04:40 +08:00
| <a href="#fscript_t_fscript_destroy">fscript\_destroy</a> | 销毁引擎对象。 |
| <a href="#fscript_t_fscript_eval">fscript\_eval</a> | 执行一段脚本。 |
2021-01-11 08:23:05 +08:00
| <a href="#fscript_t_fscript_exec">fscript\_exec</a> | 执行解析后的代码。 |
2020-12-08 09:04:40 +08:00
| <a href="#fscript_t_fscript_global_deinit">fscript\_global\_deinit</a> | 全局释放。 |
| <a href="#fscript_t_fscript_global_init">fscript\_global\_init</a> | 全局初始化。 |
| <a href="#fscript_t_fscript_register_func">fscript\_register\_func</a> | 注册全局自定义函数。 |
2021-01-11 08:23:05 +08:00
| <a href="#fscript_t_fscript_set_error">fscript\_set\_error</a> | 用于扩展函数设置遇到的错误。 |
2021-05-11 15:53:22 +08:00
| <a href="#fscript_t_fscript_syntax_check">fscript\_syntax\_check</a> | 解析代码,分析是否有语法错误。 |
| <a href="#fscript_t_tk_expr_eval">tk\_expr\_eval</a> | 对fscript的简单包装。 |
2020-12-08 09:04:40 +08:00
### 属性
<p id="fscript_t_properties">
| 属性名称 | 类型 | 说明 |
| -------- | ----- | ------------ |
| <a href="#fscript_t_fast_vars">fast\_vars</a> | value\_t* | 快速访问变量。在脚本可以用a/b/c/d来访问需要优化时使用。 |
| <a href="#fscript_t_obj">obj</a> | object\_t* | 脚本执行上下文。 |
| <a href="#fscript_t_str">str</a> | str\_t | C语言实现函数可以使用这个变量可以有效避免内存分配。 |
#### fscript\_create 函数
-----------------------
* 函数功能:
2021-01-11 08:23:05 +08:00
> <p id="fscript_t_fscript_create">创建引擎对象,并解析代码。
2020-12-08 09:04:40 +08:00
* 函数原型:
```
fscript_t* fscript_create (object_t* obj, const char* script);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | fscript\_t* | 返回fscript对象。 |
| obj | object\_t* | 脚本执行上下文。 |
| script | const char* | 脚本代码。 |
#### fscript\_destroy 函数
-----------------------
* 函数功能:
> <p id="fscript_t_fscript_destroy">销毁引擎对象。
* 函数原型:
```
ret_t fscript_destroy (fscript_t* fscript);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| fscript | fscript\_t* | 脚本引擎对象。 |
#### fscript\_eval 函数
-----------------------
* 函数功能:
> <p id="fscript_t_fscript_eval">执行一段脚本。
* 函数原型:
```
ret_t fscript_eval (object_t* obj, const char* script, value_t* result);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| obj | object\_t* | 脚本执行上下文。 |
| script | const char* | 脚本代码。 |
| result | value\_t* | 执行结果(调用者需要用value\_reset函数清除result)。 |
#### fscript\_exec 函数
-----------------------
* 函数功能:
2021-01-11 08:23:05 +08:00
> <p id="fscript_t_fscript_exec">执行解析后的代码。
2020-12-08 09:04:40 +08:00
* 函数原型:
```
ret_t fscript_exec (fscript_t* fscript, value_t* result);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| fscript | fscript\_t* | 脚本引擎对象。 |
| result | value\_t* | 执行结果(调用者需要用value\_reset函数清除result)。 |
#### fscript\_global\_deinit 函数
-----------------------
* 函数功能:
> <p id="fscript_t_fscript_global_deinit">全局释放。
* 函数原型:
```
ret_t fscript_global_deinit ();
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
#### fscript\_global\_init 函数
-----------------------
* 函数功能:
> <p id="fscript_t_fscript_global_init">全局初始化。
* 函数原型:
```
ret_t fscript_global_init ();
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
#### fscript\_register\_func 函数
-----------------------
* 函数功能:
> <p id="fscript_t_fscript_register_func">注册全局自定义函数。
* 函数原型:
```
ret_t fscript_register_func (const char* name, fscript_func_t* func);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| name | const char* | 函数名(无需加函数前缀)。 |
| func | fscript\_func\_t* | 函数指针。 |
2021-01-11 08:23:05 +08:00
#### fscript\_set\_error 函数
-----------------------
* 函数功能:
> <p id="fscript_t_fscript_set_error">用于扩展函数设置遇到的错误。
* 函数原型:
```
ret_t fscript_set_error (fscript_t* fscript, ret_t code, const char* func, const char* message);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| fscript | fscript\_t* | 脚本引擎对象。 |
| code | ret\_t | 错误码。 |
| func | const char* | 函数名。 |
| message | const char* | 错误消息。 |
2021-05-11 15:53:22 +08:00
#### fscript\_syntax\_check 函数
-----------------------
* 函数功能:
> <p id="fscript_t_fscript_syntax_check">解析代码,分析是否有语法错误。
示例:
```c
fscript_parser_error_t error;
fscript_syntax_check(obj, "1+1", &error);
fscript_parser_error_deinit(&error);
```
* 函数原型:
```
ret_t fscript_syntax_check (object_t* obj, const char* script, fscript_parser_error_t* error);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| obj | object\_t* | 脚本执行上下文。 |
| script | const char* | 脚本代码。 |
| error | fscript\_parser\_error\_t* | 用于返回错误信息。 |
#### tk\_expr\_eval 函数
-----------------------
* 函数功能:
> <p id="fscript_t_tk_expr_eval">对fscript的简单包装。
* 函数原型:
```
double tk_expr_eval (const char* expr);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | double | 返回表达式的值。 |
| expr | const char* | 表达式。 |
2020-12-08 09:04:40 +08:00
#### fast\_vars 属性
-----------------------
> <p id="fscript_t_fast_vars">快速访问变量。在脚本可以用a/b/c/d来访问需要优化时使用。
* 类型value\_t*
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |
#### obj 属性
-----------------------
> <p id="fscript_t_obj">脚本执行上下文。
* 类型object\_t*
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |
#### str 属性
-----------------------
> <p id="fscript_t_str">C语言实现函数可以使用这个变量可以有效避免内存分配。
* 类型str\_t
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |