module Foreign.Java.Bindings (
printJavaPackageModule,
printJavaClassModule,
printJavaClassBootfile,
printJavaClassModule',
printJavaClassBootfile',
reflectJavaClasses,
findJavaClasses,
javaClassesSE6
) where
import Foreign.Java
import Foreign.Java.Utils
import qualified Foreign.Java.Bindings.JavaSE6
import Foreign.Java.Bindings.JavaTypes
import qualified Foreign.Java.Bindings.Java2Haskell as Java2Haskell
import qualified Foreign.Java.Bindings.ReflectJava as ReflectJava
import Foreign.Java.Bindings.HaskellTypes
import qualified Foreign.Java.Bindings.Haskell2Java as Haskell2Java
import qualified Foreign.Java.Bindings.ReflectHaskell as ReflectHaskell
import Data.Word
import Data.Map (Map)
import qualified Data.List as List
import qualified Data.Map as Map
javaClassesSE6 :: [String]
javaClassesSE6 = Foreign.Java.Bindings.JavaSE6.javaClassesSE6
imports :: String
imports = ((\_ -> let { __ =
concat ["import qualified Foreign.Java as JNI\nimport Foreign.Java ((-->))\nimport qualified Prelude as Prelude\nimport Prelude ((.), ($), (>>=), (>>), return)\nimport qualified Foreign.Java.Bindings.Support as JNIS\nimport Data.Functor ((<$>))\n"]
} in __) undefined)
classInfoSignature :: String
classInfoSignature = "Prelude.String"
classInfo' :: JavaClass -> String
classInfo' clazz = className clazz
packageInfo' packageName classes = packageName
printJavaPackageModule :: String
-> String
-> Map String JavaClass
-> [JavaClass]
-> String
printJavaPackageModule packageName modName classInfo classes = ((\_ -> let { __ =
concat ["{-# LANGUAGE Haskell2010 #-}\n-- | Package @", (packageName), "@\nmodule ", (modName), " (\n", (moduleExports), " info'\n) where\n", (imports), "\n", (moduleImports), "\n-- Information about this package.\ninfo' = ", (show $ packageInfo' packageName classes), "\n", (moduleDeclarations), "\n"]
} in __) undefined)
where moduleDeclarations = Java2Haskell.pkgModDecl classInfo classes
moduleImports = Java2Haskell.pkgModImports classInfo classes
moduleExports = Java2Haskell.pkgModExports classInfo classes
printJavaClassModule :: JavaClass
-> String
-> Map String JavaClass
-> String
printJavaClassModule clazz modName classInfo = ((\_ -> let { __ =
concat ["{-# LANGUAGE Haskell2010 #-}\n-- | ", (show $ classType clazz), " @", (classFullName clazz), "@\nmodule ", (modName), " (\n", (moduleExports), " -- * Information about this class.\n info'\n) where\n", (imports), "\n", (bootfileImports), "\n", (moduleImports), "\ninfo' = ", (show $ classInfo' clazz), "\n", (bootfileDeclarations), "\n", (moduleDeclarations), "\n"]
} in __) undefined)
where bootfileDeclarations = Java2Haskell.classBootDecl classInfo clazz
bootfileImports = Java2Haskell.classBootImports classInfo clazz
moduleDeclarations = Java2Haskell.classModDecl classInfo clazz
moduleImports = Java2Haskell.classModImports classInfo clazz
moduleExports = Java2Haskell.classModExports classInfo clazz
printJavaClassBootfile :: JavaClass
-> String
-> Map String JavaClass
-> String
printJavaClassBootfile clazz modName classInfo = ((\_ -> let { __ =
concat ["{-# LANGUAGE Haskell2010 #-}\n-- Bootfile for class ", (className clazz), "\nmodule ", (modName), " (\n", (bootfileExports), " info'\n) where\n", (imports), "\n", (bootfileImports), "\ninfo' :: ", (classInfoSignature), "\n", (bootfileDeclarations), "\n"]
} in __) undefined)
where bootfileDeclarations = Java2Haskell.classBootDecl classInfo clazz
bootfileImports = Java2Haskell.classBootImports classInfo clazz
bootfileExports = Java2Haskell.classBootExports classInfo clazz
printJavaClassModule' :: JavaClass
-> String
-> Map String JavaClass
-> String
printJavaClassModule' clazz modName classInfo = ((\_ -> let { __ =
concat ["{-# LANGUAGE Haskell2010, TypeFamilies #-}\n-- hidden @", (className clazz), "@\nmodule ", (modName), "__ (\n", (moduleExports), " info'\n) where\n", (imports), "\n", (bootfileImports), "\n", (moduleImports), "\ninfo' = ", (show $ classInfo' clazz), "\n", (bootfileDeclarations), "\n", (moduleDeclarations), "\n"]
} in __) undefined)
where bootfileDeclarations = Java2Haskell.classBootDecl' classInfo clazz
bootfileImports = Java2Haskell.classBootImports' classInfo clazz
moduleDeclarations = Java2Haskell.classModDecl' classInfo clazz
moduleImports = Java2Haskell.classModImports' classInfo clazz
moduleExports = Java2Haskell.classModExports' classInfo clazz
printJavaClassBootfile' :: JavaClass
-> String
-> Map String JavaClass
-> String
printJavaClassBootfile' clazz modName classInfo = ((\_ -> let { __ =
concat ["{-# LANGUAGE Haskell2010 #-}\n-- hidden Bootfile for class ", (className clazz), "\nmodule ", (modName), "__ (\n", (bootfileExports), " info'\n) where\n", (imports), "\n", (bootfileImports), "\ninfo' :: ", (classInfoSignature), "\n", (bootfileDeclarations), "\n"]
} in __) undefined)
where bootfileDeclarations = Java2Haskell.classBootDecl' classInfo clazz
bootfileImports = Java2Haskell.classBootImports' classInfo clazz
bootfileExports = Java2Haskell.classBootExports' classInfo clazz
reflectJavaClasses :: [String]
-> Java [JavaClass]
reflectJavaClasses = ReflectJava.reflectClasses
findJavaClasses :: Word32
-> [String]
-> Java [String]
findJavaClasses = ReflectJava.findClasses