Mercurial > hg > svcore
diff transform/ModelTransformer.h @ 911:73c2fd9a7dbe
Merge from branch tony_integration
author | Chris Cannam |
---|---|
date | Wed, 14 May 2014 09:54:20 +0100 |
parents | b109b88bfa85 |
children | 6ea7761a418b |
line wrap: on
line diff
--- a/transform/ModelTransformer.h Wed May 07 15:17:58 2014 +0100 +++ b/transform/ModelTransformer.h Wed May 14 09:54:20 2014 +0100 @@ -40,6 +40,8 @@ public: virtual ~ModelTransformer(); + typedef std::vector<Model *> Models; + class Input { public: Input(Model *m) : m_model(m), m_channel(-1) { } @@ -76,18 +78,47 @@ int getInputChannel() { return m_input.getChannel(); } /** - * Return the output model created by the transform. Returns a - * null model if the transform could not be initialised; an error - * message may be available via getMessage() in this situation. + * Return the set of output models created by the transform or + * transforms. Returns an empty list if any transform could not + * be initialised; an error message may be available via + * getMessage() in this situation. */ - Model *getOutputModel() { return m_output; } + Models getOutputModels() { return m_outputs; } /** - * Return the output model, also detaching it from the transformer - * so that it will not be deleted when the transformer is. The - * caller takes ownership of the model. + * Return the set of output models, also detaching them from the + * transformer so that they will not be deleted when the + * transformer is. The caller takes ownership of the models. */ - Model *detachOutputModel() { m_detached = true; return m_output; } + Models detachOutputModels() { + m_detached = true; + return getOutputModels(); + } + + /** + * Return any additional models that were created during + * processing. This might happen if, for example, a transform was + * configured to split a multi-bin output into separate single-bin + * models as it processed. These should not be queried until after + * the transform has completed. + */ + virtual Models getAdditionalOutputModels() { return Models(); } + + /** + * Return true if the current transform is one that may produce + * additional models (to be retrieved through + * getAdditionalOutputModels above). + */ + virtual bool willHaveAdditionalOutputModels() { return false; } + + /** + * Return the set of additional models, also detaching them from + * the transformer. The caller takes ownership of the models. + */ + virtual Models detachAdditionalOutputModels() { + m_detachedAdd = true; + return getAdditionalOutputModels(); + } /** * Return a warning or error message. If getOutputModel returned @@ -99,11 +130,13 @@ protected: ModelTransformer(Input input, const Transform &transform); + ModelTransformer(Input input, const Transforms &transforms); - Transform m_transform; + Transforms m_transforms; Input m_input; // I don't own the model in this - Model *m_output; // I own this, unless... + Models m_outputs; // I own this, unless... bool m_detached; // ... this is true. + bool m_detachedAdd; bool m_abandoned; QString m_message; };