当前位置:网站首页>Aardio - Method of batch processing attributes and callback functions when encapsulating Libraries
Aardio - Method of batch processing attributes and callback functions when encapsulating Libraries
2022-07-06 22:31:00 【Lu Guangqing】
About the method of batch processing attributes and callback functions when encapsulating libraries , stay
《 Aardio - Method parsing of callback function _ Luguangqing's blog -CSDN Blog _aardio Function manual 》
It is mentioned in the article that , It's called “ Guangqing callback method ”.
Because there is no example code of a complete system in the above , Just look at code snippets , It may be difficult to understand , So it should be partially aardio Friend needs , A set of specific example code is sorted out here , For reference :
One 、dll How to deal with :
Take Yi language as an example :



Two 、aardio Methods declared and called in :
import console;
var dll = ..raw.loadDll("/test.dll");
// Define functions that set properties
var setp = dll.api("setProp","bool(string,string)")
setProp = function(prop,v){ // Because easy language compilation dll by ansi code , Therefore, transcoding is required when passing parameters .
if type(v)=type.table v=..table.tostring(v);
return setp(..string.fromto(prop,65001,0),..string.fromto(tostring(v),65001,0));
}
// Define the function to get properties
var getp = dll.api("getProp","ptr(string)")
getProp = function(prop){ // Because easy language compilation dll by ansi code , Therefore, transcoding is required when passing parameters .
var str = ..raw.str(getp(..string.fromto(prop,65001,0)));
str = ..string.fromto(str,0,65001);
return eval(str);
}
// Define callback function
var callback = function(funcname,param){
funcname = ..string.fromto(funcname,0,65001);
if console[funcname] return console[funcname](..table.unpack(eval(..string.fromto(param,0,65001))));
}
var _stdfunc = ..raw.tostdcall(callback,"int(string,string)");
dll.setcallback(tonumber(..raw.toPointer(_stdfunc)));
//******************* Start testing
// Test attribute
// In theory , Any number of attributes can , stay aardio There is no need to deal with it one by one . stay dll You can deal with it in .
setProp("prop1"," I am a text attribute ") // Text
setProp("prop2",123456) // The number
setProp("prop3",true) // Logic
setProp("prop4",{123,{1,2,3},"abc",true}) // Array
console.dump(getProp("prop1"), type(getProp("prop1")))
console.dump(getProp("prop2"), type(getProp("prop2")))
console.dump(getProp("prop3"), type(getProp("prop3")))
console.dump(getProp("prop4"), type(getProp("prop4")))
// Test callback
// Define three aardio Callback function , The key is that these three callback functions are not converted to stdcall, But through a callback Callback function execution .
// In theory , Any number of callback functions can , stay aardio There is no need to deal with it one by one . stay dll Just call it at will .
console.func1 = function(v){
console.dump(" Callback execution ============",'\n',v)
}
console.func2 = function(v){
console.dump(" Callback execution ============",'\n',(v*10)+567)
}
console.func3 = function(a,b,c,d){
console.dump(" Callback execution ============",'\n',a,(b+1)*1123,c,!c,d,d[2])
}
// Analog callback , Call three callback functions
dll.testcallback()
console.pause(true);
fsys.remove()3、 ... and : The code download :
边栏推荐
- Balanced Multimodal Learning via On-the-fly Gradient Modulation(CVPR2022 oral)
- 剑指offer刷题记录1
- Spatial domain and frequency domain image compression of images
- sizeof关键字
- 雅思口语的具体步骤和时间安排是什么样的?
- [线性代数] 1.3 n阶行列式
- What are the specific steps and schedule of IELTS speaking?
- Netxpert xg2 helps you solve the problem of "Cabling installation and maintenance"
- The SQL response is slow. What are your troubleshooting ideas?
- 树的先序中序后序遍历
猜你喜欢

【数字IC手撕代码】Verilog无毛刺时钟切换电路|题目|原理|设计|仿真

config:invalid signature 解决办法和问题排查详解

Assembly and interface technology experiment 5-8259 interrupt experiment

Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices

二分图判定

Seata aggregates at, TCC, Saga and XA transaction modes to create a one-stop distributed transaction solution

自制J-Flash烧录工具——Qt调用jlinkARM.dll方式

Advantages of link local address in IPv6

Balanced Multimodal Learning via On-the-fly Gradient Modulation(CVPR2022 oral)

Export MySQL table data in pure mode
随机推荐
Netxpert xg2 helps you solve the problem of "Cabling installation and maintenance"
UVa 11732 – strcmp() Anyone?
2022-07-05 stonedb的子查询处理解析耗时分析
在IPv6中 链路本地地址的优势
Adavit -- dynamic network with adaptive selection of computing structure
Data processing skills (7): MATLAB reads the data in the text file TXT with mixed digital strings
如何实现文字动画效果
void关键字
枚举与#define 宏的区别
做接口测试都测什么?有哪些通用测试点?
重磅新闻 | Softing FG-200获得中国3C防爆认证 为客户现场测试提供安全保障
MySQL数据库基本操作-DML
Data storage (1)
Aardio - 不声明直接传float数值的方法
机试刷题1
CCNA Cisco network EIGRP protocol
That's why you can't understand recursion
Unity3d minigame-unity-webgl-transform插件转换微信小游戏报错To use dlopen, you need to use Emscripten‘s...问题
go多样化定时任务通用实现与封装
China 1,4-cyclohexanedimethanol (CHDM) industry research and investment decision-making report (2022 Edition)