]> git.lyx.org Git - lyx.git/blob - src/dispatchresult.h
more dispatch work
[lyx.git] / src / dispatchresult.h
1 // -*- C++ -*-
2 /**
3  * \file dispatchresult.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author none
8  * \author Lars Gullik Bjønnes
9  *
10  * Full author contact details are available in file CREDITS.
11  */
12
13 #ifndef DISPATCH_RESULT_H
14 #define DISPATCH_RESULT_H
15
16 /** Dispatch result codes
17         DISPATCHED          = the inset catched the action
18         DISPATCHED_NOUPDATE = the inset catched the action and no update
19                         is needed here to redraw the inset
20         FINISHED            = the inset must be unlocked as a result
21                         of the action
22         FINISHED_RIGHT      = FINISHED, but put the cursor to the RIGHT of
23                         the inset.
24         FINISHED_UP         = FINISHED, but put the cursor UP of
25                         the inset.
26         FINISHED_DOWN       = FINISHED, but put the cursor DOWN of
27                         the inset.
28         UNDISPATCHED        = the action was not catched, it should be
29                         dispatched by lower level insets
30 */
31 enum dispatch_result_t {
32         UNDISPATCHED = 0,
33         DISPATCHED,
34         DISPATCHED_NOUPDATE,
35         FINISHED,
36         FINISHED_RIGHT,
37         FINISHED_UP,
38         FINISHED_DOWN,
39         FINISHED_POP
40 };
41
42 /** \c DispatchResult is a wrapper for dispatch_result_t.
43  *  It can be forward-declared and passed as a function argument without
44  *  having to expose insetbase.h.
45  */
46 class DispatchResult {
47 public:
48         DispatchResult()
49                 : val_(UNDISPATCHED) {}
50         DispatchResult(dispatch_result_t val) : val_(val) {}
51         dispatch_result_t val() const { return val_; }
52 private:
53         dispatch_result_t val_;
54 };
55
56
57 inline
58 bool operator==(DispatchResult const & lhs, DispatchResult const & rhs)
59 {
60         return lhs.val() == rhs.val();
61 }
62
63
64 inline
65 bool operator!=(DispatchResult const & lhs, DispatchResult const & rhs)
66 {
67         return !(lhs == rhs);
68 }
69
70
71 // This operator is temporary, will be removed with the introduction of
72 // a status field in DispatchResult.
73 inline
74 bool operator>=(DispatchResult const & lhs, DispatchResult const & rhs)
75 {
76         return lhs.val() >= rhs.val();
77 }
78
79 #endif // DISPATCH_RESULT_H