00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00034
00035 #ifndef GROOVX_VISX_ELEMENTCONTAINER_H_UTC20050626084016_DEFINED
00036 #define GROOVX_VISX_ELEMENTCONTAINER_H_UTC20050626084016_DEFINED
00037
00038 #include "visx/element.h"
00039
00040 namespace rutz
00041 {
00042 template <class T> class fwd_iter;
00043 }
00044
00045 namespace nub
00046 {
00047 template <class T> class ref;
00048 template <class T> class soft_ref;
00049 }
00050
00052
00053 class ElementContainer: public Element
00054 {
00055 public:
00057 ElementContainer();
00058
00060 virtual ~ElementContainer() throw();
00061
00062 virtual void read_from(io::reader& reader);
00063
00064 virtual void write_to(io::writer& writer) const;
00065
00066
00067
00068
00069
00071 virtual int trialType() const;
00072
00074
00075 virtual int lastResponse() const;
00076
00078 virtual rutz::fstring vxInfo() const;
00079
00081 virtual void vxHalt() const;
00082
00084 virtual void vxReturn(ChildStatus s);
00085
00087
00093 virtual void vxUndo();
00094
00096 virtual void vxReset();
00097
00098
00099
00100
00101
00103 void addElement(nub::ref<Element> element, unsigned int repeat = 1);
00104
00106 void setRandSeed(int s);
00107
00109 int getRandSeed() const;
00110
00112
00113 void shuffle(int seed=0);
00114
00116 void clearElements();
00117
00119 nub::soft_ref<Element> currentElement() const;
00120
00122 unsigned int numElements() const;
00123
00125
00127 unsigned int numCompleted() const;
00128
00130 rutz::fwd_iter<const nub::ref<Element> > getElements() const;
00131
00133 bool isComplete() const;
00134
00135 protected:
00137 virtual void vxAllChildrenFinished() = 0;
00138
00139 private:
00140 class Impl;
00141 Impl* const rep;
00142 };
00143
00144 static const char __attribute__((used)) vcid_groovx_visx_elementcontainer_h_utc20050626084016[] = "$Id: elementcontainer.h 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00145 #endif // !GROOVX_VISX_ELEMENTCONTAINER_H_UTC20050626084016_DEFINED