1

是否有一个 c++ 库提供类似 SQL 的语法来根据特定对象的 Getters/Properties 过滤/查询?我正在寻找与http://www.thomasfrank.se/sqlike.html类似的东西(这适用于 JS/AS),但用 C++ 编写。需求将是跨平台的、轻量级的,并且(不是必须的,但)希望不使用 boost。

例如,我为我的 C++ 代码实现了一个脚本引擎——我的脚本可以向我的 C++ 对象添加回调。现在,我不想为每个对象(演员)编写脚本,而是想根据过滤器将其应用于所有对象。

所以在我的脚本中我会有类似的东西

manager:AddListener("select name="SomeName" and age > 10 or weight < 10",SomeEvent,MyScriptFunc)

当创建一个新对象时,我会查看所有侦听器 - 如果此对象属性与配置的对象匹配,我添加它(例如对象具有属性名称=某个名称并且年龄大于 10)

目前我只是通过唯一标识符 (ID) 来识别我的对象 - 但是当我将相同的事件侦听器应用于类似对象时,我希望更加灵活。

所以基本上,如果有一个从某个字符串查询创建过滤器对象的库就足够了。

4

1 回答 1

1

你可以试试SQLite

SQLite 是一个实现自包含、无服务器、零配置、事务性 SQL 数据库引擎的软件库。SQLite 是世界上部署最广泛的 SQL 数据库引擎。SQLite 的源代码在公共领域。

您可以创建一个内存数据库来保存您希望查询的 C++ 对象属性:

sqlite3_open(":memory:", &db);

然后,您可以使用One-Step Query Execution Interface来实际执行查询。

要填充数据库,您可以使用 IDL 来描述您的对象,并且您的 IDL 解析器将创建 C++ 接口头文件和填充数据库的代码。

于 2012-07-08T16:21:26.027 回答