module Language.JVM.Field
( Field (..)
, fConstantValue
) where
import Data.Binary
import Data.Monoid
import GHC.Generics (Generic)
import Language.JVM.AccessFlag
import Language.JVM.Attribute (Attribute, ConstantValue, fromAttribute')
import Language.JVM.Constant (ConstantRef, ConstantPool)
import Language.JVM.Utils
data Field = Field
{ fAccessFlags :: BitSet16 FAccessFlag
, fNameIndex :: ! ConstantRef
, fDescriptorIndex :: ! ConstantRef
, fAttributes :: SizedList16 Attribute
} deriving (Show, Eq, Generic)
instance Binary Field where
fConstantValue :: ConstantPool -> Field -> Maybe (Either String ConstantValue)
fConstantValue cp =
getFirst . foldMap (First . fromAttribute' cp) . fAttributes