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