/* */ #ifndef _D_P_STRING_NUM_LOOP_H_ #define _D_P_STRING_NUM_LOOP_H_ #include "PStringDatum.h" #include "Util.h" #include "PStringSegment.h" #include "NumberDecorator.h" class PStringNumLoop : public PStringDatum { private: int32_t _startValue; int32_t _endValue; int32_t _step; NumberDecoratorHandle _numberDecorator; PStringDatumHandle _next; public: PStringNumLoop(int32_t startValue, int32_t endValue, int32_t step, const NumberDecoratorHandle& nd, const PStringDatumHandle& next = 0): _startValue(startValue), _endValue(endValue), _step(step), _numberDecorator(nd), _next(next) {} virtual ~PStringNumLoop() {} virtual void accept(const PStringVisitorHandle& visitor) { for(int32_t i = _startValue; i <= _endValue; i += _step) { PStringSegment(_numberDecorator->decorate(i), _next).accept(visitor); } } PStringDatumHandle getNext() const { return _next; } int32_t getStartValue() const { return _startValue; } int32_t getEndValue() const { return _endValue; } int32_t getStep() const { return _step; } }; typedef SharedHandle PStringNumLoopHandle; #endif // _D_P_STRING_NUM_LOOP_H_