module JVM.Builder
(module JVM.Builder.Monad,
- module JVM.Builder.Instructions)
- where
+ module JVM.Builder.Instructions,
+ arrayOf, sizedArray
+ ) where
+
+import JVM.ClassFile
import JVM.Builder.Monad
import JVM.Builder.Instructions
+arrayOf :: FieldType -> FieldType
+arrayOf t = Array Nothing t
+
+sizedArray :: Int -> FieldType -> FieldType
+sizedArray n t = Array (Just n) t
+
module JVM.Common where
import Codec.Binary.UTF8.String hiding (encode, decode)
-import Control.Applicative
import Data.Binary
import Data.Binary.Put
import qualified Data.ByteString.Lazy as B
import Data.Char
import Data.String
-import qualified Data.Set as S
import qualified Data.Map as M
import JVM.ClassFile
import qualified Data.ByteString.Lazy as B
import Text.Printf
-import JVM.Common
+import JVM.Common ()
import JVM.ClassFile
import JVM.Converter
import JVM.Assembler
import qualified Java.Lang
import qualified Java.IO
-hello :: NameType Method
-hello = NameType "hello" $ MethodSignature [IntType] ReturnsVoid
-
test :: Generate ()
test = do
newMethod [ACC_PUBLIC] "<init>" [] ReturnsVoid $ do
pop
i0 RETURN
- newMethod [ACC_PUBLIC, ACC_STATIC] "main" [Array Nothing Java.Lang.stringClass] ReturnsVoid $ do
+ newMethod [ACC_PUBLIC, ACC_STATIC] "main" [arrayOf Java.Lang.stringClass] ReturnsVoid $ do
iconst_5
invokeStatic "Test" hello
i0 RETURN
return ()
+testClass :: Class Resolved
testClass = generate "Test" test
main = do
{-# LANGUAGE OverloadedStrings #-}
module Main where
-import Control.Monad
-import Data.Array
import Data.Binary
import System.Environment
-import qualified Data.ByteString.Lazy as B
-import Text.Printf
import qualified Data.Map as M
import JVM.Common