Make Nature a trait
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-11-27 17:36:42 +01:00
parent efd1acdfa5
commit 996a35ffa4
7 changed files with 56 additions and 33 deletions

View File

@@ -21,7 +21,7 @@ unsafe extern "C" fn nature_library_drop(ptr: OwnedPtr<NatureLibrary>) {
unsafe extern "C" fn nature_library_load_nature(
mut ptr: ExternPointer<NatureLibrary>,
name: BorrowedPtr<c_char>,
nature: OwnedPtr<Arc<Nature>>,
nature: OwnedPtr<Arc<dyn Nature>>,
) {
ptr.as_mut()
.load_nature(CStr::from_ptr(name).into(), nature.as_ref().unwrap().clone())
@@ -32,7 +32,7 @@ unsafe extern "C" fn nature_library_load_nature(
unsafe extern "C" fn nature_library_get_nature(
ptr: ExternPointer<NatureLibrary>,
name: BorrowedPtr<c_char>,
) -> IdentifiablePointer<Arc<Nature>> {
) -> IdentifiablePointer<Arc<dyn Nature>> {
if let Some(nature) = ptr.as_ref().get_nature(&CStr::from_ptr(name).into()) {
nature.clone().into()
} else {
@@ -44,7 +44,7 @@ unsafe extern "C" fn nature_library_get_nature(
#[no_mangle]
unsafe extern "C" fn nature_library_get_nature_name(
ptr: ExternPointer<NatureLibrary>,
nature: BorrowedPtr<Arc<Nature>>,
nature: BorrowedPtr<Arc<dyn Nature>>,
) -> OwnedPtr<c_char> {
CString::new(ptr.as_ref().get_nature_name(nature.as_ref().unwrap()).str())
.unwrap()