-- 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
}
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
-- \"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
}
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
EmptyDataDecls,
FlexibleInstances,
TypeFamilies,
+ TypeOperators,
MultiParamTypeClasses,
UndecidableInstances
#-}
, IsIterativeExpr
, IsVarName
+ , hString
, Constant(..)
, Variable(..)
where
import Data.HList
+import Data.HList.String
import Types.Data.Bool
import Types.Data.Num hiding ((:*:))
import Types.Data.Ord
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)
)