Thread (138 messages) 138 messages, 11 authors, 2025-01-30

Re: [RFC PATCH 2/6] repository: add initialize_repo wrapper without pointer

From: Mike Hommey <hidden>
Date: 2024-08-07 22:52:51

On Wed, Aug 07, 2024 at 11:21:27AM -0700, Josh Steadmon wrote:
Non-C external consumers of libgit.a have to redefine the `repository`
object in their own language if they want to call
initialize_repository() to ensure memory for the object is allocated
correctly. This is not ideal for external consumers that have no need
for the entire `the_repository` object but need to call other functions
from an initialized repository. Therefore, add a friendly
initialize_repository() wrapper without a `the_repository` pointer.
Technically speaking, you don't really need this.

You can define `repository` as an opaque type in Rust:
#[allow(non_camel_case_types)]
#[repr(C)]
pub struct repository([u8; 0]);
And define `the_repository` as an extern symbol:
extern "C" {
    pub static mut the_repository: *mut repository;
}
Mike
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help