axfs_vfs/
macros.rs

1/// When implement [`VfsNodeOps`] on a directory node, add dummy file operations
2/// that just return an error.
3///
4/// [`VfsNodeOps`]: crate::VfsNodeOps
5#[macro_export]
6macro_rules! impl_vfs_dir_default {
7    () => {
8        fn read_at(&self, _offset: u64, _buf: &mut [u8]) -> $crate::VfsResult<usize> {
9            $crate::__priv::ax_err!(IsADirectory)
10        }
11
12        fn write_at(&self, _offset: u64, _buf: &[u8]) -> $crate::VfsResult<usize> {
13            $crate::__priv::ax_err!(IsADirectory)
14        }
15
16        fn fsync(&self) -> $crate::VfsResult {
17            $crate::__priv::ax_err!(IsADirectory)
18        }
19
20        fn truncate(&self, _size: u64) -> $crate::VfsResult {
21            $crate::__priv::ax_err!(IsADirectory)
22        }
23
24        #[inline]
25        fn as_any(&self) -> &dyn core::any::Any {
26            self
27        }
28    };
29}
30
31/// When implement [`VfsNodeOps`] on a non-directory node, add dummy directory
32/// operations that just return an error.
33///
34/// [`VfsNodeOps`]: crate::VfsNodeOps
35#[macro_export]
36macro_rules! impl_vfs_non_dir_default {
37    () => {
38        fn lookup(
39            self: $crate::__priv::Arc<Self>,
40            _path: &str,
41        ) -> $crate::VfsResult<$crate::VfsNodeRef> {
42            $crate::__priv::ax_err!(NotADirectory)
43        }
44
45        fn create(&self, _path: &str, _ty: $crate::VfsNodeType) -> $crate::VfsResult {
46            $crate::__priv::ax_err!(NotADirectory)
47        }
48
49        fn remove(&self, _path: &str) -> $crate::VfsResult {
50            $crate::__priv::ax_err!(NotADirectory)
51        }
52
53        fn read_dir(
54            &self,
55            _start_idx: usize,
56            _dirents: &mut [$crate::VfsDirEntry],
57        ) -> $crate::VfsResult<usize> {
58            $crate::__priv::ax_err!(NotADirectory)
59        }
60
61        #[inline]
62        fn as_any(&self) -> &dyn core::any::Any {
63            self
64        }
65    };
66}