-- This file is part of Bindings-bfd. -- -- 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 . module Bindings.Bfd.Misc where import Data.Bits import Foreign.C import Foreign.Ptr type Bool' = CUInt type Vma = Int type Vma' = CULong type Size = Int type Size' = CULong type File = Ptr File' data File' = File' type FilePtr = Int type FilePtr' = CULong alignToPower :: Vma -> Int -> Vma alignToPower vma power = (vma + mask) .&. (complement $ mask) where mask = shiftL 1 power - 1 foreign import ccall unsafe "stdio.h fdopen" c_fdopen :: CInt -> CString -> IO File foreign import ccall unsafe "stdio.h fflush" c_fflush :: File -> IO CInt