Mercurial > hg
comparison rust/hg-core/src/dirstate/entry.rs @ 48022:f2a9db29cb2d
rust: Make the fields of DirstateEntry private
This is a first step toward making its internal structure equivalent to
Python’s DirstateItem.
Differential Revision: https://phab.mercurial-scm.org/D11461
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Fri, 17 Sep 2021 13:33:45 +0200 |
parents | 08efe5945d2b |
children | 1b2ee68e85f9 |
comparison
equal
deleted
inserted
replaced
48021:627cd8f33db0 | 48022:f2a9db29cb2d |
---|---|
13 /// The C implementation uses all signed types. This will be an issue | 13 /// The C implementation uses all signed types. This will be an issue |
14 /// either when 4GB+ source files are commonplace or in 2038, whichever | 14 /// either when 4GB+ source files are commonplace or in 2038, whichever |
15 /// comes first. | 15 /// comes first. |
16 #[derive(Debug, PartialEq, Copy, Clone)] | 16 #[derive(Debug, PartialEq, Copy, Clone)] |
17 pub struct DirstateEntry { | 17 pub struct DirstateEntry { |
18 pub state: EntryState, | 18 state: EntryState, |
19 pub mode: i32, | 19 mode: i32, |
20 pub mtime: i32, | 20 size: i32, |
21 pub size: i32, | 21 mtime: i32, |
22 } | 22 } |
23 | 23 |
24 pub const V1_RANGEMASK: i32 = 0x7FFFFFFF; | 24 pub const V1_RANGEMASK: i32 = 0x7FFFFFFF; |
25 | 25 |
26 pub const MTIME_UNSET: i32 = -1; | 26 pub const MTIME_UNSET: i32 = -1; |
32 /// A special value used for internal representation of special case in | 32 /// A special value used for internal representation of special case in |
33 /// dirstate v1 format. | 33 /// dirstate v1 format. |
34 pub const SIZE_NON_NORMAL: i32 = -1; | 34 pub const SIZE_NON_NORMAL: i32 = -1; |
35 | 35 |
36 impl DirstateEntry { | 36 impl DirstateEntry { |
37 pub fn from_v1_data( | |
38 state: EntryState, | |
39 mode: i32, | |
40 size: i32, | |
41 mtime: i32, | |
42 ) -> Self { | |
43 Self { | |
44 state, | |
45 mode, | |
46 size, | |
47 mtime, | |
48 } | |
49 } | |
50 | |
51 /// Creates a new entry in "removed" state. | |
52 /// | |
53 /// `size` is expected to be zero, `SIZE_NON_NORMAL`, or | |
54 /// `SIZE_FROM_OTHER_PARENT` | |
55 pub fn new_removed(size: i32) -> Self { | |
56 Self { | |
57 state: EntryState::Removed, | |
58 mode: 0, | |
59 size, | |
60 mtime: 0, | |
61 } | |
62 } | |
63 | |
64 /// TODO: refactor `DirstateMap::add_file` to not take a `DirstateEntry` | |
65 /// parameter and remove this constructor | |
66 pub fn new_for_add_file(mode: i32, size: i32, mtime: i32) -> Self { | |
67 Self { | |
68 // XXX Arbitrary default value since the value is determined later | |
69 state: EntryState::Normal, | |
70 mode, | |
71 size, | |
72 mtime, | |
73 } | |
74 } | |
75 | |
76 pub fn state(&self) -> EntryState { | |
77 self.state | |
78 } | |
79 | |
80 pub fn mode(&self) -> i32 { | |
81 self.mode | |
82 } | |
83 | |
84 pub fn size(&self) -> i32 { | |
85 self.size | |
86 } | |
87 | |
88 pub fn mtime(&self) -> i32 { | |
89 self.mtime | |
90 } | |
91 | |
92 /// Returns `(state, mode, size, mtime)` for the puprose of serialization | |
93 /// in the dirstate-v1 format. | |
94 /// | |
95 /// This includes marker values such as `mtime == -1`. In the future we may | |
96 /// want to not represent these cases that way in memory, but serialization | |
97 /// will need to keep the same format. | |
98 pub fn v1_data(&self) -> (u8, i32, i32, i32) { | |
99 (self.state.into(), self.mode, self.size, self.mtime) | |
100 } | |
101 | |
37 pub fn is_non_normal(&self) -> bool { | 102 pub fn is_non_normal(&self) -> bool { |
38 self.state != EntryState::Normal || self.mtime == MTIME_UNSET | 103 self.state != EntryState::Normal || self.mtime == MTIME_UNSET |
39 } | 104 } |
40 | 105 |
41 pub fn is_from_other_parent(&self) -> bool { | 106 pub fn is_from_other_parent(&self) -> bool { |