Add generic derivations and To/FromJSON instances
This commit is contained in:
+16
-17
@@ -1,3 +1,4 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# OPTIONS_GHC -Wno-missing-signatures #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
@@ -6,25 +7,16 @@
|
||||
module Shape.Data
|
||||
where
|
||||
import Geometry.Data
|
||||
|
||||
--import Data.Vector.Fusion.Util
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Control.Lens
|
||||
import Streaming
|
||||
type Shape' = Stream (Of ShapeObj) IO ()
|
||||
type Shape = [ShapeObj]
|
||||
|
||||
--_shVertices :: Shape -> [ShapeV]
|
||||
--{-# INLINE _shVertices #-}
|
||||
--_shVertices = concatMap _shVs
|
||||
|
||||
--shVList :: Shape -> [ShapeV]
|
||||
--{-# INLINE shVList #-}
|
||||
--shVList = _shVertices
|
||||
--shVList = DL.toList . _shVertices
|
||||
|
||||
{-# INLINE shVfromList #-}
|
||||
shVfromList = id
|
||||
--shVfromList = DL.fromList
|
||||
|
||||
{-# INLINE shEfromList #-}
|
||||
shEfromList = id
|
||||
|
||||
@@ -32,17 +24,24 @@ data ShapeObj = ShapeObj
|
||||
{ _shType :: ShapeType
|
||||
, _shVs :: [ShapeV]
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ShapeObj where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ShapeObj
|
||||
newtype ShapeType = TopPrism Int
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ShapeType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ShapeType
|
||||
-- edges are given by four consecutive points
|
||||
data ShapeV = ShapeV
|
||||
{_svPos :: Point3
|
||||
,_svCol :: Point4
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ShapeV where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ShapeV
|
||||
pairToSV :: (Point3,Point4) -> ShapeV
|
||||
{-# INLINE pairToSV #-}
|
||||
pairToSV = uncurry ShapeV
|
||||
|
||||
Reference in New Issue
Block a user