1

Getters/Properties に基づいて特定のオブジェクトをフィルタリング/クエリする SQL のような構文を提供する C++ ライブラリはありますか? このhttp://www.thomasfrank.se/sqlike.html (JS/AS の場合) に似たものを探していますが、C++ で記述されています。要件は、クロスプラットフォーム、軽量、(必須ではありませんが) できればブーストを使用しないことです。

たとえば、C++ コード用のスクリプト エンジンを実装しました。スクリプトは C++ オブジェクトにコールバックを追加できます。オブジェクト (アクター) ごとにスクリプトを記述する代わりに、フィルタに基づいてすべてのオブジェクトにスクリプトを適用したいと考えました。

だから私のスクリプトでは、次のようなものがあります

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

新しいオブジェクトが作成されると、すべてのリスナーを調べます。このオブジェクトのプロパティが構成されたものと一致する場合は、それを追加します (たとえば、オブジェクトにはプロパティ name=somename があり、年齢は 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 に答える