Struct pbni::Session[][src]

#[repr(transparent)]
pub struct Session { /* fields omitted */ }
Expand description

Session对象

Implementations

克隆Session对象

Safety

此方法不能延长Session对象的生命周期,因此不能保证克隆后的Session对象始终有效,生命周期将始终与此对象一样

判断是否有重启Session的请求 (在PowerScript中调用了Restart函数)

是否创建了可视化对象 (打开了顶层窗口)

处理PB消息

Notice

开启了消息循环后,需要处理PB的消息以执行PowerScript中的Post调用

检查当前是否有异常未处理

清除异常

抛出PBXRuntimeError异常

Exmaples

session.throw_exception("test");
// 使用宏
throw!(session,"this is a {}!","exception");

与Session绑定static引用参数

与Session绑定指针参数

获取Session绑定的指针参数

获取Session绑定的引用参数

Safety

引用的生命周期由调用处提供,需要开发者自行保证期有效性

获取Session绑定的可变引用参数

Safety

引用的生命周期由调用处提供,需要开发者自行保证期有效性

解绑Session参数

Notice

如果绑定的参数内存是由Box分配的,那么需要在解绑前正确释放内存

获取指定名称枚举的值,不区分大小写

Examples

// `Center!`枚举的值
session.get_enum_item_value("Aligment","Center");

获取枚举值的枚举名称,不区分大小写

Examples

let val = session.get_enum_item_value("Aligment","Center");
let name = session.get_enum_item_name("Aligment",val); //center

实例化用户自定义对象

Examples

let obj = session.new_user_object("n_cst_object");

实例化系统对象

Examples

let obj = session.new_system_object("datastore");

实例化任意PB对象 (包括用户自定义对象和系统对象)

Examples

let obj = session.new_object("n_cst_object");
let obj = session.new_object("datastore");

实例化变长标量一维数组

Parameters

  • item_type 元素标量类型

Examples

//int arr[]
let mut arr = session.new_array(ValueType::Int).unwrap();
//arr[1] = 123
arr.set_item_int(&[1],123);

实例化定长标量多维数组

Parameters

  • item_type 元素标量类型
  • dims &[(下标,上标)]

Examples

//int arr[10]
let mut arr = session.new_bounded_array(ValueType::Int,&[(1,10)]).unwrap();
//arr[1] = 123
arr.set_item_int(&[1],123);

//int arr[2,4]
let mut arr = session.new_bounded_array(ValueType::Int,&[(1,2),(1,4)]).unwrap();
//arr[1,2] = 123
arr.set_item_int(&[1,2],123);

//int arr[1 to 5,2 to 10]
let mut arr = session.new_bounded_array(ValueType::Int,&[(1,5),(2,10)]).unwrap();
//arr[1,2] = 123
arr.set_item_int(&[1,2],123);

实例化变长用户自定义对象一维数组

Parameters

  • cls_name 元素对象类名

Examples

//n_cst_test arr[]
let mut arr = session.new_user_object_array("n_cst_test").unwrap();
//arr[1] = Create n_cst_test
let obj = session.new_user_object("n_cst_test").unwrap();
arr.set_item_object(&[1],&obj);

实例化变长系统对象一维数组

Parameters

  • cls_name 元素对象类名

Examples

//datastore arr[]
let mut arr = session.new_system_object_array("datastore").unwrap();
//arr[1] = Create datastore
let obj = session.new_user_object("datastore").unwrap();
arr.set_item_object(&[1],&obj);

实例化变长任意对象一维数组 (包括用户自定义对象和系统对象)

Parameters

  • cls_name 元素对象类名

Examples

//datastore arr[]
let mut arr = session.new_object_array("datastore").unwrap();
//arr[1] = Create datastore
let obj = session.new_user_object("datastore").unwrap();
arr.set_item_object(&[1],&obj);

实例化定长用户自定义对象多维数组

Parameters

  • cls_name 元素对象类名
  • dims &[(下标,上标)]

Examples

//n_cst_test arr[10]
let mut arr = session.new_bounded_user_object_array("n_cst_test",&[(1,10)]).unwrap();
//arr[1] = Create n_cst_test
let obj = session.new_user_object("n_cst_test").unwrap();
arr.set_item_object(&[1],&obj);

//n_cst_test arr[2,4]
let mut arr = session.new_bounded_user_object_array("n_cst_test",&[(1,2),(1,4)]).unwrap();
//arr[1,2] = Create n_cst_test
let obj = session.new_user_object("n_cst_test").unwrap();
arr.set_item_object(&[1,2],&obj);

//n_cst_test arr[1 to 5,2 to 10]
let mut arr = session.new_bounded_user_object_array("n_cst_test",&[(1,5),(2,10)]).unwrap();
//arr[1,2] = Create n_cst_test
arr.set_item_object(&[1,2],&obj);

实例化定长用户自定义对象多维数组

Parameters

  • cls_name 元素对象类名
  • dims &[(下标,上标)]

Examples

//datastore arr[10]
let mut arr = session.new_bounded_system_object_array("datastore",&[(1,10)]).unwrap();
//arr[1] = Create datastore
let obj = session.new_user_object("datastore").unwrap();
arr.set_item_object(&[1],&obj);

//datastore arr[2,4]
let mut arr = session.new_bounded_system_object_array("datastore",&[(1,2),(1,4)]).unwrap();
//arr[1,2] = Create datastore
let obj = session.new_user_object("datastore").unwrap();
arr.set_item_object(&[1,2],&obj);

//datastore arr[1 to 5,2 to 10]
let mut arr = session.new_bounded_system_object_array("datastore",&[(1,5),(2,10)]).unwrap();
//arr[1,2] = Create datastore
arr.set_item_object(&[1,2],&obj);

实例化定长任意对象多维数组

Parameters

  • cls_name 元素对象类名
  • dims &[(下标,上标)]

Examples

//datastore arr[10]
let mut arr = session.new_bounded_object_array("datastore",&[(1,10)]).unwrap();
//arr[1] = Create datastore
let obj = session.new_user_object("datastore").unwrap();
arr.set_item_object(&[1],&obj);

//datastore arr[2,4]
let mut arr = session.new_bounded_object_array("datastore",&[(1,2),(1,4)]).unwrap();
//arr[1,2] = Create datastore
let obj = session.new_user_object("datastore").unwrap();
arr.set_item_object(&[1,2],&obj);

//datastore arr[1 to 5,2 to 10]
let mut arr = session.new_bounded_object_array("datastore",&[(1,5),(2,10)]).unwrap();
//arr[1,2] = Create datastore
arr.set_item_object(&[1,2],&obj);

获取全局变量ID

Examples

let fid = session.get_var_id("gs_var").unwrap();
session.set_var_str(fid,"rust");

判断是否存在指定全局变量

Examples

if session.has_var("gs_var") {
    session.set_var_str("gs_var","rust");
}

获取指定全局变量类型

Panics

访问不存在的变量时会触发Panic

Examples

if session.get_var_type("gs_var") == ValueType::String {
    session.set_var_str("gs_var","rust");
}

判断指定全局变量是否为NULL

Panics

访问不存在的变量时会触发Panic

判断指定全局变量是否为数组类型

Panics

访问不存在的变量时会触发Panic

判断指定全局变量是否为对象类型

Panics

访问不存在的变量时会触发Panic

获取int类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取int类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取uint类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取uint类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取long类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取long类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取ulong类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取ulong类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取longlong类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取longlong类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取real类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取real类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取double类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取double类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取decimal类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取decimal类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取string类型全局变量的引用

Panics

访问不存在的变量或类型不匹配时会触发Panic

Safety

引用类型不能保证始终有效,详情请阅读内存安全说明

获取string类型全局变量的引用,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

  • 类型不兼容时可能会出现未定义行为
  • 引用类型不能保证始终有效,详情请阅读内存安全说明

获取string类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取string类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取boolean类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取boolean类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取blob类型全局变量的引用

Panics

访问不存在的变量或类型不匹配时会触发Panic

Safety

引用类型不能保证始终有效,详情请阅读内存安全说明

获取blob类型全局变量的引用,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

  • 类型不兼容时可能会出现未定义行为
  • 引用类型不能保证始终有效,详情请阅读内存安全说明

获取date类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取date类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取time类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取time类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取datetime类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取datetime类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取char类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取char类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取byte类型全局变量值

Panics

访问不存在的变量或类型不匹配时会触发Panic

获取byte类型全局变量值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取对象类型全局变量的引用

Panics

访问不存在的变量或类型不匹配时会触发Panic

Safety

引用类型不能保证始终有效,详情请阅读内存安全说明

获取对象类型全局变量的引用,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

  • 类型不兼容时可能会出现未定义行为
  • 引用类型不能保证始终有效,详情请阅读内存安全说明

获取数组类型全局变量的引用

Panics

访问不存在的变量或类型不匹配时会触发Panic

Safety

引用类型不能保证始终有效,详情请阅读内存安全说明

获取数组类型全局变量的引用,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

  • 类型不兼容时可能会出现未定义行为
  • 引用类型不能保证始终有效,详情请阅读内存安全说明

获取any类型全局变量的引用

Panics

访问不存在的变量或类型不匹配时会触发Panic

Safety

引用类型不能保证始终有效,详情请阅读内存安全说明

获取any类型全局变量的引用,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

  • 类型不兼容时可能会出现未定义行为
  • 引用类型不能保证始终有效,详情请阅读内存安全说明

设置全局变量的值为NULL

Panics

访问不存在的变量时会触发Panic

设置int类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置int类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置uint类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置uint类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置long类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置long类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置ulong类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置ulong类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置longlong类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置longlong类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置real类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置real类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置double类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置double类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置decimal类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置decimal类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置string类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置string类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置boolean类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置boolean类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置blob类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置blob类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置date类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置date类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置time类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置time类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置datetime类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置datetime类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置char类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置char类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置byte类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置byte类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置对象类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置对象类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

设置数组类型全局变量的值

Panics

访问不存在的变量或类型不匹配时会触发Panic

设置数组类型全局变量的值,不检查类型

Panics

访问不存在的变量时会触发Panic

Safety

类型不兼容时可能会出现未定义行为

获取用户定义全局函数ID

Examples

let fid = session.get_user_function_id("gf_test").unwrap();
let invoker = session.begin_invoke_function(fid).unwrap();
invoker.invoke();

获取系统全局函数ID

Examples

let fid = session.get_system_function_id(("MessageBox","ISS")).unwrap();
let invoker = session.begin_invoke_function(fid).unwrap();
invoker.arg(0).set_str("title");
invoker.arg(1).set_str("content");
invoker.invoke();

获取任意全局函数ID

Examples

let fid = session.get_function_id(("MessageBox","ISS")).unwrap();
let invoker = session.begin_invoke_function(fid).unwrap();
invoker.arg(0).set_str("title");
invoker.arg(1).set_str("content");
invoker.invoke();

调用全局函数

Examples

let rv: pbint = session.invoke_function(("MessageBox","ISS"),pbargs!["title","content"]).unwrap();

初始化全局函数调用上下文

Examples

let invoker = session.begin_invoke_function(("MessageBox","ISS")).unwrap();
invoker.arg(0).set_str("title");
invoker.arg(1).set_str("content");
invoker.invoke();

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.