1
git-svn-id: svn://db.shs.com.ru/libs@1 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
103
mbricks/brick_composite.h
Normal file
103
mbricks/brick_composite.h
Normal file
@@ -0,0 +1,103 @@
|
||||
#ifndef BRICK_COMPOSITE_H
|
||||
#define BRICK_COMPOSITE_H
|
||||
|
||||
#include "brick_emits.h"
|
||||
#include "brick_math.h"
|
||||
#include "brick_logic.h"
|
||||
#include "brick_digital.h"
|
||||
#include "brick_link.h"
|
||||
#include "brick_interface.h"
|
||||
#include "brick_statistic.h"
|
||||
|
||||
void buildTree(PIVector<BrickBase * > & bricks, PIVector<PIVector<BrickBase * > > & tree);
|
||||
PIVector<PIVector<BrickBase * > > buildSubtree(PIVector<BrickBase * > & bricks, PIVector<PIVector<BrickBase * > > & tree);
|
||||
void sumTrees(PIVector<PIVector<BrickBase * > > & ft, PIVector<PIVector<BrickBase * > > & st);
|
||||
|
||||
|
||||
class BrickCompositeBase: public BrickBase {
|
||||
public: BrickCompositeBase(int inputs_num = 0, int outputs_num = 0, int parameters_num = 1): BrickBase(inputs_num, outputs_num, parameters_num) {lib = "Composite";}
|
||||
};
|
||||
|
||||
|
||||
class BrickCompositeInput;
|
||||
class BrickCompositeOutput;
|
||||
class BrickCompositeParameters;
|
||||
class BrickCompositeInformation;
|
||||
|
||||
|
||||
class BrickComposite: public BrickCompositeBase {
|
||||
MBRICK(BrickComposite)
|
||||
BrickComposite();
|
||||
virtual bool tick_body(double time);
|
||||
Mode mode() const {return mode_;}
|
||||
void setMode(Mode m) {mode_ = m;}
|
||||
void buildBrickTree() {buildTree(bricks, tree);}
|
||||
void clear();
|
||||
void loadScheme(const PIString & file) {setParameterValue(0, file);}
|
||||
static BrickBase * findBaseBrick(const PIString & code_name);
|
||||
|
||||
protected:
|
||||
virtual void parameterChanged(int index);
|
||||
virtual void started() {parameterChanged(0); for (uint i = 0; i < bricks.size(); ++i) {bricks[i]->setManager(manager_); bricks[i]->started();}}
|
||||
virtual void finished() {for (uint i = 0; i < bricks.size(); ++i) bricks[i]->finished();}
|
||||
virtual void saveInputsToDefault() {defInputs = inputs; for (uint i = 0; i < bricks.size(); ++i) bricks[i]->saveInputsToDefault();}
|
||||
virtual void resetOutputs() {for (uint i = 0; i < bricks.size(); ++i) bricks[i]->resetOutputs();}
|
||||
virtual void reset_specified() {for (uint i = 0; i < bricks.size(); ++i) bricks[i]->reset_specified();}
|
||||
virtual void reset() {BrickBase::reset(); for (uint i = 0; i < bricks.size(); ++i) bricks[i]->reset();}
|
||||
virtual void proceedConnections(bool compositeToo = false);
|
||||
|
||||
BrickBase * findBrick(const PIString & name);
|
||||
static void loadBrick(PIConfig & sr, const PIString & prefix, BrickBase * b, BrickManager * m = 0);
|
||||
static void fillBaseBricks();
|
||||
|
||||
static PIVector<BrickBase * > baseBricks;
|
||||
PIVector<BrickBase * > bricks;
|
||||
PIVector<PIVector<BrickBase * > > tree;
|
||||
PIVector<BrickBase * > * tl;
|
||||
BrickCompositeInput * bi;
|
||||
BrickCompositeOutput * bo;
|
||||
BrickCompositeParameters * bp;
|
||||
BrickCompositeInformation * inf;
|
||||
Mode mode_;
|
||||
int header_;
|
||||
|
||||
};
|
||||
ADD_NEW_TO_COLLECTION(Composite, BrickComposite)
|
||||
|
||||
|
||||
class BrickCompositeInput: public BrickCompositeBase {
|
||||
MBRICK(BrickCompositeInput)
|
||||
BrickCompositeInput(int inputs_num = 1);
|
||||
virtual bool tick_body(double time) {return true;}
|
||||
virtual void parameterChanged(int index) {if (outNames.size_s() > index) outNames[index] = parameters[index].toString();}
|
||||
virtual void outputsCountChanged(int count) {setParametersCount(count, "");}
|
||||
};
|
||||
ADD_NEW_TO_COLLECTION(Composite, BrickCompositeInput)
|
||||
|
||||
|
||||
class BrickCompositeOutput: public BrickCompositeBase {
|
||||
MBRICK(BrickCompositeOutput)
|
||||
BrickCompositeOutput(int outputs_num = 1);
|
||||
virtual bool tick_body(double time) {return true;}
|
||||
virtual void parameterChanged(int index) {if (inNames.size_s() > index) inNames[index] = parameters[index].toString();}
|
||||
virtual void inputsCountChanged(int count) {setParametersCount(count, "");}
|
||||
};
|
||||
ADD_NEW_TO_COLLECTION(Composite, BrickCompositeOutput)
|
||||
|
||||
|
||||
class BrickCompositeParameters: public BrickCompositeBase {
|
||||
MBRICK(BrickCompositeParameters)
|
||||
BrickCompositeParameters();
|
||||
virtual void outputsCountChanged(int count) {setParametersCount(count, "p");}
|
||||
virtual void parameterChanged(int index);
|
||||
};
|
||||
ADD_NEW_TO_COLLECTION(Composite, BrickCompositeParameters)
|
||||
|
||||
|
||||
class BrickCompositeInformation: public BrickCompositeBase {
|
||||
MBRICK(BrickCompositeInformation)
|
||||
BrickCompositeInformation();
|
||||
};
|
||||
ADD_NEW_TO_COLLECTION(Composite, BrickCompositeInformation)
|
||||
|
||||
#endif // BRICK_COMPOSITE_H
|
||||
Reference in New Issue
Block a user