X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fchanges.h;h=1103bd2012fe204f962369d6fbb651c4c28513fa;hb=65ca7003ba47b7348610393a9a0d2d309b4e9702;hp=ac378e59257916c61ee55c2b3e56b8a37224b0e8;hpb=ae87b945156585b080ed155919f64b80e48d7a04;p=lyx.git diff --git a/src/changes.h b/src/changes.h index ac378e5925..1103bd2012 100644 --- a/src/changes.h +++ b/src/changes.h @@ -1,11 +1,14 @@ +// -*- C++ -*- /** * \file changes.h - * Copyright 2002 the LyX Team - * Read the file COPYING + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * Record changes in a paragraph. + * \author John Levon + * + * Full author contact details are available in file CREDITS. * - * \author John Levon + * Record changes in a paragraph. */ #ifndef CHANGES_H @@ -16,9 +19,10 @@ #include #include -#include -struct Change { + +class Change { +public: /// the type of change enum Type { UNCHANGED, // no change @@ -29,19 +33,19 @@ struct Change { Change(Type t = UNCHANGED, int a = 0, lyx::time_type ct = 0) : type(t), author(a), changetime(ct) {} - Type type; + Type type; int author; - lyx::time_type changetime; + lyx::time_type changetime; }; - + bool operator==(Change const & l, Change const & r); bool operator!=(Change const & l, Change const & r); - + class Changes { public: - + Changes(Change::Type type); ~Changes(); @@ -52,10 +56,10 @@ public: void reset(Change::Type type) { empty_type_ = type; } - + /// set the position to the given change void set(Change change, lyx::pos_type pos); - + /// set the position to the given change void set(Change::Type, lyx::pos_type pos); @@ -79,20 +83,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 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) {} @@ -110,35 +116,36 @@ private: // do the ranges intersect ? bool intersects(Range const & r) const; - + lyx::pos_type start; lyx::pos_type end; }; - + 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; Change change; }; - - typedef std::vector ChangeTable; + + typedef std::vector ChangeTable; /// our table of changes ChangeTable table_; - + /// change type for an empty paragraph Change::Type empty_type_; - + /// handle a delete void del(Change change, ChangeTable::size_type pos); /// handle an add void add(Change change, ChangeTable::size_type pos); - + /// merge neighbouring ranges void merge();