comparison rep/translator/TranslatorImpl.java @ 327:7b6dede07f4a

*** empty log message ***
author kono
date Sat, 11 Oct 2008 19:31:13 +0900
parents b1a6acf0b8a9
children 36faf76a087c
comparison
equal deleted inserted replaced
326:b1a6acf0b8a9 327:7b6dede07f4a
16 public int eid; 16 public int eid;
17 /* 17 /*
18 * queue が5つもいるって、あまりに馬鹿げてる。 18 * queue が5つもいるって、あまりに馬鹿げてる。
19 */ 19 */
20 public REPCommandOptimizer optimizer; 20 public REPCommandOptimizer optimizer;
21 private LinkedList<REPCommand> sentCmds;
22 private LinkedList<REPCommand> unMergedCmds; 21 private LinkedList<REPCommand> unMergedCmds;
23 public LinkedList<REPCommand> sentMergedList; 22 public LinkedList<REPCommand> sentMergedList;
24 private LinkedList<REPCommand> mergeAgainList; 23 private LinkedList<REPCommand> mergeAgainList;
25 boolean merge_mode = false; 24 boolean merge_mode = false;
26 25
27 public TranslatorImpl(int _eid,REPCommandOptimizer opt){ 26 public TranslatorImpl(int _eid,REPCommandOptimizer opt){
28 eid = _eid; 27 eid = _eid;
29 optimizer = opt; 28 optimizer = opt;
30 sentCmds = new LinkedList<REPCommand>();
31 unMergedCmds = new LinkedList<REPCommand>(); 29 unMergedCmds = new LinkedList<REPCommand>();
32 mergeAgainList = new LinkedList<REPCommand>(); 30 mergeAgainList = new LinkedList<REPCommand>();
33 sentMergedList = new LinkedList<REPCommand>(); 31 sentMergedList = new LinkedList<REPCommand>();
34 } 32 }
35 33
38 * The command is sent to the next editor 36 * The command is sent to the next editor
39 * @param cmd 37 * @param cmd
40 * @return translated command. 38 * @return translated command.
41 */ 39 */
42 public REPCommand transSendCmd(REPCommand cmd){ 40 public REPCommand transSendCmd(REPCommand cmd){
43 sentCmds.add(cmd); 41 assert(cmd.eid==eid);
44 unMergedCmds.add(cmd); 42 unMergedCmds.add(cmd);
45 43
46 //マージ中にユーザから割り込みがあった場合 44 //マージ中にユーザから割り込みがあった場合
47 if(isMerging()){ 45 if(isMerging()){
48 mergeAgainList.add(cmd); 46 mergeAgainList.add(cmd);
99 editor.send(m); 97 editor.send(m);
100 } 98 }
101 return true; 99 return true;
102 } 100 }
103 101
104 public REPCommand prev() {
105 return sentCmds.poll();
106 }
107
108 private REPCommand createUndo(REPCommand cmd){ 102 private REPCommand createUndo(REPCommand cmd){
109 REPCommand retCmd = new REPCommand(cmd); 103 REPCommand retCmd = new REPCommand(cmd);
110 if (cmd.cmd==REP.REPCMD_INSERT) retCmd.cmd=REP.REPCMD_DELETE; 104 if (cmd.cmd==REP.REPCMD_INSERT) retCmd.cmd=REP.REPCMD_DELETE;
111 else if (cmd.cmd==REP.REPCMD_DELETE) retCmd.cmd=REP.REPCMD_INSERT; 105 else if (cmd.cmd==REP.REPCMD_DELETE) retCmd.cmd=REP.REPCMD_INSERT;
112 return retCmd; 106 return retCmd;
213 } 207 }
214 208
215 public boolean isFinished() { 209 public boolean isFinished() {
216 if(unMergedCmds.size() > 0) return false; 210 if(unMergedCmds.size() > 0) return false;
217 if(sentMergedList.size() > 0) return false; 211 if(sentMergedList.size() > 0) return false;
218 if(sentCmds.size() > 0) return false;
219 return true; 212 return true;
220 } 213 }
221 214
222 public boolean isMerging() { 215 public boolean isMerging() {
223 return merge_mode; 216 return merge_mode;