像因特网的Web系统一样, 几乎所有的大规模软件系统, 都会使用脚本语言. 在网络游戏服务器的开发中, 也会应用脚本语言. 游戏开发常用的脚本语言主要有: Python, Lua. 本文介绍在C语言中嵌入Python支持, C语言和Python语言通过API进行交互.
任何两种语言要整合, 首先要解决通信问题. C要和Python进行通信, 要进行数据结构转换, 把C的数据结构转为Python的对象, 和把Python对象转换为C数据结构.
Continue reading »
Written by benegg
at 2009-09-11 23:03:07
几乎完整的程序或者软件, 都有配置信息, 一般保存在文件中. C/C++ 语言的项目一般使用 .ini 文件作为配置文件. ini 文件和成熟的库供使用, 但缺点很明显, 很难表达父子关系, 因为配置信息应该是一根树 - 配置树.
著名的Web Server Lighttpd 使用 LEMON 来解析配置文件. 有些软件还使用 Lua/Python 等脚本语言来做配置管理. 但很多时候没有这个必要. 配置信息只要是一根树即可.
基于这个考虑, 我开发了 C/C++ 的配置管理库, 可用来做程序/软件的配置模块.
-
语法定义:
- 空白字符为 '\t \r\n'(制表符, 空格, 回车, 换行)
- 忽略只包含空白字符的行
- 有效行以 '\t*' 开头
- 注释行以 '\t*#' 开头
- 有效行如果不是注释, 则必须是键值对配置行. key 和 value 之间用等号'='或者冒号':'分隔
- key 不包含任何空白字符, 两端的空白字符被忽略
- value 两端的空白字符被忽略
- 配置项可以有包含关系, 用一个 TAB 缩进表示父子关系
-
配置读取:
- 用键名获取子配置项
- 用斜杠'/'或者句号'.'分隔的配置项路径获取配置项
- 把配置项的值作为整形(int)返回
- 把配置项的值作为字符串(char *)返回
配置文件示例:
# this is a comment
author : ideawu
url: http://www.ideawu.net
proxy :
php =
host = 127.0.0.1
port = 8088
py :
host = 127.0.0.1
port = 8080
cgi =
pl = /usr/bin/perl
C代码示例见: http://www.ideawu.net/person/config/
Written by benegg
at 2009-09-10 22:09:50
Recent Comments