Revision a583ec5d htools/Ganeti/THH.hs

b/htools/Ganeti/THH.hs
33 33
                  , declareIADT
34 34
                  , makeJSONInstance
35 35
                  , genOpID
36
                  , genAllOpIDs
36 37
                  , genOpCode
37 38
                  , genStrOfOp
38 39
                  , genStrOfKey
......
399 400
genOpID :: Name -> String -> Q [Dec]
400 401
genOpID = genConstrToStr deCamelCase
401 402

  
403
-- | Builds a list with all defined constructor names for a type.
404
--
405
-- @
406
-- vstr :: String
407
-- vstr = [...]
408
-- @
409
--
410
-- Where the actual values of the string are the constructor names
411
-- mapped via @trans_fun@.
412
genAllConstr :: (String -> String) -> Name -> String -> Q [Dec]
413
genAllConstr trans_fun name vstr = do
414
  cnames <- reifyConsNames name
415
  let svalues = sort $ map trans_fun cnames
416
      vname = mkName vstr
417
      sig = SigD vname (AppT ListT (ConT ''String))
418
      body = NormalB (ListE (map (LitE . StringL) svalues))
419
  return $ [sig, ValD (VarP vname) body []]
420

  
421
-- | Generates a list of all defined opcode IDs.
422
genAllOpIDs :: Name -> String -> Q [Dec]
423
genAllOpIDs = genAllConstr deCamelCase
424

  
402 425
-- | OpCode parameter (field) type.
403 426
type OpParam = (String, Q Type, Q Exp)
404 427

  

Also available in: Unified diff