module C.Functions (dsinfFunctions) where import Defs.Structures import Analyzer import Defs.Common import Language.C import Language.C.Data.Ident import Language.C.Data.Position pos :: Position pos = position 0 "" 0 0 ni :: NodeInfo ni = NodeInfo pos (pos,0) (Name 0) void :: CTypeSpec void = CVoidType ni int :: CTypeSpec int = CIntType ni ds :: CTypeSpec ds = CTypeDef (Ident "ds" 0 ni) ni dsElem :: CTypeSpec dsElem = CTypeDef (Ident "dselem" 0 ni) ni -- | Basic functions for data-structure access dsinfFunctions :: [(FunctionDeclaration CTypeSpec, [OperationName])] dsinfFunctions = [ (FunDecl (F "update_d") void [(V "ds", ds), (V "oldval", int), (V "newval", int)], [UpdateByRef, FindByVal]), (FunDecl (F "insert_d") dsElem [(V "ds", ds), (V "elem", int)] , [InsertVal]), (FunDecl (F "delete_d") void [(V "ds", ds), (V "elem", int)] , [DeleteByRef, FindByVal]), (FunDecl (F "max_d") dsElem [(V "ds", ds)] , [ExtremalVal]), (FunDecl (F "min_d") dsElem [(V "ds", ds)] , [ExtremalVal]), --FIXME Minmax problem (FunDecl (F "delete_max_d") void [(V "ds", ds)] , [DeleteExtremalVal]), (FunDecl (F "delete_min_d") void [(V "ds", ds)] , [DeleteExtremalVal]), (FunDecl (F "search_d") dsElem [(V "ds", ds), (V "elem", int)] , [FindByVal]), (FunDecl (F "update_de") void [(V "elem", dsElem), (V "newval", int)] , [UpdateByRef]), (FunDecl (F "delete_de") void [(V "elem", dsElem)] , [DeleteByRef]) ]