当前位置:网站首页>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 :
边栏推荐
猜你喜欢
0 basic learning C language - digital tube
C# 三种方式实现Socket数据接收
二分图判定
自制J-Flash烧录工具——Qt调用jlinkARM.dll方式
【编译原理】做了一半的LR(0)分析器
signed、unsigned关键字
Improving Multimodal Accuracy Through Modality Pre-training and Attention
Leetcode question brushing (XI) -- sequential questions brushing 51 to 55
Sword finger offer question brushing record 1
2022-07-04 the high-performance database engine stonedb of MySQL is compiled and run in centos7.9
随机推荐
0 basic learning C language - interrupt
The nearest common ancestor of binary (search) tree ●●
[线性代数] 1.3 n阶行列式
BasicVSR_PlusPlus-master测试视频、图片
CCNA Cisco network EIGRP protocol
Config:invalid signature solution and troubleshooting details
树的先序中序后序遍历
【数字IC手撕代码】Verilog无毛刺时钟切换电路|题目|原理|设计|仿真
Void keyword
pytorch_YOLOX剪枝【附代码】
Gd32f4xx serial port receive interrupt and idle interrupt configuration
uniapp滑动到一定的高度后固定某个元素到顶部效果demo(整理)
12、 Start process
volatile关键字
What are the interface tests? What are the general test points?
Crawler obtains real estate data
Assembly and Interface Technology Experiment 6 - ADDA conversion experiment, AD acquisition system in interrupt mode
剑指offer刷题记录1
i. Mx6ull build boa server details and some of the problems encountered
UDP programming