{-# LINE 1 "src/Bindings/Bfd/LinkOrder.hsc" #-}
-- This file is part of Bindings-bfd.
{-# LINE 2 "src/Bindings/Bfd/LinkOrder.hsc" #-}
--
-- Copyright (C) 2010 Michael Nelson
--
-- Bindings-bfd is free software: you can redistribute it and/or modify
-- it under the terms of the GNU Lesser General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- Bindings-bfd is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU Lesser General Public License for more details.

-- You should have received a copy of the GNU Lesser General Public License
-- along with Bindings-bfd.  If not, see <http://www.gnu.org/licenses/>.

module Bindings.Bfd.LinkOrder where

import Foreign.Marshal
import Foreign.Ptr
import Foreign.Storable

import {-# SOURCE #-} Bindings.Bfd.Section


{-# LINE 27 "src/Bindings/Bfd/LinkOrder.hsc" #-}

{-# LINE 28 "src/Bindings/Bfd/LinkOrder.hsc" #-}


type LinkOrder = Ptr LinkOrder'

data LinkOrder' = Section Section

instance Storable LinkOrder' where
   sizeOf _  = ((32))
{-# LINE 36 "src/Bindings/Bfd/LinkOrder.hsc" #-}
   alignment = sizeOf
   pokeByteOff buf off val
      | off == ((24)) =
{-# LINE 39 "src/Bindings/Bfd/LinkOrder.hsc" #-}
              ((\hsc_ptr -> pokeByteOff hsc_ptr 24)) buf $ unLinkOrder'Section val
{-# LINE 40 "src/Bindings/Bfd/LinkOrder.hsc" #-}
      | otherwise = error "LinkOrder.pokeByteOff otherwise"

unLinkOrder'Section
   :: LinkOrder'
   -> Section
unLinkOrder'Section (Section s) = s


mk
   :: Section
   -> IO LinkOrder
mk sect =
   do
      p <- malloc :: IO LinkOrder
      setSection p sect
      return p


setSection 
   :: LinkOrder
   -> Section
   -> IO ()
setSection lo sect = pokeByteOff lo ((24)) $ Section sect
{-# LINE 63 "src/Bindings/Bfd/LinkOrder.hsc" #-}