storable-complex-0.2.2/0000755000000000000000000000000012451410744013163 5ustar0000000000000000storable-complex-0.2.2/.travis.yml0000644000000000000000000001240012451410744015271 0ustar0000000000000000# NB: don't set `language: haskell` here # See also https://github.com/hvr/multi-ghc-travis for more information # The following lines enable several GHC versions and/or HP versions # to be tested; often it's enough to test only against the last # release of a major GHC version. Setting HPVER implictly sets # GHCVER. Omit lines with versions you don't need/want testing for. env: # - CABALVER=1.16 GHCVER=6.12.3 # - CABALVER=1.16 GHCVER=7.0.1 # - CABALVER=1.16 GHCVER=7.0.2 # - CABALVER=1.16 GHCVER=7.0.3 # - CABALVER=1.16 GHCVER=7.0.4 - CABALVER=1.16 GHCVER=7.2.1 - CABALVER=1.16 GHCVER=7.2.2 - CABALVER=1.16 GHCVER=7.4.1 - CABALVER=1.16 GHCVER=7.4.2 - CABALVER=1.16 GHCVER=7.6.1 - CABALVER=1.16 GHCVER=7.6.2 - CABALVER=1.18 GHCVER=7.6.3 - CABALVER=1.18 GHCVER=7.8.1 - CABALVER=1.18 GHCVER=7.8.2 - CABALVER=1.18 GHCVER=7.8.3 - CABALVER=1.22 GHCVER=7.10.1 - CABALVER=head GHCVER=head - HPVER=2013.2.0.0 - HPVER=2012.4.0.0 - HPVER=2012.2.0.0 # - HPVER=2011.4.0.0 matrix: allow_failures: - env: GHCVER=head CABALVER=head # Note: the distinction between `before_install` and `install` is not # important. before_install: - case "$HPVER" in "") ;; "2014.2.0.0") export CABALVER=1.18 ; export GHCVER=7.8.3 ; echo "constraints:async==2.0.1.5,attoparsec==0.10.4.0,case-insensitive==1.1.0.3,fgl==5.5.0.1,GLUT==2.5.1.1,GLURaw==1.4.0.1,haskell-src==1.0.1.6,hashable==1.2.2.0,html==1.0.1.2,HTTP==4000.2.10,HUnit==1.2.5.2,mtl==2.1.3.1,network==2.4.2.3,OpenGL==2.9.2.0,OpenGLRaw==1.5.0.0,parallel==3.2.0.4,parsec==3.1.5,primitive==0.5.2.1,QuickCheck==2.6,random==1.0.1.1,regex-base==0.93.2,regex-compat==0.95.1,regex-posix==0.95.2,split==0.2.2,stm==2.4.2,syb==0.4.1,text==1.1.0.0,transformers==0.3.0.0,unordered-containers==0.2.4.0,vector==0.10.9.1,xhtml==3000.2.1,zlib==0.5.4.1" > cabal.config ;; "2013.2.0.0") export CABALVER=1.16 ; export GHCVER=7.6.3 ; echo "constraints:async==2.0.1.4,attoparsec==0.10.4.0,case-insensitive==1.0.0.1,cgi==3001.1.7.5,fgl==5.4.2.4,GLUT==2.4.0.0,GLURaw==1.3.0.0,haskell-src==1.0.1.5,hashable==1.1.2.5,html==1.0.1.2,HTTP==4000.2.8,HUnit==1.2.5.2,mtl==2.1.2,network==2.4.1.2,OpenGL==2.8.0.0,OpenGLRaw==1.3.0.0,parallel==3.2.0.3,parsec==3.1.3,QuickCheck==2.6,random==1.0.1.1,regex-base==0.93.2,regex-compat==0.95.1,regex-posix==0.95.2,split==0.2.2,stm==2.4.2,syb==0.4.0,text==0.11.3.1,transformers==0.3.0.0,unordered-containers==0.2.3.0,vector==0.10.0.1,xhtml==3000.2.1,zlib==0.5.4.1" > cabal.config ;; "2012.4.0.0") export CABALVER=1.16 ; export GHCVER=7.6.2 ; echo "constraints:async==2.0.1.3,cgi==3001.1.7.4,fgl==5.4.2.4,GLUT==2.1.2.1,haskell-src==1.0.1.5,html==1.0.1.2,HTTP==4000.2.5,HUnit==1.2.5.1,mtl==2.1.2,network==2.3.1.0,OpenGL==2.2.3.1,parallel==3.2.0.3,parsec==3.1.3,QuickCheck==2.5.1.1,random==1.0.1.1,regex-base==0.93.2,regex-compat==0.95.1,regex-posix==0.95.2,split==0.2.1.1,stm==2.4,syb==0.3.7,text==0.11.2.3,transformers==0.3.0.0,vector==0.10.0.1,xhtml==3000.2.1,zlib==0.5.4.0" > cabal.config ;; "2012.2.0.0") export CABALVER=1.16 ; export GHCVER=7.4.1 ; echo "constraints:cgi==3001.1.7.4,fgl==5.4.2.4,GLUT==2.1.2.1,haskell-src==1.0.1.5,html==1.0.1.2,HTTP==4000.2.3,HUnit==1.2.4.2,mtl==2.1.1,network==2.3.0.13,OpenGL==2.2.3.1,parallel==3.2.0.2,parsec==3.1.2,QuickCheck==2.4.2,random==1.0.1.1,regex-base==0.93.2,regex-compat==0.95.1,regex-posix==0.95.1,stm==2.3,syb==0.3.6.1,text==0.11.2.0,transformers==0.3.0.0,xhtml==3000.2.1,zlib==0.5.3.3" > cabal.config ;; "2011.4.0.0") export CABALVER=1.16 ; export GHCVER=7.0.4 ; echo "constraints:cgi==3001.1.7.4,fgl==5.4.2.4,GLUT==2.1.2.1,haskell-src==1.0.1.4,html==1.0.1.2,HUnit==1.2.4.2,network==2.3.0.5,OpenGL==2.2.3.0,parallel==3.1.0.1,parsec==3.1.1,QuickCheck==2.4.1.1,regex-base==0.93.2,regex-compat==0.95.1,regex-posix==0.95.1,stm==2.2.0.1,syb==0.3.3,xhtml==3000.2.0.4,zlib==0.5.3.1,HTTP==4000.1.2,deepseq==1.1.0.2" > cabal.config ;; *) export GHCVER=unknown ; echo "unknown/invalid Haskell Platform requested" ; exit 1 ;; esac - travis_retry sudo add-apt-repository -y ppa:hvr/ghc - travis_retry sudo apt-get update - travis_retry sudo apt-get install cabal-install-$CABALVER ghc-$GHCVER - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH install: - cabal --version - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]" - travis_retry cabal update - cabal install --only-dependencies --enable-tests --enable-benchmarks # Here starts the actual work to be performed for the package under # test; any command which exits with a non-zero exit code causes the # build to fail. script: - if [ -f configure.ac ]; then autoreconf -i; fi # -v2 provides useful information for debugging - cabal configure --enable-tests --enable-benchmarks -v2 # this builds all libraries and executables # (including tests/benchmarks) - cabal build - cabal test - cabal check # tests that a source-distribution can be generated - cabal sdist # check that the generated source-distribution can be built & installed - export SRC_TGZ=$(cabal info . | awk '{print $2 ".tar.gz";exit}') ; cd dist/; if [ -f "$SRC_TGZ" ]; then cabal install --force-reinstalls "$SRC_TGZ"; else echo "expected '$SRC_TGZ' not found"; exit 1; fi # EOF storable-complex-0.2.2/LICENSE0000644000000000000000000000275012451410744014174 0ustar0000000000000000Copyright Jed Brown 2008 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Jed Brown nor the names of other contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. storable-complex-0.2.2/Setup.lhs0000644000000000000000000000011412451410744014767 0ustar0000000000000000#!/usr/bin/env runhaskell > import Distribution.Simple > main = defaultMain storable-complex-0.2.2/storable-complex.cabal0000644000000000000000000000255512451410744017436 0ustar0000000000000000name: storable-complex version: 0.2.2 synopsis: Storable instance for Complex description: Provides a Storable instance for Complex which is binary compatible with C99, C++ and Fortran complex data types. . The only purpose of this package is to provide a standard location for this instance so that other packages needing this instance can play nicely together. category: Data license: BSD3 license-file: LICENSE author: Jed Brown maintainer: Carter Schonwald homepage: https://github.com/cartazio/storable-complex bug-reports: https://github.com/cartazio/storable-complex/issues build-type: Simple cabal-version: >= 1.6 extra-source-files: in-base/Foreign/Storable/Complex.hs out-of-base/Foreign/Storable/Complex.hs .travis.yml source-repository head type: git location: git@github.com:cartazio/storable-complex.git flag instanceInBase description: instance Storable Complex is already in 'base' default: True library exposed-modules: Foreign.Storable.Complex if flag(instanceInBase) build-depends: base >= 4.8 && < 5 hs-source-dirs: in-base else build-depends: base < 4.8 && >= 4.4 hs-source-dirs: out-of-base storable-complex-0.2.2/in-base/0000755000000000000000000000000012451410744014501 5ustar0000000000000000storable-complex-0.2.2/in-base/Foreign/0000755000000000000000000000000012451410744016072 5ustar0000000000000000storable-complex-0.2.2/in-base/Foreign/Storable/0000755000000000000000000000000012451410744017645 5ustar0000000000000000storable-complex-0.2.2/in-base/Foreign/Storable/Complex.hs0000644000000000000000000000005112451410744021604 0ustar0000000000000000module Foreign.Storable.Complex () where storable-complex-0.2.2/out-of-base/0000755000000000000000000000000012451410744015304 5ustar0000000000000000storable-complex-0.2.2/out-of-base/Foreign/0000755000000000000000000000000012451410744016675 5ustar0000000000000000storable-complex-0.2.2/out-of-base/Foreign/Storable/0000755000000000000000000000000012451410744020450 5ustar0000000000000000storable-complex-0.2.2/out-of-base/Foreign/Storable/Complex.hs0000644000000000000000000000246112451410744022416 0ustar0000000000000000----------------------------------------------------------------------------- -- | -- Module : Data.Array.CArray.Base -- Copyright : (c) 2008 Jed Brown -- License : BSD-style -- -- Maintainer : jed@59A2.org -- Stability : provisional -- Portability : portable -- -- This module provides a Storable instance for Complex which is binary -- compatible with C99, C++ and Fortran complex data types. It's only purpose -- is to provide a standard location for this instance so that other packages -- needing this instance can play nicely together. -- ----------------------------------------------------------------------------- {-# LANGUAGE ScopedTypeVariables #-} module Foreign.Storable.Complex () where import Data.Complex import Foreign.Storable import Foreign.Ptr -- This Storable instance for Complex is binary compatible with C99, C++ and -- Fortran complex data types. instance Storable a => Storable (Complex a) where sizeOf z = 2 * sizeOf (undefined :: a) alignment z = alignment (undefined :: a) peek p = do let q = castPtr p r <- peek q i <- peekElemOff q 1 return (r :+ i) poke p (r :+ i) = do let q = (castPtr p) poke q r pokeElemOff q 1 i