mirror of
https://github.com/git-for-windows/git.git
synced 2026-05-02 08:03:45 -05:00
hash: add a function to look up hash algo structs
In C, it's easy for us to look up a hash algorithm structure by its offset by simply indexing the hash_algos array. However, in Rust, we sometimes need a pointer to pass to a C function, but we have our own hash algorithm abstraction. To get one from the other, let's provide a simple function that looks up the C structure from the offset and expose it in Rust. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
e25c7c9393
commit
9005b5bb72
14
src/hash.rs
14
src/hash.rs
@@ -12,6 +12,7 @@
|
||||
|
||||
use std::error::Error;
|
||||
use std::fmt::{self, Debug, Display};
|
||||
use std::os::raw::c_void;
|
||||
|
||||
pub const GIT_MAX_RAWSZ: usize = 32;
|
||||
|
||||
@@ -177,4 +178,17 @@ impl HashAlgorithm {
|
||||
HashAlgorithm::SHA256 => &Self::SHA256_NULL_OID,
|
||||
}
|
||||
}
|
||||
|
||||
/// A pointer to the C `struct git_hash_algo` for interoperability with C.
|
||||
pub fn hash_algo_ptr(self) -> *const c_void {
|
||||
unsafe { c::hash_algo_ptr_by_number(self as u32) }
|
||||
}
|
||||
}
|
||||
|
||||
pub mod c {
|
||||
use std::os::raw::c_void;
|
||||
|
||||
extern "C" {
|
||||
pub fn hash_algo_ptr_by_number(n: u32) -> *const c_void;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user