dmsc/java/classes/
fs.rs

1//! Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
2//!
3//! This file is part of DMSC.
4//! The DMSC project belongs to the Dunimd Team.
5//!
6//! Licensed under the Apache License, Version 2.0 (the "License");
7//! You may not use this file except in compliance with the License.
8//! You may obtain a copy of the License at
9//!
10//!     http://www.apache.org/licenses/LICENSE-2.0
11//!
12//! Unless required by applicable law or agreed to in writing, software
13//! distributed under the License is distributed on an "AS IS" BASIS,
14//! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15//! See the License for the specific language governing permissions and
16//! limitations under the License.
17
18//! # FS Module JNI Bindings
19//!
20//! JNI bindings for DMSC filesystem classes.
21
22use jni::JNIEnv;
23use jni::objects::JClass;
24use jni::sys::jlong;
25use crate::fs::DMSCFileSystem;
26
27#[no_mangle]
28pub extern "system" fn Java_com_dunimd_dmsc_fs_DMSCFileSystem_new0(
29    _env: JNIEnv,
30    _class: JClass,
31) -> jlong {
32    let fs = Box::new(DMSCFileSystem::new_auto_root().unwrap_or_else(|_| DMSCFileSystem::new_with_root(std::env::current_dir().unwrap_or_default())));
33    Box::into_raw(fs) as jlong
34}
35
36#[no_mangle]
37pub extern "system" fn Java_com_dunimd_dmsc_fs_DMSCFileSystem_free0(
38    _env: JNIEnv,
39    _class: JClass,
40    ptr: jlong,
41) {
42    if ptr != 0 {
43        unsafe {
44            let _ = Box::from_raw(ptr as *mut DMSCFileSystem);
45        }
46    }
47}