]> git.lyx.org Git - lyx.git/blobdiff - src/changes.h
gettext support, fast_start option, scons all, mingw bug fix and some cleanup for...
[lyx.git] / src / changes.h
index 3552973674e099469c22fe488a9af2c64e05e66a..dabfdf80e818293eeb4689fa6f23cc97677890e8 100644 (file)
@@ -21,7 +21,8 @@
 #include <iosfwd>
 
 
-struct Change {
+class Change {
+public:
        /// the type of change
        enum Type {
                UNCHANGED, // no change
@@ -71,11 +72,8 @@ public:
        /// mark the given change and adjust
        void record(Change, lyx::pos_type pos);
 
-       /// return the change type at the given position
-       Change::Type lookup(lyx::pos_type pos) const;
-
        /// return the change at the given position
-       Change const lookupFull(lyx::pos_type pos) const;
+       Change const lookup(lyx::pos_type pos) const;
 
        /// return true if there is a change in the given range
        bool isChange(lyx::pos_type start, lyx::pos_type end) const;
@@ -83,19 +81,22 @@ public:
        /// return true if there is a deleted or unchanged range contained
        bool isChangeEdited(lyx::pos_type start, lyx::pos_type end) const;
 
-       /// remove the given entry
+       /// remove the given entry. This implies that a character was
+       /// deleted at pos, and will adjust all range bounds past it
        void erase(lyx::pos_type pos);
 
        /// output latex to mark a transition between two changetypes
        /// returns length of text outputted
-       static int latexMarkChange(std::ostream & os, Change::Type old, Change::Type change);
+       static int latexMarkChange(std::ostream & os, Change::Type old,
+               Change::Type change, bool const & output);
 
        /// output .lyx file format for transitions between changes
        static void lyxMarkChange(std::ostream & os, int & column,
                lyx::time_type curtime, Change const & old, Change const & change);
 
 private:
-       struct Range {
+       class Range {
+       public:
                Range(lyx::pos_type s, lyx::pos_type e)
                        : start(s), end(e) {}
 
@@ -106,7 +107,7 @@ private:
                bool contains(lyx::pos_type pos) const;
 
                // does this range contain pos, or can it be appended ?
-               bool loose_contains(lyx::pos_type pos) const;
+               bool containsOrPrecedes(lyx::pos_type pos) const;
 
                // is this range contained within r ?
                bool contained(Range const & r) const;
@@ -121,7 +122,8 @@ private:
        friend bool operator==(Range const & r1, Range const & r2);
        friend bool operator!=(Range const & r1, Range const & r2);
 
-       struct ChangeRange {
+       class ChangeRange {
+       public:
                ChangeRange(lyx::pos_type s, lyx::pos_type e, Change c)
                        : range(Range(s, e)), change(c) {}
                Range range;
@@ -130,22 +132,23 @@ private:
 
        typedef std::vector<ChangeRange> ChangeTable;
 
-       /// our table of changes
+       /// our table of changes, every row a range and change descriptor
        ChangeTable table_;
 
        /// change type for an empty paragraph
        Change::Type empty_type_;
 
-       /// handle a delete
+       /// handle a delete, either logical or physical (see erase)
        void del(Change change, ChangeTable::size_type pos);
 
-       /// handle an add
+       /// handle an add, adjusting range bounds past it
        void add(Change change, ChangeTable::size_type pos);
 
-       /// merge neighbouring ranges
+       /// merge neighbouring ranges, assuming that they are abutting
+       /// (as done by set())
        void merge();
 
-       /// consistency check
+       /// consistency check, needed before merge()
        void check() const;
 
 };