0

だから私はこれによく似たいくつかの単純なジェネレータークラスを持っます. 生成されたデータをレンダラーに渡すのに役立つグラフを作成するにはどうすればよいですか?

現在、Char Ptr をデータ ジェネレーターに渡し、結果をレンダラーに渡すために、次のようなことを行います。

     renderer->renderCastedData(producer->updateData(CharPtr));

しかし、Boost Graph を使用して、データを表すクラスをいくつかの関数への入力としていくつかのクラスにマップし、その関数から他のクラスを返すことができるかどうかを知りたいです。Graph(MyInstanceOfMyDatatype)一般に、「グラフ」を呼び出して、あるグラフ要素から別のグラフ要素に(最小限の対処で)ブーストパスを渡すことができるようにしたいですか?

これは非常に単純なサンプルなので、グラフはやり過ぎのように見えるかもしれませんが、たとえば 1 つのジェネレーターと N 個のレンダラーがある場合に備えて、クラス間で自動値が渡されるようにグラフを作成したいと考えています。最初を除くすべてのレンダラーに私のクラスの -1 コピー。

4

1 に答える 1

1

It seems that what you're looking for is a framework that allows you to extend the simple producer-consumer pattern into a mesh of consumers, concurrently fed by a single producer.

This is not what Boost.Graph provides. Boost.Graph is a collection of abstract procedures (algorithms) defined on a set of graph concepts. It assumes you already have a data structure that has graph properties (vertexes and edges, and iterators over them, mostly), and lets you apply its algorithms (maximum flow, shortest distance, etc) to it. In addition, it comes with some simple graph models (adjacency matrix/list) in case you don't already have graph classes.

Your usecase is similar to the Unix tee command. While I don't know a tee implementation for the particular library you are using, it's usually not too complicated to implement a TeeConsumer that acts as a producer for all its registered child consumers.

Here's a blog post of a colleague of mine about implementing a tee device for Qt's QIODevice, which might help you get started.

于 2011-04-26T14:54:48.000 に答える