@@ -127,6 +127,16 @@ import qualified Data.Vector.Unboxed as VU
127import qualified Data.Aeson.Encoding.Builder as EB
127import qualified Data.Aeson.Encoding.Builder as EB
128import qualified Data.ByteString.Builder as B
128import qualified Data.ByteString.Builder as B
130+import qualified GHC.Exts as Exts
131+import qualified Data.Primitive.Array as PM
132+import qualified Data.Primitive.SmallArray as PM
133+import qualified Data.Primitive.Types as PM
135+#if (MIN_VERSION_primitive(0,6,4))
136+import qualified Data.Primitive.UnliftedArray as PM
137+import qualified Data.Primitive.PrimArray as PM
130#if !(MIN_VERSION_bytestring(0,10,0))
140#if !(MIN_VERSION_bytestring(0,10,0))
131import Foreign.ForeignPtr (withForeignPtr)
141import Foreign.ForeignPtr (withForeignPtr)
132import Foreign.Marshal.Utils (copyBytes)
142import Foreign.Marshal.Utils (copyBytes)
@@ -1904,6 +1914,30 @@ dotNetTime (DotNetTime t) = secs ++ formatMillis t ++ ")/"
1904formatMillis :: (FormatTime t) => t -> String
1914formatMillis :: (FormatTime t) => t -> String
1905formatMillis = take 3 . formatTime defaultTimeLocale "%q"
1915formatMillis = take 3 . formatTime defaultTimeLocale "%q"
1917+-------------------------------------------------------------------------------
1919+-------------------------------------------------------------------------------
1921+instance ToJSON a => ToJSON (PM.Array a) where
1922+ -- note: we could do better than this if vector exposed the data
1923+ -- constructor in Data.Vector.
1924+ toJSON = toJSON . Exts.toList
1925+ toEncoding = toEncoding . Exts.toList
1927+instance ToJSON a => ToJSON (PM.SmallArray a) where
1928+ toJSON = toJSON . Exts.toList
1929+ toEncoding = toEncoding . Exts.toList
1931+#if (MIN_VERSION_primitive(0,6,4))
1932+instance (PM.Prim a,ToJSON a) => ToJSON (PM.PrimArray a) where
1933+ toJSON = toJSON . Exts.toList
1934+ toEncoding = toEncoding . Exts.toList
1936+instance (PM.PrimUnlifted a,ToJSON a) => ToJSON (PM.UnliftedArray a) where
1937+ toJSON = toJSON . Exts.toList
1938+ toEncoding = toEncoding . Exts.toList
1907-------------------------------------------------------------------------------
1941-------------------------------------------------------------------------------
1909-------------------------------------------------------------------------------
1943-------------------------------------------------------------------------------