CPPS 是一个功能强大,运行速度快,容易上手的解释型脚本语言,非常容易学习和使用,并且可以很容易的嵌入到C++项目中。
CPPS 被设计的初衷是让那些和作者一样不喜欢LUA,PY,等等脚本语法的开发者使用,它可以对接各种项目,无论游戏,WEB,或者是人工智能方面。
它的语法极为像C++,所以C++开发者可以很快速的上手,无需太深入的学习它。
招募协同软件作者,三方模块作者.
CPPS 的下载与安装非常简单,CPPS不依赖于任何第三方库,仅仅下载就可以编译。
git clone https://github.com/johnsonyl/cpps.git cmake . make make install ;根据需要是否编译扩展模块. cpps buildlibs
git clone https://github.com/johnsonyl/cpps.git cmake . 使用Visual Studio打开libcpps.sln进行编译即可。 cd libs ;根据需要是否编译扩展模块. cmake . 使用Visual Studio打开cppslibs.sln进行编译即可。
是不是非常简单?
libs 文件夹是内部扩展模块.具体编译规则请查看文档
脚本文档在
println("hello world");
#import "base64" var s = "abc"; println("source:{s}"); var encode_s = base64.encode(s); println("encode_s:{encode_s}"); var deocde_s = base64.decode(encode_s); println("deocde_s:{deocde_s}");
async var test() { println("do test function"); await asyncio.wait_for(asyncio.sleep(2000),100); println("do test function done"); return "test"; } async var test1() { println("do test1 function"); await asyncio.sleep(1000); println("do test1 function done"); return "test1"; } var test_call_back(var task, var context) { println(task.get_name()); println(context); } async var main() { var task1 = asyncio.create_task(test()); task1.set_name("Custom names are used to distinguish"); task1.add_done_callback(test_call_back, "Custom context content"); var task2 = asyncio.create_task(test1()); var ret = await asyncio.wait(task1); if (ret.timeout()) { println("task1 was timeouted."); } println("state:{ret.state()}"); println(ret.result()); try { println(await task2); } catch (var e) { println("oh,we catch some error"); println("{e.what()} line:{e.line()} file:{e.file()}"); println(e.callstack()); } println("finish"); } asyncio.run(main());
system("chcp 65001"); //use utf8 string #import "socket" //server var socket_accept(var socketIndex) { println("acceptd:{socketIndex}"); } var socket_data(var socketIndex,var buffer) { var packageSize = buffer.readInt32(); var s = buffer.readString(packageSize-4); println(s); if(s == "e") { srv.closesocket(socketIndex); } var writer = new Buffer(); writer.writeString(s); socket_send(socketIndex, writer); } var socket_close(var socketIndex,var err,var errstr) { println("closed :{socketIndex},err:{err},errstr:{errstr}"); } var socket_parser(var headerbuffer) { var size = headerbuffer.readInt32(); return size; } var socket_send(var socketIndex,var buffer) { var writer = new Buffer(); writer.writeInt32(buffer.length() + 4); writer.write(buffer,buffer.length()); srv.send(socketIndex, writer); } println("start server"); var srv = new socket::server().setoption(new ServerOption(){ ip = "0.0.0.0", headersize = 4,//header 4 bytes accept = socket_accept, data = socket_data, close = socket_close, parser = socket_parser }).listen(4060); println("start over"); while (true){ srv.run(); Sleep(1); }
system("chcp 65001"); //use utf8 string #import "socket" //client var socket_connected() { println("connected"); var writer = new Buffer(); writer.writeString("this is a pingpong msg"); socket_send(writer); } var socket_data(var buffer) { var packageSize = buffer.readInt32(); var s = buffer.readString(packageSize-4); println(s); Sleep(100); var writer = new Buffer(); writer.writeString(s); socket_send(writer); } var socket_close(var err,var errstr) { println("closed:err:{err},errstr:{errstr}"); } var socket_parser(var headerbuffer) { var size = headerbuffer.readInt32(); return size; } var socket_send(var buffer) { var writer = new Buffer(); var size = buffer.length(); writer.writeInt32(size + 4); writer.write(buffer,buffer.length()); client.send(writer); } var client = new socket::client(); client.setoption(new ClientOption(){ connected = socket_connected, data = socket_data, close = socket_close headersize = 4,//header 4 bytes parser = socket_parser }); var b = client.connect("127.0.0.1",4060); while (true) { client.run(); Sleep(1); }
system("chcp 65001"); //use utf8 string #import "http" var request = new http::httprequest(); request.setcookiefile("cookies.txt"); //request.setproxy(httpproxy.SOCK5,"192.168.1.166:25455"); //request.setproxyaccount("johnsonyl","mima"); request.addheaders({User-Agent:"cppsrequest/1.1.0"}); var ret = request.get("http://127.0.0.1:8080/Home/test?kkk=100"); println("-------------------GET-------------------------"); println("get:{ret}"); var cookies = request.getcookies(); println("cookies:{cookies}"); var headers = request.getheaders(); println("headers:{headers}"); println("-------------------POST-------------------------"); ret = request.post("http://127.0.0.1:8080/Home/test","kkk=100"); println("post:{ret}"); var cookies = request.getcookies(); println("cookies:{cookies}"); var headers = request.getheaders(); println("headers:{headers}"); println("-------------------END-------------------------");
There always are cpp files and each of them has a main function as a standalone app each. For example, in my folder DesignPatterns I have files factory_example.cpp and command.cpp, they ready to be bu
主要内容:使用普通函数创建 goroutine,使用匿名函数创建goroutine在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。 虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否
本文向大家介绍Go语言中嵌入C语言的方法,包括了Go语言中嵌入C语言的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言中嵌入C语言的方法。分享给大家供大家参考。具体分析如下: Go语言官方带了一个工具叫cgo,可以很方便的在Go语言代码中内嵌C代码或做C和Go代码的集成。下面是一段简单的在Go中内嵌C的实验代码: 把上面代码保存到ctest.go文件,运行:go run cte
null 解压缩算法的重要指标是数据的大小加上算法的大小(因为它们将驻留在相同的有限内存中)。 可用于解压的RAM很少;可以将单个字形的数据解压缩到RAM中,但不能更多。 为了使事情变得更加困难,算法必须在32位微控制器(ARM Cortex-M core)上非常快,因为字形在被绘制到显示器上时需要解压缩。每八位元组十个或二十个机器循环是可以的,一百个肯定太多了。 为了使事情变得更容易,完整的数据
没有标记语言就没有Web和丰富多彩的互联网,但创造了Web的HTML语言并非尽善尽美,存在诸如难读、难写、难以向其他格式转换的问题。究其根源是因为HTML语言是一种“重”标记语言,对机器友好而并非对人友好。 下面这段HTML源码,非技术控阅读起来会遇到困难。 <html> <head> <meta content='application/xhtml+xml;charset=utf-8' ht
问题内容: 在我创建的许多Python应用程序中,我经常创建简单的模块,除了常量之外,这些模块仅用作配置文件。此外,由于配置文件实际上是Python代码文件,因此我可以添加简单的逻辑以根据调试级别等来更改变量。 尽管这对于内部应用程序非常有效,但我担心在将这些应用程序发布到野外时会感到担心,因为担心有人会意外地或恶意地向文件中添加破坏性代码。使用Python作为嵌入式脚本语言也是如此。 是否存在被
问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 要在Linux平台上编写用于流程自动化的脚本,哪种脚本语言会更好?Shell脚本,Perl或Python还是其他?我是所有人的新手。所以,我只是在考虑去哪一个?
Qore 是一个模块化、支持多线程的、集成SQL、弱类型的面向过程和对象的脚本语言,语法简单易懂。 Qore supports safe signal handling, exception handling and exception-safe programming, XML and JSON integration as well as TLS/SSL socket support, HTT
本文向大家介绍Lua脚本语言入门笔记,包括了Lua脚本语言入门笔记的使用技巧和注意事项,需要的朋友参考一下 什么是Lua Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henri