Show More
@@ -260,6 +260,10 b' py_class!(pub class MixedIndex |py| {' | |||
|
260 | 260 | } |
|
261 | 261 | } |
|
262 | 262 | |
|
263 | def nodemap_data_all(&self) -> PyResult<PyBytes> { | |
|
264 | self.inner_nodemap_data_all(py) | |
|
265 | } | |
|
266 | ||
|
263 | 267 | |
|
264 | 268 | }); |
|
265 | 269 | |
@@ -320,6 +324,29 b' impl MixedIndex {' | |||
|
320 | 324 | pub fn clone_cindex(&self, py: Python) -> cindex::Index { |
|
321 | 325 | self.cindex(py).borrow().clone_ref(py) |
|
322 | 326 | } |
|
327 | ||
|
328 | /// Returns the full nodemap bytes to be written as-is to disk | |
|
329 | fn inner_nodemap_data_all(&self, py: Python) -> PyResult<PyBytes> { | |
|
330 | let nodemap = self.get_nodetree(py)?.borrow_mut().take().unwrap(); | |
|
331 | let (readonly, bytes) = nodemap.into_readonly_and_added_bytes(); | |
|
332 | ||
|
333 | // If there's anything readonly, we need to build the data again from | |
|
334 | // scratch | |
|
335 | let bytes = if readonly.len() > 0 { | |
|
336 | let mut nt = NodeTree::load_bytes(Box::new(vec![]), 0); | |
|
337 | self.fill_nodemap(py, &mut nt)?; | |
|
338 | ||
|
339 | let (readonly, bytes) = nt.into_readonly_and_added_bytes(); | |
|
340 | assert_eq!(readonly.len(), 0); | |
|
341 | ||
|
342 | bytes | |
|
343 | } else { | |
|
344 | bytes | |
|
345 | }; | |
|
346 | ||
|
347 | let bytes = PyBytes::new(py, &bytes); | |
|
348 | Ok(bytes) | |
|
349 | } | |
|
323 | 350 | } |
|
324 | 351 | |
|
325 | 352 | fn revlog_error(py: Python) -> PyErr { |
General Comments 0
You need to be logged in to leave comments.
Login now