{-# OPTIONS_HADDOCK hide #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE FlexibleInstances #-} module Database.MSSQLServer.Query.ResultSet ( ResultSet (..) , Row (..) ) where import Database.Tds.Message import Database.MSSQLServer.Query.Only class ResultSet a where fromTokenStreams :: [TokenStream] -> a instance ResultSet () where fromTokenStreams = f . extractStreams where f [] = () f _ = error "fromTokenStreams: List length must be 0" instance (Row a) => ResultSet [a] where fromTokenStreams = f . extractStreams where f [v1] = b1 where !b1 = rowList v1 f _ = error "fromTokenStreams: List length must be 1" instance (Row a, Row b) => ResultSet ([a],[b]) where fromTokenStreams = f . extractStreams where f [v1,v2] = (b1,b2) where !b1 = rowList v1 !b2 = rowList v2 f _ = error "fromTokenStreams: List length must be 2" instance (Row a, Row b, Row c) => ResultSet ([a],[b],[c]) where fromTokenStreams = f . extractStreams where f [v1,v2,v3] = (b1,b2,b3) where !b1 = rowList v1 !b2 = rowList v2 !b3 = rowList v3 f _ = error "fromTokenStreams: List length must be 3" instance (Row a, Row b, Row c, Row d) => ResultSet ([a],[b],[c],[d]) where fromTokenStreams = f . extractStreams where f [v1,v2,v3,v4] = (b1,b2,b3,b4) where !b1 = rowList v1 !b2 = rowList v2 !b3 = rowList v3 !b4 = rowList v4 f _ = error "fromTokenStreams: List length must be 4" instance (Row a, Row b, Row c, Row d, Row e) => ResultSet ([a],[b],[c],[d],[e]) where fromTokenStreams = f . extractStreams where f [v1,v2,v3,v4,v5] = (b1,b2,b3,b4,b5) where !b1 = rowList v1 !b2 = rowList v2 !b3 = rowList v3 !b4 = rowList v4 !b5 = rowList v5 f _ = error "fromTokenStreams: List length must be 5" -- (TSColMetaData,[TSRow]) rowList :: (Row a) => (TokenStream,[TokenStream]) -> [a] rowList = \(tsCmd,tsRss) -> let (TSColMetaData (maybeCmd)) = tsCmd cds = case (\(ColMetaData x) -> x) <$> maybeCmd of Nothing -> error "rowList: ColMetaData is necessary" Just cds' -> cds' datas = (\(TSRow row) -> rawBytes <$> row) <$> tsRss in map (fromListOfRawBytes cds) datas where rawBytes :: RowColumnData -> RawBytes rawBytes (RCDOrdinal dt) = dt rawBytes (RCDLarge _ _ dt) = dt -- [(TSColMetaData,[TSRow])] extractStreams :: [TokenStream] -> [(TokenStream,[TokenStream])] extractStreams = f . ( filter $ \x -> isTSColMetaData x || isTSRow x ) where f :: [TokenStream] -> [(TokenStream,[TokenStream])] f [] = [] f (cmd:xs) = let (rs,xs') = span isTSRow xs in (cmd,rs):f xs' isTSColMetaData :: TokenStream -> Bool isTSColMetaData (TSColMetaData{}) = True isTSColMetaData _ = False isTSRow :: TokenStream -> Bool isTSRow (TSRow{}) = True isTSRow _ = False mcdTypeInfo :: MetaColumnData -> TypeInfo mcdTypeInfo (MetaColumnData _ _ ti _ _) = ti class Row a where fromListOfRawBytes :: [MetaColumnData] -> [RawBytes] -> a instance Row () where fromListOfRawBytes [] [] = () fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 0" instance (Data a) => Row (Only a) where fromListOfRawBytes [m1] [b1] = Only d1 where !d1 = fromRawBytes (mcdTypeInfo m1) b1 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 1" instance (Data a, Data b) => Row (a,b) where fromListOfRawBytes [m1,m2] [b1,b2] = (d1,d2) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 2" instance (Data a, Data b, Data c) => Row (a,b,c) where fromListOfRawBytes [m1,m2,m3] [b1,b2,b3] = (d1,d2,d3) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 3" instance (Data a, Data b, Data c, Data d) => Row (a,b,c,d) where fromListOfRawBytes [m1,m2,m3,m4] [b1,b2,b3,b4] = (d1,d2,d3,d4) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 4" instance (Data a, Data b, Data c, Data d, Data e) => Row (a,b,c,d,e) where fromListOfRawBytes [m1,m2,m3,m4,m5] [b1,b2,b3,b4,b5] = (d1,d2,d3,d4,d5) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 5" instance (Data a, Data b, Data c, Data d, Data e, Data f) => Row (a,b,c,d,e,f) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6] [b1,b2,b3,b4,b5,b6] = (d1,d2,d3,d4,d5,d6) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 6" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g) => Row (a,b,c,d,e,f,g) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7] [b1,b2,b3,b4,b5,b6,b7] = (d1,d2,d3,d4,d5,d6,d7) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 7" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h) => Row (a,b,c,d,e,f,g,h) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8] [b1,b2,b3,b4,b5,b6,b7,b8] = (d1,d2,d3,d4,d5,d6,d7,d8) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 8" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i) => Row (a,b,c,d,e,f,g,h,i) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9] [b1,b2,b3,b4,b5,b6,b7,b8,b9] = (d1,d2,d3,d4,d5,d6,d7,d8,d9) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 9" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j) => Row (a,b,c,d,e,f,g,h,i,j) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 10" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k) => Row (a,b,c,d,e,f,g,h,i,j,k) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 11" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l) => Row (a,b,c,d,e,f,g,h,i,j,k,l) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 12" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 13" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 14" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 15" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 16" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p, Data q) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 !d17 = fromRawBytes (mcdTypeInfo m17) b17 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 17" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p, Data q, Data r) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 !d17 = fromRawBytes (mcdTypeInfo m17) b17 !d18 = fromRawBytes (mcdTypeInfo m18) b18 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 18" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p, Data q, Data r, Data s) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 !d17 = fromRawBytes (mcdTypeInfo m17) b17 !d18 = fromRawBytes (mcdTypeInfo m18) b18 !d19 = fromRawBytes (mcdTypeInfo m19) b19 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 19" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p, Data q, Data r, Data s , Data t) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 !d17 = fromRawBytes (mcdTypeInfo m17) b17 !d18 = fromRawBytes (mcdTypeInfo m18) b18 !d19 = fromRawBytes (mcdTypeInfo m19) b19 !d20 = fromRawBytes (mcdTypeInfo m20) b20 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 20" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p, Data q, Data r, Data s , Data t, Data u) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 !d17 = fromRawBytes (mcdTypeInfo m17) b17 !d18 = fromRawBytes (mcdTypeInfo m18) b18 !d19 = fromRawBytes (mcdTypeInfo m19) b19 !d20 = fromRawBytes (mcdTypeInfo m20) b20 !d21 = fromRawBytes (mcdTypeInfo m21) b21 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 21" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p, Data q, Data r, Data s , Data t, Data u, Data v) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 !d17 = fromRawBytes (mcdTypeInfo m17) b17 !d18 = fromRawBytes (mcdTypeInfo m18) b18 !d19 = fromRawBytes (mcdTypeInfo m19) b19 !d20 = fromRawBytes (mcdTypeInfo m20) b20 !d21 = fromRawBytes (mcdTypeInfo m21) b21 !d22 = fromRawBytes (mcdTypeInfo m22) b22 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 22" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p, Data q, Data r, Data s , Data t, Data u, Data v, Data w) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 !d17 = fromRawBytes (mcdTypeInfo m17) b17 !d18 = fromRawBytes (mcdTypeInfo m18) b18 !d19 = fromRawBytes (mcdTypeInfo m19) b19 !d20 = fromRawBytes (mcdTypeInfo m20) b20 !d21 = fromRawBytes (mcdTypeInfo m21) b21 !d22 = fromRawBytes (mcdTypeInfo m22) b22 !d23 = fromRawBytes (mcdTypeInfo m23) b23 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 23" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p, Data q, Data r, Data s , Data t, Data u, Data v, Data w, Data x) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23,m24] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 !d17 = fromRawBytes (mcdTypeInfo m17) b17 !d18 = fromRawBytes (mcdTypeInfo m18) b18 !d19 = fromRawBytes (mcdTypeInfo m19) b19 !d20 = fromRawBytes (mcdTypeInfo m20) b20 !d21 = fromRawBytes (mcdTypeInfo m21) b21 !d22 = fromRawBytes (mcdTypeInfo m22) b22 !d23 = fromRawBytes (mcdTypeInfo m23) b23 !d24 = fromRawBytes (mcdTypeInfo m24) b24 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 24" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p, Data q, Data r, Data s , Data t, Data u, Data v, Data w, Data x, Data y) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23,m24,m25] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 !d17 = fromRawBytes (mcdTypeInfo m17) b17 !d18 = fromRawBytes (mcdTypeInfo m18) b18 !d19 = fromRawBytes (mcdTypeInfo m19) b19 !d20 = fromRawBytes (mcdTypeInfo m20) b20 !d21 = fromRawBytes (mcdTypeInfo m21) b21 !d22 = fromRawBytes (mcdTypeInfo m22) b22 !d23 = fromRawBytes (mcdTypeInfo m23) b23 !d24 = fromRawBytes (mcdTypeInfo m24) b24 !d25 = fromRawBytes (mcdTypeInfo m25) b25 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 25" instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g, Data h, Data i, Data j, Data k, Data l, Data m, Data n, Data o, Data p, Data q, Data r, Data s , Data t, Data u, Data v, Data w, Data x, Data y, Data z) => Row (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) where fromListOfRawBytes [m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23,m24,m25,m26] [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26] = (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26) where !d1 = fromRawBytes (mcdTypeInfo m1) b1 !d2 = fromRawBytes (mcdTypeInfo m2) b2 !d3 = fromRawBytes (mcdTypeInfo m3) b3 !d4 = fromRawBytes (mcdTypeInfo m4) b4 !d5 = fromRawBytes (mcdTypeInfo m5) b5 !d6 = fromRawBytes (mcdTypeInfo m6) b6 !d7 = fromRawBytes (mcdTypeInfo m7) b7 !d8 = fromRawBytes (mcdTypeInfo m8) b8 !d9 = fromRawBytes (mcdTypeInfo m9) b9 !d10 = fromRawBytes (mcdTypeInfo m10) b10 !d11 = fromRawBytes (mcdTypeInfo m11) b11 !d12 = fromRawBytes (mcdTypeInfo m12) b12 !d13 = fromRawBytes (mcdTypeInfo m13) b13 !d14 = fromRawBytes (mcdTypeInfo m14) b14 !d15 = fromRawBytes (mcdTypeInfo m15) b15 !d16 = fromRawBytes (mcdTypeInfo m16) b16 !d17 = fromRawBytes (mcdTypeInfo m17) b17 !d18 = fromRawBytes (mcdTypeInfo m18) b18 !d19 = fromRawBytes (mcdTypeInfo m19) b19 !d20 = fromRawBytes (mcdTypeInfo m20) b20 !d21 = fromRawBytes (mcdTypeInfo m21) b21 !d22 = fromRawBytes (mcdTypeInfo m22) b22 !d23 = fromRawBytes (mcdTypeInfo m23) b23 !d24 = fromRawBytes (mcdTypeInfo m24) b24 !d25 = fromRawBytes (mcdTypeInfo m25) b25 !d26 = fromRawBytes (mcdTypeInfo m26) b26 fromListOfRawBytes _ _ = error "fromListOfRawBytes: List length must be 26"