{-# LANGUAGE DeriveDataTypeable #-}
-----------------------------------------------------------------
-- Autogenerated by Thrift                                     --
--                                                             --
-- DO NOT EDIT UNLESS YOU ARE SURE YOU KNOW WHAT YOU ARE DOING --
-----------------------------------------------------------------

module Database.Cassandra.Thrift.Cassandra_Types where
import Thrift
import Data.Typeable ( Typeable )
import Control.Exception
import qualified Data.Map as Map
import qualified Data.Set as Set
import Data.Int
data ConsistencyLevel = ZERO|ONE|QUORUM|DCQUORUM|DCQUORUMSYNC|ALL  deriving (Show,Eq, Typeable, Ord)
instance Enum ConsistencyLevel where
  fromEnum t = case t of
    ZERO -> 0
    ONE -> 1
    QUORUM -> 2
    DCQUORUM -> 3
    DCQUORUMSYNC -> 4
    ALL -> 5
  toEnum t = case t of
    0 -> ZERO
    1 -> ONE
    2 -> QUORUM
    3 -> DCQUORUM
    4 -> DCQUORUMSYNC
    5 -> ALL
    _ -> throw ThriftException
data Column = Column{f_Column_name :: Maybe String,f_Column_value :: Maybe String,f_Column_timestamp :: Maybe Int64} deriving (Show,Eq,Ord,Typeable)
write_Column oprot rec = do
  writeStructBegin oprot "Column"
  case f_Column_name rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("name",T_STRING,1)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_Column_value rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("value",T_STRING,2)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_Column_timestamp rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("timestamp",T_I64,3)
    writeI64 oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_Column_fields iprot rec = do
  (_,_t3,_id4) <- readFieldBegin iprot
  if _t3 == T_STOP then return rec else
    case _id4 of 
      1 -> if _t3 == T_STRING then do
        s <- readString iprot
        read_Column_fields iprot rec{f_Column_name=Just s}
        else do
          skip iprot _t3
          read_Column_fields iprot rec
      2 -> if _t3 == T_STRING then do
        s <- readString iprot
        read_Column_fields iprot rec{f_Column_value=Just s}
        else do
          skip iprot _t3
          read_Column_fields iprot rec
      3 -> if _t3 == T_I64 then do
        s <- readI64 iprot
        read_Column_fields iprot rec{f_Column_timestamp=Just s}
        else do
          skip iprot _t3
          read_Column_fields iprot rec
      _ -> do
        skip iprot _t3
        readFieldEnd iprot
        read_Column_fields iprot rec
read_Column iprot = do
  readStructBegin iprot
  rec <- read_Column_fields iprot (Column{f_Column_name=Nothing,f_Column_value=Nothing,f_Column_timestamp=Nothing})
  readStructEnd iprot
  return rec
data SuperColumn = SuperColumn{f_SuperColumn_name :: Maybe String,f_SuperColumn_columns :: Maybe [Column]} deriving (Show,Eq,Ord,Typeable)
write_SuperColumn oprot rec = do
  writeStructBegin oprot "SuperColumn"
  case f_SuperColumn_name rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("name",T_STRING,1)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_SuperColumn_columns rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("columns",T_LIST,2)
    (let {f [] = return (); f (_viter7:t) = do {write_Column oprot _viter7;f t}} in do {writeListBegin oprot (T_STRUCT,length _v); f _v;writeListEnd oprot})
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_SuperColumn_fields iprot rec = do
  (_,_t9,_id10) <- readFieldBegin iprot
  if _t9 == T_STOP then return rec else
    case _id10 of 
      1 -> if _t9 == T_STRING then do
        s <- readString iprot
        read_SuperColumn_fields iprot rec{f_SuperColumn_name=Just s}
        else do
          skip iprot _t9
          read_SuperColumn_fields iprot rec
      2 -> if _t9 == T_LIST then do
        s <- (let {f 0 = return []; f n = do {v <- (read_Column iprot);r <- f (n-1); return $ v:r}} in do {(_etype14,_size11) <- readListBegin iprot; f _size11})
        read_SuperColumn_fields iprot rec{f_SuperColumn_columns=Just s}
        else do
          skip iprot _t9
          read_SuperColumn_fields iprot rec
      _ -> do
        skip iprot _t9
        readFieldEnd iprot
        read_SuperColumn_fields iprot rec
read_SuperColumn iprot = do
  readStructBegin iprot
  rec <- read_SuperColumn_fields iprot (SuperColumn{f_SuperColumn_name=Nothing,f_SuperColumn_columns=Nothing})
  readStructEnd iprot
  return rec
data ColumnOrSuperColumn = ColumnOrSuperColumn{f_ColumnOrSuperColumn_column :: Maybe Column,f_ColumnOrSuperColumn_super_column :: Maybe SuperColumn} deriving (Show,Eq,Ord,Typeable)
write_ColumnOrSuperColumn oprot rec = do
  writeStructBegin oprot "ColumnOrSuperColumn"
  case f_ColumnOrSuperColumn_column rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("column",T_STRUCT,1)
    write_Column oprot _v
    writeFieldEnd oprot}
  case f_ColumnOrSuperColumn_super_column rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("super_column",T_STRUCT,2)
    write_SuperColumn oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_ColumnOrSuperColumn_fields iprot rec = do
  (_,_t19,_id20) <- readFieldBegin iprot
  if _t19 == T_STOP then return rec else
    case _id20 of 
      1 -> if _t19 == T_STRUCT then do
        s <- (read_Column iprot)
        read_ColumnOrSuperColumn_fields iprot rec{f_ColumnOrSuperColumn_column=Just s}
        else do
          skip iprot _t19
          read_ColumnOrSuperColumn_fields iprot rec
      2 -> if _t19 == T_STRUCT then do
        s <- (read_SuperColumn iprot)
        read_ColumnOrSuperColumn_fields iprot rec{f_ColumnOrSuperColumn_super_column=Just s}
        else do
          skip iprot _t19
          read_ColumnOrSuperColumn_fields iprot rec
      _ -> do
        skip iprot _t19
        readFieldEnd iprot
        read_ColumnOrSuperColumn_fields iprot rec
read_ColumnOrSuperColumn iprot = do
  readStructBegin iprot
  rec <- read_ColumnOrSuperColumn_fields iprot (ColumnOrSuperColumn{f_ColumnOrSuperColumn_column=Nothing,f_ColumnOrSuperColumn_super_column=Nothing})
  readStructEnd iprot
  return rec
data NotFoundException = NotFoundException deriving (Show,Eq,Ord,Typeable)
instance Exception NotFoundException
write_NotFoundException oprot rec = do
  writeStructBegin oprot "NotFoundException"
  writeFieldStop oprot
  writeStructEnd oprot
read_NotFoundException_fields iprot rec = do
  (_,_t24,_id25) <- readFieldBegin iprot
  if _t24 == T_STOP then return rec else
    case _id25 of 
      _ -> do
        skip iprot _t24
        readFieldEnd iprot
        read_NotFoundException_fields iprot rec
read_NotFoundException iprot = do
  readStructBegin iprot
  rec <- read_NotFoundException_fields iprot (NotFoundException{})
  readStructEnd iprot
  return rec
data InvalidRequestException = InvalidRequestException{f_InvalidRequestException_why :: Maybe String} deriving (Show,Eq,Ord,Typeable)
instance Exception InvalidRequestException
write_InvalidRequestException oprot rec = do
  writeStructBegin oprot "InvalidRequestException"
  case f_InvalidRequestException_why rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("why",T_STRING,1)
    writeString oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_InvalidRequestException_fields iprot rec = do
  (_,_t29,_id30) <- readFieldBegin iprot
  if _t29 == T_STOP then return rec else
    case _id30 of 
      1 -> if _t29 == T_STRING then do
        s <- readString iprot
        read_InvalidRequestException_fields iprot rec{f_InvalidRequestException_why=Just s}
        else do
          skip iprot _t29
          read_InvalidRequestException_fields iprot rec
      _ -> do
        skip iprot _t29
        readFieldEnd iprot
        read_InvalidRequestException_fields iprot rec
read_InvalidRequestException iprot = do
  readStructBegin iprot
  rec <- read_InvalidRequestException_fields iprot (InvalidRequestException{f_InvalidRequestException_why=Nothing})
  readStructEnd iprot
  return rec
data UnavailableException = UnavailableException deriving (Show,Eq,Ord,Typeable)
instance Exception UnavailableException
write_UnavailableException oprot rec = do
  writeStructBegin oprot "UnavailableException"
  writeFieldStop oprot
  writeStructEnd oprot
read_UnavailableException_fields iprot rec = do
  (_,_t34,_id35) <- readFieldBegin iprot
  if _t34 == T_STOP then return rec else
    case _id35 of 
      _ -> do
        skip iprot _t34
        readFieldEnd iprot
        read_UnavailableException_fields iprot rec
read_UnavailableException iprot = do
  readStructBegin iprot
  rec <- read_UnavailableException_fields iprot (UnavailableException{})
  readStructEnd iprot
  return rec
data TimedOutException = TimedOutException deriving (Show,Eq,Ord,Typeable)
instance Exception TimedOutException
write_TimedOutException oprot rec = do
  writeStructBegin oprot "TimedOutException"
  writeFieldStop oprot
  writeStructEnd oprot
read_TimedOutException_fields iprot rec = do
  (_,_t39,_id40) <- readFieldBegin iprot
  if _t39 == T_STOP then return rec else
    case _id40 of 
      _ -> do
        skip iprot _t39
        readFieldEnd iprot
        read_TimedOutException_fields iprot rec
read_TimedOutException iprot = do
  readStructBegin iprot
  rec <- read_TimedOutException_fields iprot (TimedOutException{})
  readStructEnd iprot
  return rec
data ColumnParent = ColumnParent{f_ColumnParent_column_family :: Maybe String,f_ColumnParent_super_column :: Maybe String} deriving (Show,Eq,Ord,Typeable)
write_ColumnParent oprot rec = do
  writeStructBegin oprot "ColumnParent"
  case f_ColumnParent_column_family rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("column_family",T_STRING,3)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_ColumnParent_super_column rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("super_column",T_STRING,4)
    writeString oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_ColumnParent_fields iprot rec = do
  (_,_t44,_id45) <- readFieldBegin iprot
  if _t44 == T_STOP then return rec else
    case _id45 of 
      3 -> if _t44 == T_STRING then do
        s <- readString iprot
        read_ColumnParent_fields iprot rec{f_ColumnParent_column_family=Just s}
        else do
          skip iprot _t44
          read_ColumnParent_fields iprot rec
      4 -> if _t44 == T_STRING then do
        s <- readString iprot
        read_ColumnParent_fields iprot rec{f_ColumnParent_super_column=Just s}
        else do
          skip iprot _t44
          read_ColumnParent_fields iprot rec
      _ -> do
        skip iprot _t44
        readFieldEnd iprot
        read_ColumnParent_fields iprot rec
read_ColumnParent iprot = do
  readStructBegin iprot
  rec <- read_ColumnParent_fields iprot (ColumnParent{f_ColumnParent_column_family=Nothing,f_ColumnParent_super_column=Nothing})
  readStructEnd iprot
  return rec
data ColumnPath = ColumnPath{f_ColumnPath_column_family :: Maybe String,f_ColumnPath_super_column :: Maybe String,f_ColumnPath_column :: Maybe String} deriving (Show,Eq,Ord,Typeable)
write_ColumnPath oprot rec = do
  writeStructBegin oprot "ColumnPath"
  case f_ColumnPath_column_family rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("column_family",T_STRING,3)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_ColumnPath_super_column rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("super_column",T_STRING,4)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_ColumnPath_column rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("column",T_STRING,5)
    writeString oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_ColumnPath_fields iprot rec = do
  (_,_t49,_id50) <- readFieldBegin iprot
  if _t49 == T_STOP then return rec else
    case _id50 of 
      3 -> if _t49 == T_STRING then do
        s <- readString iprot
        read_ColumnPath_fields iprot rec{f_ColumnPath_column_family=Just s}
        else do
          skip iprot _t49
          read_ColumnPath_fields iprot rec
      4 -> if _t49 == T_STRING then do
        s <- readString iprot
        read_ColumnPath_fields iprot rec{f_ColumnPath_super_column=Just s}
        else do
          skip iprot _t49
          read_ColumnPath_fields iprot rec
      5 -> if _t49 == T_STRING then do
        s <- readString iprot
        read_ColumnPath_fields iprot rec{f_ColumnPath_column=Just s}
        else do
          skip iprot _t49
          read_ColumnPath_fields iprot rec
      _ -> do
        skip iprot _t49
        readFieldEnd iprot
        read_ColumnPath_fields iprot rec
read_ColumnPath iprot = do
  readStructBegin iprot
  rec <- read_ColumnPath_fields iprot (ColumnPath{f_ColumnPath_column_family=Nothing,f_ColumnPath_super_column=Nothing,f_ColumnPath_column=Nothing})
  readStructEnd iprot
  return rec
data SliceRange = SliceRange{f_SliceRange_start :: Maybe String,f_SliceRange_finish :: Maybe String,f_SliceRange_reversed :: Maybe Bool,f_SliceRange_count :: Maybe Int} deriving (Show,Eq,Ord,Typeable)
write_SliceRange oprot rec = do
  writeStructBegin oprot "SliceRange"
  case f_SliceRange_start rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("start",T_STRING,1)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_SliceRange_finish rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("finish",T_STRING,2)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_SliceRange_reversed rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("reversed",T_BOOL,3)
    writeBool oprot _v
    writeFieldEnd oprot}
  case f_SliceRange_count rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("count",T_I32,4)
    writeI32 oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_SliceRange_fields iprot rec = do
  (_,_t54,_id55) <- readFieldBegin iprot
  if _t54 == T_STOP then return rec else
    case _id55 of 
      1 -> if _t54 == T_STRING then do
        s <- readString iprot
        read_SliceRange_fields iprot rec{f_SliceRange_start=Just s}
        else do
          skip iprot _t54
          read_SliceRange_fields iprot rec
      2 -> if _t54 == T_STRING then do
        s <- readString iprot
        read_SliceRange_fields iprot rec{f_SliceRange_finish=Just s}
        else do
          skip iprot _t54
          read_SliceRange_fields iprot rec
      3 -> if _t54 == T_BOOL then do
        s <- readBool iprot
        read_SliceRange_fields iprot rec{f_SliceRange_reversed=Just s}
        else do
          skip iprot _t54
          read_SliceRange_fields iprot rec
      4 -> if _t54 == T_I32 then do
        s <- readI32 iprot
        read_SliceRange_fields iprot rec{f_SliceRange_count=Just s}
        else do
          skip iprot _t54
          read_SliceRange_fields iprot rec
      _ -> do
        skip iprot _t54
        readFieldEnd iprot
        read_SliceRange_fields iprot rec
read_SliceRange iprot = do
  readStructBegin iprot
  rec <- read_SliceRange_fields iprot (SliceRange{f_SliceRange_start=Nothing,f_SliceRange_finish=Nothing,f_SliceRange_reversed=Nothing,f_SliceRange_count=Nothing})
  readStructEnd iprot
  return rec
data SlicePredicate = SlicePredicate{f_SlicePredicate_column_names :: Maybe [String],f_SlicePredicate_slice_range :: Maybe SliceRange} deriving (Show,Eq,Ord,Typeable)
write_SlicePredicate oprot rec = do
  writeStructBegin oprot "SlicePredicate"
  case f_SlicePredicate_column_names rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("column_names",T_LIST,1)
    (let {f [] = return (); f (_viter58:t) = do {writeString oprot _viter58;f t}} in do {writeListBegin oprot (T_STRING,length _v); f _v;writeListEnd oprot})
    writeFieldEnd oprot}
  case f_SlicePredicate_slice_range rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("slice_range",T_STRUCT,2)
    write_SliceRange oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_SlicePredicate_fields iprot rec = do
  (_,_t60,_id61) <- readFieldBegin iprot
  if _t60 == T_STOP then return rec else
    case _id61 of 
      1 -> if _t60 == T_LIST then do
        s <- (let {f 0 = return []; f n = do {v <- readString iprot;r <- f (n-1); return $ v:r}} in do {(_etype65,_size62) <- readListBegin iprot; f _size62})
        read_SlicePredicate_fields iprot rec{f_SlicePredicate_column_names=Just s}
        else do
          skip iprot _t60
          read_SlicePredicate_fields iprot rec
      2 -> if _t60 == T_STRUCT then do
        s <- (read_SliceRange iprot)
        read_SlicePredicate_fields iprot rec{f_SlicePredicate_slice_range=Just s}
        else do
          skip iprot _t60
          read_SlicePredicate_fields iprot rec
      _ -> do
        skip iprot _t60
        readFieldEnd iprot
        read_SlicePredicate_fields iprot rec
read_SlicePredicate iprot = do
  readStructBegin iprot
  rec <- read_SlicePredicate_fields iprot (SlicePredicate{f_SlicePredicate_column_names=Nothing,f_SlicePredicate_slice_range=Nothing})
  readStructEnd iprot
  return rec
data KeySlice = KeySlice{f_KeySlice_key :: Maybe String,f_KeySlice_columns :: Maybe [ColumnOrSuperColumn]} deriving (Show,Eq,Ord,Typeable)
write_KeySlice oprot rec = do
  writeStructBegin oprot "KeySlice"
  case f_KeySlice_key rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("key",T_STRING,1)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_KeySlice_columns rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("columns",T_LIST,2)
    (let {f [] = return (); f (_viter69:t) = do {write_ColumnOrSuperColumn oprot _viter69;f t}} in do {writeListBegin oprot (T_STRUCT,length _v); f _v;writeListEnd oprot})
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_KeySlice_fields iprot rec = do
  (_,_t71,_id72) <- readFieldBegin iprot
  if _t71 == T_STOP then return rec else
    case _id72 of 
      1 -> if _t71 == T_STRING then do
        s <- readString iprot
        read_KeySlice_fields iprot rec{f_KeySlice_key=Just s}
        else do
          skip iprot _t71
          read_KeySlice_fields iprot rec
      2 -> if _t71 == T_LIST then do
        s <- (let {f 0 = return []; f n = do {v <- (read_ColumnOrSuperColumn iprot);r <- f (n-1); return $ v:r}} in do {(_etype76,_size73) <- readListBegin iprot; f _size73})
        read_KeySlice_fields iprot rec{f_KeySlice_columns=Just s}
        else do
          skip iprot _t71
          read_KeySlice_fields iprot rec
      _ -> do
        skip iprot _t71
        readFieldEnd iprot
        read_KeySlice_fields iprot rec
read_KeySlice iprot = do
  readStructBegin iprot
  rec <- read_KeySlice_fields iprot (KeySlice{f_KeySlice_key=Nothing,f_KeySlice_columns=Nothing})
  readStructEnd iprot
  return rec