From 055c0d0d5a5bb0dc75904fe53df7f2e4f5732a8f Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 21 May 2008 09:26:44 +0000 Subject: GF/src is now for 2.9, and the new sources are in src-3.0 - keep it this way until the release of GF 3 --- src-3.0/GF/Data/SharedString.hs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src-3.0/GF/Data/SharedString.hs (limited to 'src-3.0/GF/Data/SharedString.hs') diff --git a/src-3.0/GF/Data/SharedString.hs b/src-3.0/GF/Data/SharedString.hs new file mode 100644 index 000000000..9d037b512 --- /dev/null +++ b/src-3.0/GF/Data/SharedString.hs @@ -0,0 +1,19 @@ + +module GF.Data.SharedString (shareString) where + +import Data.HashTable as H +import System.IO.Unsafe (unsafePerformIO) + +{-# NOINLINE stringPool #-} +stringPool :: HashTable String String +stringPool = unsafePerformIO $ new (==) hashString + +{-# NOINLINE shareString #-} +shareString :: String -> String +shareString s = unsafePerformIO $ do + mv <- H.lookup stringPool s + case mv of + Just s' -> return s' + Nothing -> do + H.insert stringPool s s + return s -- cgit v1.2.3