mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-22 09:32:53 -06:00
Freeing StablePtr's in PyGF.
This commit is contained in:
@@ -9,6 +9,11 @@ import Foreign.C.Types
|
|||||||
#include "pygf.h"
|
#include "pygf.h"
|
||||||
|
|
||||||
-- type PyPtr = Ptr Py
|
-- type PyPtr = Ptr Py
|
||||||
|
freeSp :: String -> Ptr a -> IO ()
|
||||||
|
freeSp tname p = do
|
||||||
|
sp <- (#peek PyGF, sp) p
|
||||||
|
freeStablePtr sp
|
||||||
|
putStrLn $ "freeing " ++ tname ++ " at " ++ (show p)
|
||||||
|
|
||||||
instance Storable PGF where
|
instance Storable PGF where
|
||||||
sizeOf _ = (#size PyGF)
|
sizeOf _ = (#size PyGF)
|
||||||
@@ -50,6 +55,13 @@ instance Storable Tree where
|
|||||||
sp <- (#peek PyGF, sp) p
|
sp <- (#peek PyGF, sp) p
|
||||||
deRefStablePtr sp
|
deRefStablePtr sp
|
||||||
|
|
||||||
|
foreign export ccall gf_freePGF :: Ptr PGF -> IO ()
|
||||||
|
foreign export ccall gf_freeType :: Ptr Type -> IO ()
|
||||||
|
foreign export ccall gf_freeLanguage :: Ptr Language -> IO ()
|
||||||
|
gf_freePGF = freeSp "pgf"
|
||||||
|
gf_freeType = freeSp "type"
|
||||||
|
gf_freeLanguage = freeSp "language"
|
||||||
|
|
||||||
|
|
||||||
{-foreign export ccall gf_printCId :: Ptr CId-> IO CString
|
{-foreign export ccall gf_printCId :: Ptr CId-> IO CString
|
||||||
gf_printCId p = do
|
gf_printCId p = do
|
||||||
|
|||||||
@@ -56,11 +56,10 @@ int main(int argc, char *argv[])
|
|||||||
} while (*p && k < 5);
|
} while (*p && k < 5);
|
||||||
} else
|
} else
|
||||||
puts("no match");
|
puts("no match");
|
||||||
gf_freeTrees(result);
|
gf_freeTrees(result); */
|
||||||
gf_freeType(cat);
|
gf_freeType(&cat);
|
||||||
gf_freeLanguage(lang);
|
gf_freeLanguage(&lang);
|
||||||
gf_freePGF(pgf); */
|
gf_freePGF(&pgf);
|
||||||
|
|
||||||
gf_exit();
|
gf_exit();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user