summaryrefslogtreecommitdiff
path: root/TypeInternals.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-01-26 00:37:50 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-01-26 00:37:50 -0400
commit616d1d4a208693c46f41781d9099c1f04ae067e6 (patch)
tree66e5fdfd24eb0f407ef491262e7798189e4821c2 /TypeInternals.hs
parentaa2ca533bcef1848a9dc94bfea8d33a99e8f2df0 (diff)
rename TypeInternals to BackendTypes
Now that it only contains types used by the backends
Diffstat (limited to 'TypeInternals.hs')
-rw-r--r--TypeInternals.hs79
1 files changed, 0 insertions, 79 deletions
diff --git a/TypeInternals.hs b/TypeInternals.hs
deleted file mode 100644
index d3592f482..000000000
--- a/TypeInternals.hs
+++ /dev/null
@@ -1,79 +0,0 @@
-{- git-annex internal data types
- -
- - Most things should not need this, using Types and/or Annex instead.
- -
- - Copyright 2010 Joey Hess <joey@kitenet.net>
- -
- - Licensed under the GNU GPL version 3 or higher.
- -}
-
-module TypeInternals where
-
-import Data.String.Utils
-import Test.QuickCheck
-
--- annexed filenames are mapped through a backend into keys
-type KeyName = String
-type BackendName = String
-data Key = Key (BackendName, KeyName) deriving (Eq, Ord)
-
--- constructs a key in a backend
-genKey :: Backend a -> KeyName -> Key
-genKey b f = Key (name b,f)
-
--- show a key to convert it to a string; the string includes the
--- name of the backend to avoid collisions between key strings
-instance Show Key where
- show (Key (b, k)) = b ++ ":" ++ k
-
-instance Read Key where
- readsPrec _ s = [(Key (b,k), "")]
- where
- l = split ":" s
- b = if null l then "" else head l
- k = join ":" $ drop 1 l
-
--- for quickcheck
-instance Arbitrary Key where
- arbitrary = do
- backendname <- arbitrary
- keyname <- arbitrary
- return $ Key (backendname, keyname)
-
-prop_idempotent_key_read_show :: Key -> Bool
-prop_idempotent_key_read_show k
- -- backend names will never contain colons
- | elem ':' (backendName k) = True
- | otherwise = k == (read $ show k)
-
-backendName :: Key -> BackendName
-backendName (Key (b,_)) = b
-keyName :: Key -> KeyName
-keyName (Key (_,k)) = k
-
--- this structure represents a key-value backend
-data Backend a = Backend {
- -- name of this backend
- name :: String,
- -- converts a filename to a key
- getKey :: FilePath -> a (Maybe Key),
- -- stores a file's contents to a key
- storeFileKey :: FilePath -> Key -> a Bool,
- -- retrieves a key's contents to a file
- retrieveKeyFile :: Key -> FilePath -> a Bool,
- -- removes a key, optionally checking that enough copies are stored
- -- elsewhere
- removeKey :: Key -> Maybe Int -> a Bool,
- -- checks if a backend is storing the content of a key
- hasKey :: Key -> a Bool,
- -- called during fsck to check a key
- -- (second parameter may be the number of copies that there should
- -- be of the key)
- fsckKey :: Key -> Maybe Int -> a Bool
-}
-
-instance Show (Backend a) where
- show backend = "Backend { name =\"" ++ name backend ++ "\" }"
-
-instance Eq (Backend a) where
- a == b = name a == name b