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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux