Mercurial > public > mercurial-scm > hg-stable
diff rust/hg-cpython/src/lib.rs @ 42330:e240bec26626
rust-dirstate: add rust-cpython bindings to the new parse/pack functions
This allows for Python code to call `parse/pack_dirstate` transparently.
These bindings are heavy given the relatively simple task, as they are bound
to implementation details of both the C and Python code. They will be slimmed
down in future patches and eventually completely removed once more of the
dirstate code has been refactored/rewritten in Rust.
Both functions emulate the mutate-on-loop style of the Python and C
implementations by looping over changed items in the compatibility layer,
instead of at the core functions.
Differential Revision: https://phab.mercurial-scm.org/D6349
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Mon, 06 May 2019 22:50:34 +0200 |
parents | 13b64247f48f |
children | 94f3a73b6672 |
line wrap: on
line diff
--- a/rust/hg-cpython/src/lib.rs Mon May 06 22:48:09 2019 +0200 +++ b/rust/hg-cpython/src/lib.rs Mon May 06 22:50:34 2019 +0200 @@ -23,6 +23,7 @@ extern crate cpython; extern crate hg; extern crate libc; +extern crate python27_sys; pub mod ancestors; mod cindex; @@ -30,6 +31,7 @@ pub mod dagops; pub mod discovery; pub mod exceptions; +pub mod dirstate; py_module_initializer!(rustext, initrustext, PyInit_rustext, |py, m| { m.add( @@ -42,6 +44,7 @@ m.add(py, "ancestor", ancestors::init_module(py, &dotted_name)?)?; m.add(py, "dagop", dagops::init_module(py, &dotted_name)?)?; m.add(py, "discovery", discovery::init_module(py, &dotted_name)?)?; + m.add(py, "dirstate", dirstate::init_module(py, &dotted_name)?)?; m.add(py, "GraphError", py.get_type::<exceptions::GraphError>())?; Ok(()) });