stream是tbox的最常用的流,一般用于单路io操作,既可以进行阻塞读写,也可以非阻塞的读写。
目前可以支持 数据、文件、套接字、http协议以及各种过滤器的读写操作,也可以很方便的自定义扩展自己的流模块。
之前已经在tbox数据位操作接口的使用一文中,简单介绍了下stream的位读写接口,这里继续详细介绍下stream的常用数据读写接口。
下面直接上代码吧,基本上看下注释就知道怎么使用了,嘿嘿。。。
xmake master上最新版本已经支持vs2008工程文件的生成,通过project
插件的方式提供,例如:
创建vs2008工程文件:
$ xmake project -k vs2008
默认输出目录是在当前工程的下面,会生成一个vs2008的工程文件夹,打开解决方案编译后,默认的输出文件路径跟xmake.lua描述的是完全一致的,一般都是在build目录下
除非你手动指定其他的构建目录,例如:xmake f -o /tmp/build
创建vs2008工程文件,并且创建工程文件到指定目录:
$ xmake project -k vs2008 f:\vsproject
目前这个插件也是刚刚跑通,身边暂时没有其他vs版本可供测试,理论上已经可以支持vs200x的所有版本了(vs2002, vs2003, vs2005, vs2008)
如果有兴趣的同学可以先行测试下其他版本。
另外目前vs2010以上版本,暂时还不支持,后续也会陆续实现掉,想要用vs2015来编译的话,理论上vs是可以向下兼容支持低版本vs工程的,可以尝试用vs2015加载vs2008的工程文件试试。。
tbox对于数据文件的解析提供了完善的支持,可以对各种二进制数据,文件数据流,网络数据流等进行各种解析操作
并且提供了一整套字节解析、比特位解析的接口,来支持各种流模式:
通用数据流,提供对流式数据的读写和解析,支持多层流嵌套以及各种协议(http, socket, file, data …)
对于如何使用stream,这里暂时不详细介绍了,之后会单独重点介绍下,这里主要是为了描述,如何使用stream来处理字节数据的解析
例如,我要从数据流中,读取一个大端的16bits数值,很简单,只要:
tb_uint16_t value;
if (tb_stream_bread_u16_be(stream, &value))
{
tb_trace_i("%x", value);
}
其中后缀_be
, _le
以及_ne
分别表示,大端读取、小端读取、本地端读取
如果需要读取32位、64位数据,只需要将u16
改成u32
或者u64
就行了,是不是很方便啊,并且stream还可以支持浮点、双精度数值的各端读取。。
这里我就不一一介绍了,具体的接口列表,可以参看本文最后的接口列表。
内置在字符串中,例如:
set_objectdir("$(buildir)/.objs")
其中的$(buildir)就是内建变量,这些是随着每次xmake config的配置改变而自动改变的。
目前支持的一些变量如下:
xmake f -o /tmp
修改xmake f -P ./project
修改xmake f -p android
修改xmake f -m debug
修改xmake f -a armv7
修改