]> gitweb @ CieloNegro.org - hs-rrdtool.git/commitdiff
make use of hString
authorPHO <pho@cielonegro.org>
Fri, 23 Apr 2010 13:49:52 +0000 (22:49 +0900)
committerPHO <pho@cielonegro.org>
Fri, 23 Apr 2010 13:49:52 +0000 (22:49 +0900)
Database/RRDtool/Create.hs
Database/RRDtool/Expression.hs

index a6a67fca729a31f3a5eefa750c0cc79fff45776f..3c403db46f99de5ad8af3c9bfb41b90145692361 100644 (file)
@@ -91,14 +91,12 @@ data ExternalDSType
                -- number of messages since the last update.
     deriving (Show, Eq, Ord)
 
-instance DataSource ExternalDSType
-
-data ExternalDataSource
+data ExternalDataSource vn
     = ExternalDataSource {
         -- |The name you will use to reference this particular data
         -- source from an RRD. A ds name must be 1 to 19 characters
         -- long in the characters @[a-zA-Z0-9_]@.
-        edsName :: !String
+        edsName :: !vn
         -- |The type of this data source.
       , edsType :: !ExternalDSType
         -- |Defines the maximum number of seconds that may pass
@@ -124,6 +122,10 @@ data ExternalDataSource
       }
     deriving (Show, Eq, Ord)
 
+instance ( IsVarName vn ~ True
+         )
+    => DataSource (ExternalDataSource vn)
+
 
 -- |ComputedDataSource is for storing the result of a formula applied
 -- to other data sources in the RRD. This data source is not supplied
@@ -136,10 +138,10 @@ data ExternalDataSource
 -- \"computed\" columns.
 --
 -- FIXME: doc links
-data ComputedDataSource e
+data ComputedDataSource vn e
     = ComputedDataSource {
         -- |See 'edsName'
-        cdsName :: !String
+        cdsName :: !vn
         -- |rpn-expression defines the formula used to compute the
         -- PDPs of a COMPUTE data source from other data sources in
         -- the same \<RRD\>. It is similar to defining a CDEF argument
@@ -157,16 +159,19 @@ data ComputedDataSource e
     }
     deriving (Show, Eq, Ord)
 
-instance (IsCommonExpr e ~ True) =>
-    DataSource (ComputedDataSource e)
-
+instance ( IsVarName vn ~ True
+         , IsCommonExpr e ~ True
+         )
+    => DataSource (ComputedDataSource vn e)
 
+{-
 dsTest = ComputedDataSource {
            cdsName = "foo"
 --         , cdsExpr = Previous :<: Const 100
 --         , cdsExpr = Var "foo" :<: Const 100
          , cdsExpr = AverageOf (Const 100 .*. Const 200 .*. HNil)
          }
+-}
 
 -- |The 'createRRD' function lets you set up new Round Robin Database
 -- (RRD) files. The file is created at its final, full size and filled
index f2d2574f93b8a23d70ed0c0e0b05004ffbacd1c5..5c44213e47fb2fa4649b82c489e5d543cc3af79d 100644 (file)
@@ -2,6 +2,7 @@
   EmptyDataDecls,
   FlexibleInstances,
   TypeFamilies,
+  TypeOperators,
   MultiParamTypeClasses,
   UndecidableInstances
   #-}
@@ -14,6 +15,7 @@ module Database.RRDtool.Expression
     , IsIterativeExpr
 
     , IsVarName
+    , hString
 
     , Constant(..)
     , Variable(..)
@@ -32,6 +34,7 @@ module Database.RRDtool.Expression
     where
 
 import Data.HList
+import Data.HList.String
 import Types.Data.Bool
 import Types.Data.Num hiding ((:*:))
 import Types.Data.Ord
@@ -75,13 +78,13 @@ type instance IsIterativeExpr Constant = True
 type instance MentionedVars   Constant = HNil
 
 {- This is what we want to do but GHC can't handle this for now. 
-class ( (HLengthOf str :<=: D255) ~ True
+class ( (HLengthOf str :<=: D19) ~ True
       , HString str
       )
     => IsVarName str
 -}
 type family   IsVarName str
-type instance IsVarName str = ( (HLength str :<=: D255)
+type instance IsVarName str = ( (HLength str :<=: D19)
                                 :&&:
                                 (HAll IsGoodLetterForVarNameA str)
                               )