Example program for 'unloadAll'.

This commit is contained in:
lemmih 2005-05-19 03:23:30 +00:00
parent fc58e81ed6
commit 7dbaf7fe88
6 changed files with 52 additions and 0 deletions

View File

@ -0,0 +1,7 @@
module Dep ( resource ) where
import API
import Data.Dynamic
import Prelude hiding (null)
resource = null

View File

@ -0,0 +1,4 @@
TEST= unloadAll/null
EXTRA_OBJS=Null.o Dep.o
TOP=../../..
include ../../build.mk

View File

@ -0,0 +1,12 @@
module Null ( resource ) where
import API
import Data.Dynamic
import Prelude hiding (null)
import qualified Dep
resource = Dep.resource
-- ! this has to be special: it can't be overridden by the user.
resource_dyn :: Dynamic
resource_dyn = toDyn resource

View File

@ -0,0 +1,12 @@
{-# OPTIONS -fglasgow-exts #-}
module API where
import Data.Dynamic
data Null = Null { a, b :: Int }
deriving (Typeable, Show)
null :: Null
null = Null { a = 42 , b = 1 }

View File

@ -0,0 +1,15 @@
import System.Plugins
import API
-- an example where we just want to load an object and run it
main = do
m_v <- load_ "../Null.o" ["../api",".."] "resource"
t <- load_ "../Dep.o" ["../api"] "resource"
case m_v of
LoadFailure err -> error (unlines err)
LoadSuccess m v -> do putStrLn ( show (a v) ) ; unloadAll m
case t of
LoadFailure err -> error (unlines err)
LoadSuccess m v -> do putStrLn ( show (a v) ) ; unloadAll m

View File

@ -0,0 +1,2 @@
42
42