{-# 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;
import Prelude ((==), String, Eq, Show, Ord, Maybe(..), (&&), (||), return, IO, Enum, fromEnum, toEnum, Bool(..), (++), ($), Double, (-), length)
data ConsistencyLevel = ZERO|ONE|QUORUM|DCQUORUM|DCQUORUMSYNC|ALL|ANY  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
    ANY -> 6
  toEnum t = case t of
    0 -> ZERO
    1 -> ONE
    2 -> QUORUM
    3 -> DCQUORUM
    4 -> DCQUORUMSYNC
    5 -> ALL
    6 -> ANY
    _ -> 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 AuthenticationException = AuthenticationException{f_AuthenticationException_why :: Maybe String} deriving (Show,Eq,Ord,Typeable)
instance Exception AuthenticationException
write_AuthenticationException oprot rec = do
  writeStructBegin oprot "AuthenticationException"
  case f_AuthenticationException_why rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("why",T_STRING,1)
    writeString oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_AuthenticationException_fields iprot rec = do
  (_,_t44,_id45) <- readFieldBegin iprot
  if _t44 == T_STOP then return rec else
    case _id45 of 
      1 -> if _t44 == T_STRING then do
        s <- readString iprot
        read_AuthenticationException_fields iprot rec{f_AuthenticationException_why=Just s}
        else do
          skip iprot _t44
          read_AuthenticationException_fields iprot rec
      _ -> do
        skip iprot _t44
        readFieldEnd iprot
        read_AuthenticationException_fields iprot rec
read_AuthenticationException iprot = do
  readStructBegin iprot
  rec <- read_AuthenticationException_fields iprot (AuthenticationException{f_AuthenticationException_why=Nothing})
  readStructEnd iprot
  return rec
data AuthorizationException = AuthorizationException{f_AuthorizationException_why :: Maybe String} deriving (Show,Eq,Ord,Typeable)
instance Exception AuthorizationException
write_AuthorizationException oprot rec = do
  writeStructBegin oprot "AuthorizationException"
  case f_AuthorizationException_why rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("why",T_STRING,1)
    writeString oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_AuthorizationException_fields iprot rec = do
  (_,_t49,_id50) <- readFieldBegin iprot
  if _t49 == T_STOP then return rec else
    case _id50 of 
      1 -> if _t49 == T_STRING then do
        s <- readString iprot
        read_AuthorizationException_fields iprot rec{f_AuthorizationException_why=Just s}
        else do
          skip iprot _t49
          read_AuthorizationException_fields iprot rec
      _ -> do
        skip iprot _t49
        readFieldEnd iprot
        read_AuthorizationException_fields iprot rec
read_AuthorizationException iprot = do
  readStructBegin iprot
  rec <- read_AuthorizationException_fields iprot (AuthorizationException{f_AuthorizationException_why=Nothing})
  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
  (_,_t54,_id55) <- readFieldBegin iprot
  if _t54 == T_STOP then return rec else
    case _id55 of 
      3 -> if _t54 == T_STRING then do
        s <- readString iprot
        read_ColumnParent_fields iprot rec{f_ColumnParent_column_family=Just s}
        else do
          skip iprot _t54
          read_ColumnParent_fields iprot rec
      4 -> if _t54 == T_STRING then do
        s <- readString iprot
        read_ColumnParent_fields iprot rec{f_ColumnParent_super_column=Just s}
        else do
          skip iprot _t54
          read_ColumnParent_fields iprot rec
      _ -> do
        skip iprot _t54
        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
  (_,_t59,_id60) <- readFieldBegin iprot
  if _t59 == T_STOP then return rec else
    case _id60 of 
      3 -> if _t59 == T_STRING then do
        s <- readString iprot
        read_ColumnPath_fields iprot rec{f_ColumnPath_column_family=Just s}
        else do
          skip iprot _t59
          read_ColumnPath_fields iprot rec
      4 -> if _t59 == T_STRING then do
        s <- readString iprot
        read_ColumnPath_fields iprot rec{f_ColumnPath_super_column=Just s}
        else do
          skip iprot _t59
          read_ColumnPath_fields iprot rec
      5 -> if _t59 == T_STRING then do
        s <- readString iprot
        read_ColumnPath_fields iprot rec{f_ColumnPath_column=Just s}
        else do
          skip iprot _t59
          read_ColumnPath_fields iprot rec
      _ -> do
        skip iprot _t59
        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
  (_,_t64,_id65) <- readFieldBegin iprot
  if _t64 == T_STOP then return rec else
    case _id65 of 
      1 -> if _t64 == T_STRING then do
        s <- readString iprot
        read_SliceRange_fields iprot rec{f_SliceRange_start=Just s}
        else do
          skip iprot _t64
          read_SliceRange_fields iprot rec
      2 -> if _t64 == T_STRING then do
        s <- readString iprot
        read_SliceRange_fields iprot rec{f_SliceRange_finish=Just s}
        else do
          skip iprot _t64
          read_SliceRange_fields iprot rec
      3 -> if _t64 == T_BOOL then do
        s <- readBool iprot
        read_SliceRange_fields iprot rec{f_SliceRange_reversed=Just s}
        else do
          skip iprot _t64
          read_SliceRange_fields iprot rec
      4 -> if _t64 == T_I32 then do
        s <- readI32 iprot
        read_SliceRange_fields iprot rec{f_SliceRange_count=Just s}
        else do
          skip iprot _t64
          read_SliceRange_fields iprot rec
      _ -> do
        skip iprot _t64
        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 (_viter68:t) = do {writeString oprot _viter68;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
  (_,_t70,_id71) <- readFieldBegin iprot
  if _t70 == T_STOP then return rec else
    case _id71 of 
      1 -> if _t70 == T_LIST then do
        s <- (let {f 0 = return []; f n = do {v <- readString iprot;r <- f (n-1); return $ v:r}} in do {(_etype75,_size72) <- readListBegin iprot; f _size72})
        read_SlicePredicate_fields iprot rec{f_SlicePredicate_column_names=Just s}
        else do
          skip iprot _t70
          read_SlicePredicate_fields iprot rec
      2 -> if _t70 == T_STRUCT then do
        s <- (read_SliceRange iprot)
        read_SlicePredicate_fields iprot rec{f_SlicePredicate_slice_range=Just s}
        else do
          skip iprot _t70
          read_SlicePredicate_fields iprot rec
      _ -> do
        skip iprot _t70
        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 KeyRange = KeyRange{f_KeyRange_start_key :: Maybe String,f_KeyRange_end_key :: Maybe String,f_KeyRange_start_token :: Maybe String,f_KeyRange_end_token :: Maybe String,f_KeyRange_count :: Maybe Int} deriving (Show,Eq,Ord,Typeable)
write_KeyRange oprot rec = do
  writeStructBegin oprot "KeyRange"
  case f_KeyRange_start_key rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("start_key",T_STRING,1)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_KeyRange_end_key rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("end_key",T_STRING,2)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_KeyRange_start_token rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("start_token",T_STRING,3)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_KeyRange_end_token rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("end_token",T_STRING,4)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_KeyRange_count rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("count",T_I32,5)
    writeI32 oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_KeyRange_fields iprot rec = do
  (_,_t80,_id81) <- readFieldBegin iprot
  if _t80 == T_STOP then return rec else
    case _id81 of 
      1 -> if _t80 == T_STRING then do
        s <- readString iprot
        read_KeyRange_fields iprot rec{f_KeyRange_start_key=Just s}
        else do
          skip iprot _t80
          read_KeyRange_fields iprot rec
      2 -> if _t80 == T_STRING then do
        s <- readString iprot
        read_KeyRange_fields iprot rec{f_KeyRange_end_key=Just s}
        else do
          skip iprot _t80
          read_KeyRange_fields iprot rec
      3 -> if _t80 == T_STRING then do
        s <- readString iprot
        read_KeyRange_fields iprot rec{f_KeyRange_start_token=Just s}
        else do
          skip iprot _t80
          read_KeyRange_fields iprot rec
      4 -> if _t80 == T_STRING then do
        s <- readString iprot
        read_KeyRange_fields iprot rec{f_KeyRange_end_token=Just s}
        else do
          skip iprot _t80
          read_KeyRange_fields iprot rec
      5 -> if _t80 == T_I32 then do
        s <- readI32 iprot
        read_KeyRange_fields iprot rec{f_KeyRange_count=Just s}
        else do
          skip iprot _t80
          read_KeyRange_fields iprot rec
      _ -> do
        skip iprot _t80
        readFieldEnd iprot
        read_KeyRange_fields iprot rec
read_KeyRange iprot = do
  readStructBegin iprot
  rec <- read_KeyRange_fields iprot (KeyRange{f_KeyRange_start_key=Nothing,f_KeyRange_end_key=Nothing,f_KeyRange_start_token=Nothing,f_KeyRange_end_token=Nothing,f_KeyRange_count=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 (_viter84:t) = do {write_ColumnOrSuperColumn oprot _viter84;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
  (_,_t86,_id87) <- readFieldBegin iprot
  if _t86 == T_STOP then return rec else
    case _id87 of 
      1 -> if _t86 == T_STRING then do
        s <- readString iprot
        read_KeySlice_fields iprot rec{f_KeySlice_key=Just s}
        else do
          skip iprot _t86
          read_KeySlice_fields iprot rec
      2 -> if _t86 == 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 {(_etype91,_size88) <- readListBegin iprot; f _size88})
        read_KeySlice_fields iprot rec{f_KeySlice_columns=Just s}
        else do
          skip iprot _t86
          read_KeySlice_fields iprot rec
      _ -> do
        skip iprot _t86
        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
data Deletion = Deletion{f_Deletion_timestamp :: Maybe Int64,f_Deletion_super_column :: Maybe String,f_Deletion_predicate :: Maybe SlicePredicate} deriving (Show,Eq,Ord,Typeable)
write_Deletion oprot rec = do
  writeStructBegin oprot "Deletion"
  case f_Deletion_timestamp rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("timestamp",T_I64,1)
    writeI64 oprot _v
    writeFieldEnd oprot}
  case f_Deletion_super_column rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("super_column",T_STRING,2)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_Deletion_predicate rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("predicate",T_STRUCT,3)
    write_SlicePredicate oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_Deletion_fields iprot rec = do
  (_,_t96,_id97) <- readFieldBegin iprot
  if _t96 == T_STOP then return rec else
    case _id97 of 
      1 -> if _t96 == T_I64 then do
        s <- readI64 iprot
        read_Deletion_fields iprot rec{f_Deletion_timestamp=Just s}
        else do
          skip iprot _t96
          read_Deletion_fields iprot rec
      2 -> if _t96 == T_STRING then do
        s <- readString iprot
        read_Deletion_fields iprot rec{f_Deletion_super_column=Just s}
        else do
          skip iprot _t96
          read_Deletion_fields iprot rec
      3 -> if _t96 == T_STRUCT then do
        s <- (read_SlicePredicate iprot)
        read_Deletion_fields iprot rec{f_Deletion_predicate=Just s}
        else do
          skip iprot _t96
          read_Deletion_fields iprot rec
      _ -> do
        skip iprot _t96
        readFieldEnd iprot
        read_Deletion_fields iprot rec
read_Deletion iprot = do
  readStructBegin iprot
  rec <- read_Deletion_fields iprot (Deletion{f_Deletion_timestamp=Nothing,f_Deletion_super_column=Nothing,f_Deletion_predicate=Nothing})
  readStructEnd iprot
  return rec
data Mutation = Mutation{f_Mutation_column_or_supercolumn :: Maybe ColumnOrSuperColumn,f_Mutation_deletion :: Maybe Deletion} deriving (Show,Eq,Ord,Typeable)
write_Mutation oprot rec = do
  writeStructBegin oprot "Mutation"
  case f_Mutation_column_or_supercolumn rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("column_or_supercolumn",T_STRUCT,1)
    write_ColumnOrSuperColumn oprot _v
    writeFieldEnd oprot}
  case f_Mutation_deletion rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("deletion",T_STRUCT,2)
    write_Deletion oprot _v
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_Mutation_fields iprot rec = do
  (_,_t101,_id102) <- readFieldBegin iprot
  if _t101 == T_STOP then return rec else
    case _id102 of 
      1 -> if _t101 == T_STRUCT then do
        s <- (read_ColumnOrSuperColumn iprot)
        read_Mutation_fields iprot rec{f_Mutation_column_or_supercolumn=Just s}
        else do
          skip iprot _t101
          read_Mutation_fields iprot rec
      2 -> if _t101 == T_STRUCT then do
        s <- (read_Deletion iprot)
        read_Mutation_fields iprot rec{f_Mutation_deletion=Just s}
        else do
          skip iprot _t101
          read_Mutation_fields iprot rec
      _ -> do
        skip iprot _t101
        readFieldEnd iprot
        read_Mutation_fields iprot rec
read_Mutation iprot = do
  readStructBegin iprot
  rec <- read_Mutation_fields iprot (Mutation{f_Mutation_column_or_supercolumn=Nothing,f_Mutation_deletion=Nothing})
  readStructEnd iprot
  return rec
data TokenRange = TokenRange{f_TokenRange_start_token :: Maybe String,f_TokenRange_end_token :: Maybe String,f_TokenRange_endpoints :: Maybe [String]} deriving (Show,Eq,Ord,Typeable)
write_TokenRange oprot rec = do
  writeStructBegin oprot "TokenRange"
  case f_TokenRange_start_token rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("start_token",T_STRING,1)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_TokenRange_end_token rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("end_token",T_STRING,2)
    writeString oprot _v
    writeFieldEnd oprot}
  case f_TokenRange_endpoints rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("endpoints",T_LIST,3)
    (let {f [] = return (); f (_viter105:t) = do {writeString oprot _viter105;f t}} in do {writeListBegin oprot (T_STRING,length _v); f _v;writeListEnd oprot})
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_TokenRange_fields iprot rec = do
  (_,_t107,_id108) <- readFieldBegin iprot
  if _t107 == T_STOP then return rec else
    case _id108 of 
      1 -> if _t107 == T_STRING then do
        s <- readString iprot
        read_TokenRange_fields iprot rec{f_TokenRange_start_token=Just s}
        else do
          skip iprot _t107
          read_TokenRange_fields iprot rec
      2 -> if _t107 == T_STRING then do
        s <- readString iprot
        read_TokenRange_fields iprot rec{f_TokenRange_end_token=Just s}
        else do
          skip iprot _t107
          read_TokenRange_fields iprot rec
      3 -> if _t107 == T_LIST then do
        s <- (let {f 0 = return []; f n = do {v <- readString iprot;r <- f (n-1); return $ v:r}} in do {(_etype112,_size109) <- readListBegin iprot; f _size109})
        read_TokenRange_fields iprot rec{f_TokenRange_endpoints=Just s}
        else do
          skip iprot _t107
          read_TokenRange_fields iprot rec
      _ -> do
        skip iprot _t107
        readFieldEnd iprot
        read_TokenRange_fields iprot rec
read_TokenRange iprot = do
  readStructBegin iprot
  rec <- read_TokenRange_fields iprot (TokenRange{f_TokenRange_start_token=Nothing,f_TokenRange_end_token=Nothing,f_TokenRange_endpoints=Nothing})
  readStructEnd iprot
  return rec
data AuthenticationRequest = AuthenticationRequest{f_AuthenticationRequest_credentials :: Maybe (Map.Map String String)} deriving (Show,Eq,Ord,Typeable)
write_AuthenticationRequest oprot rec = do
  writeStructBegin oprot "AuthenticationRequest"
  case f_AuthenticationRequest_credentials rec of {Nothing -> return (); Just _v -> do
    writeFieldBegin oprot ("credentials",T_MAP,1)
    (let {f [] = return (); f ((_kiter116,_viter117):t) = do {do {writeString oprot _kiter116;writeString oprot _viter117};f t}} in do {writeMapBegin oprot (T_STRING,T_STRING,Map.size _v); f (Map.toList _v);writeMapEnd oprot})
    writeFieldEnd oprot}
  writeFieldStop oprot
  writeStructEnd oprot
read_AuthenticationRequest_fields iprot rec = do
  (_,_t119,_id120) <- readFieldBegin iprot
  if _t119 == T_STOP then return rec else
    case _id120 of 
      1 -> if _t119 == T_MAP then do
        s <- (let {f 0 = return []; f n = do {k <- readString iprot; v <- readString iprot;r <- f (n-1); return $ (k,v):r}} in do {(_ktype122,_vtype123,_size121) <- readMapBegin iprot; l <- f _size121; return $ Map.fromList l})
        read_AuthenticationRequest_fields iprot rec{f_AuthenticationRequest_credentials=Just s}
        else do
          skip iprot _t119
          read_AuthenticationRequest_fields iprot rec
      _ -> do
        skip iprot _t119
        readFieldEnd iprot
        read_AuthenticationRequest_fields iprot rec
read_AuthenticationRequest iprot = do
  readStructBegin iprot
  rec <- read_AuthenticationRequest_fields iprot (AuthenticationRequest{f_AuthenticationRequest_credentials=Nothing})
  readStructEnd iprot
  return rec