small library for c, includes array, map, string, obj, value, thread, mutex, file, event emitter...
C语言是我最常用的编程语言之一,不过对它也算是爱恨交加了,喜欢它的简洁和高效,但是经常需要重复造轮子。搜遍整个github,也没有找到我满意的C语言程序库。
趁这次计划开发FTK 2.0,把我需要的C语言程序库重新整理出来。uclib的主要特色有:
目前主要有:
-
value : 一个通用数据类型,用来存放整数、浮点数、obj、str和其它对象。
-
array : 动态数组,根据数据项的个数自动扩展数组的长度。
-
map : 存放key/value映射的容器,方便通过key查找value。
-
obj : 通用的对象。提供通用的属性设置/获取函数,和事件注册/分发功能。
-
emitter : 事件发射器。相当于观察者模式中被观察的对象,提供事件注册、注销和分发功能。
-
str : 字符串对象。
-
thread : 跨平台的线程对象。
-
mutex : 跨平台的互斥锁对象。
-
file : 文件工具函数。
-
date_time : 时间相关函数。
可以在Windows(VS 2008)、Linux和MacOS上编译和运行。
使用gtest为所有函数开发单元测试,保证程序库的可靠性。
使用jsduck格式为API编写注释。由于jsduck不能直接解析C语言头文件,所以先用工具(bin/extract_doc)提取注释,然后在用jsduck生成文档。
文档入口:docs/index.html
使用valgrind对程序进行内存检查,保证没有内存泄露和越界的问题。
可以从jsduck格式的注释中提取API的描述,从而生成JS引擎需要的API,当然绑定到其它动态语言也可以的。后续将提供jerryscript的绑定工具。