OSDN Git Service

Fix issue #940: Replace slow (2)
[winmerge-jp/winmerge-jp.git] / Src / MovedLines.cpp
1 /** 
2  * @file  MovedLines.cpp
3  *
4  * @brief Implementation of MovedLines class.
5  */
6
7 #include "pch.h"
8 #include "MovedLines.h"
9
10 /**
11  * @brief clear the lists of moved blocks.
12  */
13 void MovedLines::Clear()
14 {
15         m_moved0.clear();
16         m_moved1.clear();
17 }
18
19 /**
20  * @brief Add moved block to the list.
21  * @param [in] side1 First side we are mapping.
22  * @param [in] line1 Linenumber in side first side.
23  * @param [in] line2 Linenumber in second side.
24  */
25 void MovedLines::Add(SIDE side1, unsigned line1,        unsigned line2)
26 {
27         MovedLinesMap *list;
28         if (side1 == SIDE::LEFT)
29                 list = &m_moved0;
30         else
31                 list = &m_moved1;
32
33         (*list)[line1] = line2;
34 }
35
36 /**
37  * @brief Check if line is in moved block.
38  * @param [in] line Linenumber to check.
39  * @param [in] side Side of the linenumber.
40  */
41 int MovedLines::LineInBlock(unsigned line, SIDE side) const
42 {
43         if (side == SIDE::LEFT)
44                 return SecondSideInMovedBlock(line);
45         else
46                 return FirstSideInMovedBlock(line);
47 }
48
49 /**
50  * @brief Get right->left info for a moved line (real line number)
51  */
52 int MovedLines::FirstSideInMovedBlock(unsigned secondSideLine) const
53 {
54         MovedLinesMap::const_iterator iter;
55         iter = m_moved1.find(secondSideLine);
56         if (iter != m_moved1.end())
57                 return iter->second;
58         else
59                 return -1;
60 }
61
62 /**
63  * @brief Get left->right info for a moved line (real line number)
64  */
65 int MovedLines::SecondSideInMovedBlock(unsigned firstSideLine) const
66 {
67         MovedLinesMap::const_iterator iter;
68         iter = m_moved0.find(firstSideLine);
69         if (iter != m_moved0.end())
70                 return iter->second;
71         else
72                 return -1;
73 }