-- Generates C structs and related functions
stuffC info = do
    let c_struct = infoToCStruct info
        c_cons  = genConstructor c_struct
        c_checkOffs = genCheckOffsets   c_struct
        c_checkFields = genCheckFields  c_struct
        c_size        = genGetSize      c_struct
        c_alignment   = genGetAlignment c_struct
        c_poke        = genPoke c_struct
    concat [show c_struct, c_cons, c_poke, c_checkOffs, c_checkFields, c_size, c_alignment] 

-- Generates Haskell datatypes and related instances
stuffC info = do
    let c_struct = infoToCStruct info
        c_cons  = genConstructor c_struct
        c_checkOffs = genCheckOffsets   c_struct
        c_checkFields = genCheckFields  c_struct
        c_size        = genGetSize      c_struct
        c_alignment   = genGetAlignment c_struct
        c_poke        = genPoke c_struct
    concat [show c_struct, c_cons, c_poke, c_checkOffs, c_checkFields, c_size, c_alignment] 

-- Generates Haskell datatypes and related instances
stuffC info = do
    let c_struct = infoToCStruct info
        c_cons  = genConstructor c_struct
        c_checkOffs = genCheckOffsets   c_struct
        c_checkFields = genCheckFields  c_struct
        c_size        = genGetSize      c_struct
        c_alignment   = genGetAlignment c_struct
        c_poke        = genPoke c_struct
    concat [show c_struct, c_cons, c_poke, c_checkOffs, c_checkFields, c_size, c_alignment] 

-- Generates Haskell datatypes and related instances