diff --git a/textmodel.cc b/textmodel.cc
index 81ac03dfe725872d202f4efec16d8243b8802a27..56bedbae3aa34a82d08c8249a16796fcb71099b8 100644 (file)
--- a/textmodel.cc
+++ b/textmodel.cc
return sofar + "}";
}
+void StdTextModel::accept(Visitor &visitor) const {
+ visitor.partStart();
+ for (int i = 0; i < d_pieces.size(); ++i) {
+ d_pieces[i]->accept(visitor);
+ }
+ visitor.partEnd();
+}
+
TextPiece::TextPiece(size_t len): d_len(len) {}
LongPiece::LongPiece(size_t len): TextPiece(len) {}
reader.readLChar(d_buf, d_len);
}
-std::string LongPiece::toString() {
+std::string LongPiece::toString() const {
return std::string("LongPiece(FIXME)");// + std::wstring((wchar_t*)d_buf) + std::string(")");
}
+std::wstring LongPiece::getText() const {
+ return std::wstring((wchar_t*)d_buf);
+}
+
+void LongPiece::accept(Visitor &visitor) const {
+ visitor.textLongPiece(this);
+}
+
ShortPiece::ShortPiece(size_t len): TextPiece(len) {}
ShortPiece::~ShortPiece() {
// delete buf;
}
-std::string ShortPiece::toString() {
+std::string ShortPiece::toString() const {
return std::string("ShortPiece(") + std::string(d_buf) + std::string(")");
}
+std::string ShortPiece::getText() const {
+ std::string str(d_buf);
+ for (std::string::iterator it = str.begin(); it < str.end(); ++it) {
+ if (*it == '\r') *it = '\n';
+ }
+ return str;
+}
+
+void ShortPiece::accept(Visitor &visitor) const {
+ visitor.textShortPiece(this);
+}
+
ViewPiece::ViewPiece(Store *view): TextPiece(0), d_view(view) {}
void ViewPiece::read(Reader &reader) {
reader.readByte();
}
-std::string ViewPiece::toString() {
+std::string ViewPiece::toString() const {
return std::string("ViewPiece { ") + d_view->toString() + " }";
}
+void ViewPiece::accept(Visitor &visitor) const {
+ return d_view->accept(visitor);
+}
+
} // namespace odc