java-classfile/src/Language/Java/Classfile/ConstantPool.hs
2025-07-12 18:24:18 +02:00

20 lines
793 B
Haskell

{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE TypeApplications #-}
module Language.Java.Classfile.ConstantPool (ConstantPool(..)) where
import Data.Word (Word16)
import Data.Array.IArray (Array, listArray)
import Language.Java.Classfile.ConstantPool.Entry (Entry)
import Language.Java.Classfile.Extractable (Extractable (extract))
import Language.Java.Classfile.Extract (Extract, traceIndex)
import Control.Monad (forM)
newtype ConstantPool = ConstantPool (Array Word16 Entry)
deriving stock (Show)
instance Extractable ConstantPool where
extract :: Extract ConstantPool
extract = do
count <- extract @Word16
elements <- forM [1..fromIntegral count - 1] $ \ i -> traceIndex i extract
pure . ConstantPool $ listArray (1, count - 1) elements