Mercurial > hg4j
comparison src/org/tmatesoft/hg/internal/Patch.java @ 534:243202f1bda5
Commit: refactor revision creation code from clone command to work separately, fit into existing library structure
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Mon, 04 Feb 2013 18:00:55 +0100 |
parents | e6f72c9829a6 |
children | 47dfa0ec7e35 |
comparison
equal
deleted
inserted
replaced
533:e6f72c9829a6 | 534:243202f1bda5 |
---|---|
152 da.readBytes(src, 0, len); | 152 da.readBytes(src, 0, len); |
153 starts.add(s); | 153 starts.add(s); |
154 ends.add(e); | 154 ends.add(e); |
155 data.add(src); | 155 data.add(src); |
156 } | 156 } |
157 | 157 |
158 /** | |
159 * @return how many bytes the patch would take if written down using BundleFormat structure (start, end, length, data) | |
160 */ | |
161 public int serializedLength() { | |
162 int totalDataLen = 0; | |
163 for (byte[] d : data) { | |
164 totalDataLen += d.length; | |
165 } | |
166 int prefix = 3 * 4 * count(); // 3 integer fields per entry * sizeof(int) * number of entries | |
167 return prefix + totalDataLen; | |
168 } | |
169 | |
170 /*package-local*/ void serialize(DataSerializer out) throws IOException { | |
171 for (int i = 0, x = data.size(); i < x; i++) { | |
172 final int start = starts.get(i); | |
173 final int end = ends.get(i); | |
174 byte[] d = data.get(i); | |
175 out.writeInt(start, end, d.length); | |
176 out.write(d, 0, d.length); | |
177 } | |
178 } | |
179 | |
158 private void add(Patch p, int i) { | 180 private void add(Patch p, int i) { |
159 add(p.starts.get(i), p.ends.get(i), p.data.get(i)); | 181 add(p.starts.get(i), p.ends.get(i), p.data.get(i)); |
160 } | 182 } |
161 | 183 |
162 /*package-local*/ void add(int start, int end, byte[] d) { | 184 /*package-local*/ void add(int start, int end, byte[] d) { |
361 r.add(this, p1); | 383 r.add(this, p1); |
362 p1++; | 384 p1++; |
363 }; | 385 }; |
364 return r; | 386 return r; |
365 } | 387 } |
388 | |
389 public class PatchDataSource implements DataSerializer.DataSource { | |
390 | |
391 public void serialize(DataSerializer out) throws IOException { | |
392 Patch.this.serialize(out); | |
393 } | |
394 | |
395 public int serializeLength() { | |
396 return Patch.this.serializedLength(); | |
397 } | |
398 } | |
366 } | 399 } |