/* */ #ifndef _D_P_STRING_SEGMENT_H_ #define _D_P_STRING_SEGMENT_H_ #include "PStringDatum.h" class PStringSegmentVisitor; typedef SharedHandle PStringSegmentVisitorHandle; class PStringSegment : public PStringDatum { private: string _value; PStringDatumHandle _next; public: PStringSegment(const string& value, const PStringDatumHandle& next = 0): _value(value), _next(next) {} virtual ~PStringSegment() {} virtual void accept(const PStringVisitorHandle& visitor); const string& getValue() const { return _value; } bool hasNext() const { return !_next.isNull(); } PStringDatumHandle getNext() const { return _next; } }; typedef SharedHandle PStringSegmentHandle; class PStringSegmentVisitor { public: virtual ~PStringSegmentVisitor() {} virtual void hello(PStringSegment* s) = 0; virtual void goodbye(PStringSegment* s) = 0; }; typedef SharedHandle PStringSegmentVisitorHandle; #endif // _D_P_STRING_SEGMENT_H_