tbox内置的libc库,有一份自有的printf实现,在支持了所有标准格式化参数的同时,也对其进行了一些扩展,来支持自定义的格式化参数打印, 例如:
// 输出定点数:3.14
tb_printf("%{fixed}\n", tb_float_to_fixed(3.14));
// 输出ipv4地址:127.0.0.1
tb_ipv4_t addr;
tb_ipv4_set(&addr, "127.0.0.1");
tb_printf("%{ipv4}\n", &addr);
以上两种都是TBOX内置的对象参数打印,你只需要吧你需要打印的对象名和对象描述函数注册进来,就行了。
其中%{object_name}
就是自定义参数化对象打印的格式,这个是对%s、%f等标准格式的扩展,使你可以像ios中的NSLog(@"%@", object)
那样方便的打印自定义对象的内容。
例如:如果你要支持自定义打印如下内容:
typedef struct _rect_t
{
tb_long_t x;
tb_long_t y;
tb_size_t w;
tb_size_t h;
}rect_t;
tb_printf("%{rect}\n", &rect);
xmake.lua
中添加原生shell支持,例如:add_ldflags("$(shell pkg-config --libs sqlite3)")
getenv
接口到xmake.lua
的全局作用域中set_default
接口*.cxx
编译失败问题xmake master上最新版本已经支持vs2002-vs2015工程文件的生成,通过project
插件的方式提供,例如:
创建vs2013工程文件:
$ xmake project -k vs2013
默认输出目录是在当前工程的下面,会生成一个vs2008的工程文件夹,打开解决方案编译后,默认的输出文件路径跟xmake.lua描述的是完全一致的,一般都是在build目录下
除非你手动指定其他的构建目录,例如:xmake f -o /tmp/build
创建vs2008工程文件,并且创建工程文件到指定目录:
$ xmake project -k vs2008 f:\vsproject
__tb_deprecated__
关键字以及配置选项tbox主要有三种流:
不管是stream还是async_stream,都可以在其上挂接多路filter,实现流之间数据过滤和变换。目前支持以下几种filter:
如果在一个xml解析器上同时挂接:
http/xml => chunked_filter => zip_filter => charset_filter => stream/async_stream => xml_reader
就可以实现对xml文件的边下载、边解压、边转码、边解析,这样就可以完美支持大规模xml数据的解析支持,而且内存使用率也不会太高