+public:
+ UniformArray(unsigned n, const BaseType *vp):
+ size(n)
+ {
+ unsigned elemsize = sizeof(typename T::Type)/sizeof(typename T::BaseType);
+ values = new BaseType[elemsize*size];
+ std::copy(vp, vp+elemsize*size, values);
+ }
+
+ virtual void apply(int index) const
+ { T::apply(index, size, values); }
+
+ virtual UniformArray *clone() const
+ { return new UniformArray(size, values); }