changeset 52866:4e5efcaa7e60

rust-pyo3-dirstate: DirstateIdentity class
author Georges Racinet <georges.racinet@cloudcrane.io>
date Wed, 29 Jan 2025 14:05:21 +0100
parents c6707e112d96
children 138e4ce24680
files rust/hg-pyo3/src/dirstate.rs rust/hg-pyo3/src/dirstate/dirstate_map.rs
diffstat 2 files changed, 57 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/rust/hg-pyo3/src/dirstate.rs	Wed Jan 29 14:03:24 2025 +0100
+++ b/rust/hg-pyo3/src/dirstate.rs	Wed Jan 29 14:05:21 2025 +0100
@@ -12,6 +12,8 @@
 //! From Python, this will be seen as `mercurial.pyo3_rustext.dirstate`
 use crate::{exceptions, utils::new_submodule};
 use pyo3::prelude::*;
+mod dirstate_map;
+use dirstate_map::DirstateIdentity;
 
 pub fn init_module<'py>(
     py: Python<'py>,
@@ -20,5 +22,6 @@
     let m = new_submodule(py, package, "dirstate")?;
     m.add("__doc__", "Dirstate - Rust implementation exposed via PyO3")?;
     m.add("FallbackError", py.get_type::<exceptions::FallbackError>())?;
+    m.add_class::<DirstateIdentity>()?;
     Ok(m)
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rust/hg-pyo3/src/dirstate/dirstate_map.rs	Wed Jan 29 14:05:21 2025 +0100
@@ -0,0 +1,54 @@
+// dirstate_map.rs
+//
+// Copyright 2019 Raphaël Gomès <rgomes@octobus.net>
+//           2025 Georges Racinet <georges.racinet@cloudcrane.io>
+//
+// This software may be used and distributed according to the terms of the
+// GNU General Public License version 2 or any later version.
+//! Bindings for the `hg::dirstate::dirstate_map` file provided by the
+//! `hg-core` package.
+
+use pyo3::prelude::*;
+
+use hg::dirstate::dirstate_map::DirstateIdentity as CoreDirstateIdentity;
+
+#[pyclass]
+pub struct DirstateIdentity {
+    #[allow(dead_code)]
+    inner: CoreDirstateIdentity,
+}
+
+#[pymethods]
+impl DirstateIdentity {
+    #[new]
+    #[allow(clippy::too_many_arguments)]
+    fn new(
+        mode: u32,
+        dev: u64,
+        ino: u64,
+        nlink: u64,
+        uid: u32,
+        gid: u32,
+        size: u64,
+        mtime: i64,
+        mtime_nsec: i64,
+        ctime: i64,
+        ctime_nsec: i64,
+    ) -> PyResult<Self> {
+        Ok(Self {
+            inner: CoreDirstateIdentity {
+                mode,
+                dev,
+                ino,
+                nlink,
+                uid,
+                gid,
+                size,
+                mtime,
+                mtime_nsec,
+                ctime,
+                ctime_nsec,
+            },
+        })
+    }
+}