summaryrefslogtreecommitdiffstats
path: root/src/rtf2html/dbg_iter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/rtf2html/dbg_iter.h')
-rw-r--r--src/rtf2html/dbg_iter.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/rtf2html/dbg_iter.h b/src/rtf2html/dbg_iter.h
new file mode 100644
index 0000000..dfbccf2
--- /dev/null
+++ b/src/rtf2html/dbg_iter.h
@@ -0,0 +1,67 @@
+/* This is RTF to HTML converter, implemented as a text filter, generally.
+ Copyright (C) 2003 Valentin Lavrinenko, [email protected]
+
+ available at http://rtf2html.sf.net
+
+ Original available under the terms of the GNU LGPL2, and according
+ to those terms, relicensed under the GNU GPL2 for inclusion in Tellico */
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of version 2 of the GNU General Public License as *
+ * published by the Free Software Foundation; *
+ * *
+ ***************************************************************************/
+
+namespace rtf {
+
+template <class T>
+class dbg_iter_mixin : public virtual T
+{
+ public:
+ int offset;
+ dbg_iter_mixin(const T& t) : T(t)
+ {}
+ T& operator=(const T& t)
+ {
+ return T::operator=(t);
+ }
+ dbg_iter_mixin& operator++ ()
+ {
+ ++offset;
+ T::operator++();
+ return *this;
+ }
+ dbg_iter_mixin operator++ (int i)
+ {
+ ++offset;
+ return T::operator++(i);
+ }
+ char operator *() const
+ {
+ T::value_type c=T::operator*();
+// std::cerr<<offset<<":"<<c<<std::endl;
+ return c;
+ }
+};
+
+template <class T>
+class dbg_iter : public dbg_iter_mixin<T>
+{
+ public:
+ dbg_iter(const T& t) : dbg_iter_mixin<T>(t)
+ {}
+};
+
+template<class T>
+class dbg_iter<std::istreambuf_iterator<T> > :
+ public virtual std::istreambuf_iterator<T>,
+ public dbg_iter_mixin<std::istreambuf_iterator<T> >
+{
+ public:
+ dbg_iter(std::basic_streambuf<T> *buf) : std::istreambuf_iterator<T>(buf)
+ {}
+};
+
+} \ No newline at end of file