{-# LANGUAGE OverloadedStrings #-}
-- |
-- Module : Caching.ExpiringCacheMap.Utils.Types
-- Copyright: (c) 2014 Edward L. Blake
-- License: BSD-style
-- Maintainer: Edward L. Blake <edwardlblake@gmail.com>
-- Stability: experimental
-- Portability: portable
--
-- Simple types.
-- 

module Caching.ExpiringCacheMap.Utils.Types (
    -- * Types
    TimeUnits,
    ECMMapSize,
    ECMULength,
    ECMIncr,
) where

import Data.Word (Word32)

-- | Integer involved in the time units used to determine when an item expires.
-- The time units used can be any arbitrary integer time representation, such
-- as seconds or milliseconds for examples. They can also be deterministic time
-- steps in a sequencing monad.
--
type TimeUnits = Int

-- | Integer involved in the size of a key-value map.
type ECMMapSize = Int

-- | Integer involved in the length of the usage history list.
type ECMULength = Int

-- | Unsigned integer ('Word32') involved in the cache state incrementing accumulator.
type ECMIncr = Word32