doc: everything
This commit is contained in:
parent
e30e3b02e1
commit
f85f3f8b79
23 changed files with 227 additions and 77 deletions
|
@ -1,3 +1,5 @@
|
|||
-- | Classfile module, it contains everything from the binary file representation.
|
||||
|
||||
{-# LANGUAGE DerivingVia #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StandaloneKindSignatures #-}
|
||||
|
@ -7,6 +9,8 @@
|
|||
{-# LANGUAGE FlexibleInstances #-}
|
||||
{-# LANGUAGE UndecidableInstances #-}
|
||||
{-# LANGUAGE TypeFamilies #-}
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE InstanceSigs #-}
|
||||
module Language.Java.Classfile (Classfile(..)) where
|
||||
|
||||
import GHC.Generics (Generic, Generically(Generically))
|
||||
|
@ -18,15 +22,17 @@ import Language.Java.Classfile.Version (Version)
|
|||
import Language.Java.Classfile.Magic (Magic)
|
||||
import Language.Java.Classfile.Extractable (Extractable)
|
||||
import Language.Java.Classfile.ConstantPool (ConstantPool)
|
||||
import Language.Java.Classfile.Flags (Flags)
|
||||
import Language.Java.Classfile.ClassFlag (ClassFlag)
|
||||
import Language.Java.Classfile.Flags (Flags, FlagMask (..))
|
||||
import Language.Java.Classfile.ConstantPool.References (Class)
|
||||
import Language.Java.Classfile.Interfaces (Interfaces)
|
||||
import Language.Java.Classfile.Fields (Fields)
|
||||
import Language.Java.Classfile.Methods (Methods)
|
||||
import Language.Java.Classfile.Attributes (Attributes)
|
||||
import Data.Word (Word16)
|
||||
|
||||
|
||||
-- | 'Stage'-indexed classfile. It can represent a class, an interface or a module.
|
||||
|
||||
type Classfile :: Stage -> Type
|
||||
data Classfile stage = Classfile
|
||||
{ magic :: Magic stage
|
||||
|
@ -51,3 +57,29 @@ data family ClassFlags stage
|
|||
newtype instance ClassFlags Parse = ClassFlags (Flags ClassFlag)
|
||||
deriving stock (Show, Generic)
|
||||
deriving Extractable via Generically (ClassFlags Parse)
|
||||
|
||||
data ClassFlag
|
||||
= Public
|
||||
| Final
|
||||
| Super
|
||||
| Interface
|
||||
| Abstract
|
||||
| Synthetic
|
||||
| Annotation
|
||||
| Enum
|
||||
| Module
|
||||
deriving (Show, Eq, Ord, Enum, Bounded)
|
||||
|
||||
instance FlagMask ClassFlag where
|
||||
type FlagType ClassFlag = Word16
|
||||
maskOf :: ClassFlag -> FlagType ClassFlag
|
||||
maskOf = \case
|
||||
Public -> 0x0001
|
||||
Final -> 0x0010
|
||||
Super -> 0x0020
|
||||
Interface -> 0x0200
|
||||
Abstract -> 0x0400
|
||||
Synthetic -> 0x1000
|
||||
Annotation -> 0x2000
|
||||
Enum -> 0x4000
|
||||
Module -> 0x8000
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue