0 | module System.UV.Data.File
2 | import Derive.Prelude
4 | %language ElabReflection
8 | data DirentType : Type where
9 | DirentUnknown : DirentType
10 | DirentFile : DirentType
11 | DirentDir : DirentType
12 | DirentLink : DirentType
13 | DirentFifo : DirentType
14 | DirentSocket : DirentType
15 | DirentChar : DirentType
16 | DirentBlock : DirentType
18 | %runElab derive "DirentType" [Show,Eq]
25 | %runElab derive "Flags" [Show,Eq,Ord,Num]
28 | Semigroup Flags where
29 | MkFlags x <+> MkFlags y = MkFlags $
prim__or_Bits32 x y
40 | %runElab derive "File.Mode" [Show,Eq,Ord,Num]
43 | Semigroup File.Mode where
44 | MkMode x <+> MkMode y = MkMode $
prim__or_Bits32 x y
47 | Monoid File.Mode where
51 | direntCode : DirentType -> Bits32
52 | direntCode DirentUnknown = 0
53 | direntCode DirentFile = 1
54 | direntCode DirentDir = 2
55 | direntCode DirentLink = 3
56 | direntCode DirentFifo = 4
57 | direntCode DirentSocket = 5
58 | direntCode DirentChar = 6
59 | direntCode DirentBlock = 7
62 | direntFromCode : Bits32 -> DirentType
63 | direntFromCode 1 = DirentFile
64 | direntFromCode 2 = DirentDir
65 | direntFromCode 3 = DirentLink
66 | direntFromCode 4 = DirentFifo
67 | direntFromCode 5 = DirentSocket
68 | direntFromCode 6 = DirentChar
69 | direntFromCode 7 = DirentBlock
70 | direntFromCode _ = DirentUnknown
121 | SHORT_LIVED : Flags