]> git.lyx.org Git - lyx.git/blob - src/undo.C
small fix with footnote, use stringstream some more
[lyx.git] / src / undo.C
1 /* This file is part of
2  * ======================================================
3  * 
4  *           LyX, The Document Processor
5  *       
6  *           Copyright 1995 Matthias Ettrich
7  *           Copyright 1995-2000 The LyX Team.
8  *
9  * ====================================================== */
10
11 #include <config.h>
12
13 #ifdef __GNUG__
14 #pragma implementation
15 #endif
16
17 #include "undo.h"
18
19
20 Undo::Undo(undo_kind kind_arg,
21            int number_before_arg, int number_behind_arg,
22            int cursor_par_arg, int cursor_pos_arg,
23            LyXParagraph * par_arg)
24 {
25         kind = kind_arg;
26         number_of_before_par = number_before_arg;
27         number_of_behind_par = number_behind_arg;
28         number_of_cursor_par = cursor_par_arg;
29         cursor_pos = cursor_pos_arg;
30         par = par_arg;
31 }
32
33
34 Undo::~Undo()
35 {
36         LyXParagraph * tmppar;
37         while (par) {
38                 tmppar = par;
39                 par = par->next();
40                 delete tmppar;
41         }
42 }
43
44
45 UndoStack::UndoStack()
46         : limit(100) {}
47
48
49 Undo * UndoStack::pop()
50 {
51         if (stakk.empty()) return 0;
52         Undo * result = stakk.front();
53         stakk.pop_front();
54         return result;
55 }
56
57
58 Undo * UndoStack::top()
59 {
60         if (stakk.empty()) return 0;
61         return stakk.front();
62 }
63
64
65 UndoStack::~UndoStack()
66 {
67         clear();
68 }
69
70
71 void UndoStack::clear()
72 {
73         while (!stakk.empty()) {
74                 Undo * tmp = stakk.front();
75                 stakk.pop_front();
76                 delete tmp;
77         }
78 }
79
80
81 void UndoStack::SetStackLimit(Stakk::size_type l)
82 {
83         limit = l;
84 }
85
86
87 void UndoStack::push(Undo * undo_arg)
88 {
89         if (!undo_arg) return;
90         
91         stakk.push_front(undo_arg);
92         if (stakk.size() > limit) {
93                 Undo * tmp = stakk.back();
94                 stakk.pop_back();
95                 delete tmp;
96         }
97 }
98
99
100 bool UndoStack::empty() const {
101         return stakk.empty();
102 }