diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7fe7fb..4446caa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,7 @@ name: Build CI on: push: - branches: ["main"] + branches: ['main'] pull_request: workflow_dispatch: @@ -23,7 +23,7 @@ jobs: os: ubuntu os-version: 24.04 - - name: MacOS + - name: MacOS os: macos os-version: 13 @@ -31,25 +31,24 @@ jobs: os: macos os-version: 14 - steps: - uses: actions/checkout@v4 with: - fetch-depth: "0" + fetch-depth: '0' - uses: actions/checkout@v4 - name: Checkout OOPetris main repo + name: Checkout OOPetris main repo with: - fetch-depth: "0" + fetch-depth: '0' repository: OpenBrickProtocolFoundation/oopetris ref: main path: ./oopetris submodules: false - + - uses: actions/checkout@v4 name: Checkout C Wrapper with: - fetch-depth: "0" + fetch-depth: '0' repository: Totto16/oopetris_wrapper_c ref: main path: ./oopetris_c_wrapper @@ -69,11 +68,21 @@ jobs: version: 14 platform: x64 + - name: Setup GCC Environment (Linux) + if: matrix.config.os == 'ubuntu' + run: | + echo "CC=gcc" >> "$GITHUB_ENV" + echo "CXX=g++" >> "$GITHUB_ENV" + echo "CC_LD=gold" >> "$GITHUB_ENV" + echo "CXX_LD=gold" >> "$GITHUB_ENV" + echo "LD=gold" >> "$GITHUB_ENV" + - name: Setup Clang (MacOS) if: matrix.config.os == 'macos' run: | brew update - brew install llvm@18 + # TODO annotate with lld@19, after that is accepted, we don't want to use lld@20 without manually updating it ! + brew install llvm@19 lld echo "$(brew --prefix)/opt/llvm/bin" >> $GITHUB_PATH echo "LDFLAGS=-L$(brew --prefix)/opt/llvm/lib -L$(brew --prefix)/opt/llvm/lib/c++ -Wl,-rpath,$(brew --prefix)/opt/llvm/lib/c++" >> "$GITHUB_ENV" echo "CPPFLAGS=-I$(brew --prefix)/opt/llvm/include" >> "$GITHUB_ENV" @@ -83,13 +92,14 @@ jobs: echo "CC_LD=lld" >> "$GITHUB_ENV" echo "CXX_LD=lld" >> "$GITHUB_ENV" echo "OBJC_LD=lld" >> "$GITHUB_ENV" + echo "LD=lld" >> "$GITHUB_ENV" - name: Setup meson (MacOS) - if: matrix.config.os == 'macos' + if: matrix.config.os == 'macos' run: | brew update brew install meson - + # NOTE: meson has no dependencies, so --break-system-packages doesn't really break anything! - name: Setup meson if: matrix.config.os != 'macos' @@ -100,60 +110,39 @@ jobs: if: matrix.config.os == 'ubuntu' run: | sudo apt-get update - sudo apt-get install ninja-build -y + sudo apt-get install ninja-build -y --no-install-recommends sudo pip install meson --break-system-packages - name: Fix pkg-config (Windows) if: matrix.config.os == 'windows' run: | - Remove-Item -Path C:\Strawberry\ -Recurse + Remove-Item -Path C:\Strawberry\ -Recurse choco install pkgconfiglite echo "PKG_CONFIG_PATH=C:/lib/pkgconfig" | Out-File -FilePath $env:GITHUB_ENV -Append - - - name: Configure - run: | - cd oopetris - meson setup build -Dbuildtype=release -Ddefault_library=static -Dclang_libcpp=${{ matrix.config.os == 'macos' && 'enabled' || 'disabled' }} -Donly_build_libs=true ${{ matrix.config.os == 'windows' && '-Db_vscrt=static_from_buildtype' || '' }} - - - name: Build and install Libs - if: matrix.config.os != 'ubuntu' - run: | - cd oopetris - meson install -C build - - - name: Build and install Libs (Linux) - if: matrix.config.os == 'ubuntu' - run: | - cd oopetris - sudo meson install -C build + echo "C:/bin" | Out-File -FilePath $env:GITHUB_PATH -Append - - name: Build C Wrapper - run: | - cd oopetris_c_wrapper - meson setup -Dtests=false -Dexample=false build -Dbuildtype=release -Ddefault_library=static - meson compile -C build - - - - name: Install C Wrapper - if: matrix.config.os != 'ubuntu' - run: | - cd oopetris_c_wrapper - meson install -C build + - name: Build and Install OOPetris + run: | + cd oopetris + meson setup build -Dbuildtype=release -Ddefault_library=shared -Dclang_libcpp=${{ matrix.config.os == 'macos' && 'enabled' || 'disabled' }} -Donly_build_libs=true ${{ matrix.config.os == 'windows' && '-Db_vscrt=from_buildtype' || '' }} + ${{ matrix.config.os == 'ubuntu' && 'sudo' || '' }} meson install -C build - - name: Build and install Libs (Linux) - if: matrix.config.os == 'ubuntu' - run: | - cd oopetris_c_wrapper - sudo meson install -C build + - name: Build and Install C Wrapper + run: | + cd oopetris_c_wrapper + meson setup -Dtests=false -Dexample=false build -Dbuildtype=release -Ddefault_library=shared + ${{ matrix.config.os == 'ubuntu' && 'sudo' || '' }} meson install -C build + ${{ matrix.config.os == 'ubuntu' && 'sudo ldconfig' || '' }} - uses: haskell-actions/setup@v2 with: - ghc-version: '9.6.5' + ghc-version: '9.6.6' enable-stack: true stack-version: 'latest' - - name: Build Wrapper - run: | + - name: Build and Test Wrapper + run: | stack build stack test stack run -- test/files/correct.rec + \ No newline at end of file diff --git a/oopetris-haskell-wrapper.cabal b/oopetris-haskell-wrapper.cabal index 8e2f61a..4da02ec 100644 --- a/oopetris-haskell-wrapper.cabal +++ b/oopetris-haskell-wrapper.cabal @@ -1,6 +1,6 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.36.0. +-- This file has been generated from package.yaml by hpack version 0.37.0. -- -- see: https://github.com/sol/hpack @@ -37,7 +37,7 @@ library build-depends: base >=4.7 && <5 , c-storable-deriving >=0.1.3 - , hashmap >=1.3.3 + , unordered-containers >=0.2.20 default-language: Haskell2010 executable oopetris-haskell-wrapper-exe @@ -50,8 +50,8 @@ executable oopetris-haskell-wrapper-exe build-depends: base >=4.7 && <5 , c-storable-deriving >=0.1.3 - , hashmap >=1.3.3 , oopetris-haskell-wrapper + , unordered-containers >=0.2.20 default-language: Haskell2010 test-suite oopetris-haskell-wrapper-test @@ -65,6 +65,6 @@ test-suite oopetris-haskell-wrapper-test build-depends: base >=4.7 && <5 , c-storable-deriving >=0.1.3 - , hashmap >=1.3.3 , oopetris-haskell-wrapper + , unordered-containers >=0.2.20 default-language: Haskell2010 diff --git a/package.yaml b/package.yaml index 5ee214d..94312ff 100644 --- a/package.yaml +++ b/package.yaml @@ -20,7 +20,7 @@ description: Please see the README.md dependencies: - base >= 4.7 && < 5 - c-storable-deriving >= 0.1.3 - - hashmap >= 1.3.3 + - unordered-containers >= 0.2.20 ghc-options: - -Wall diff --git a/src/FFI.hs b/src/FFI.hs index 84d1aaa..a9cbacf 100644 --- a/src/FFI.hs +++ b/src/FFI.hs @@ -40,56 +40,56 @@ import StdInt (CI32, CI64, CI8, CU32, CU64, CU8) import Structs (GridPropertiesC, RecordingInformationC) import Types (AdditionalInformationC, AdditionalInformationFieldC, EnumTypeC, RecordingReturnValueC) -foreign import capi "oopetris/oopetris_wrapper.h oopetris_is_recording_file" c_is_recording_file :: ConstPtr CChar -> IO CBool +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_is_recording_file" c_is_recording_file :: ConstPtr CChar -> IO CBool -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_get_keys" c_additional_information_get_keys :: Ptr AdditionalInformationC -> IO (ConstPtr (Ptr CChar)) +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_get_keys" c_additional_information_get_keys :: Ptr AdditionalInformationC -> IO (ConstPtr (Ptr CChar)) -foreign import capi "oopetris/oopetris_wrapper.h &oopetris_additional_information_keys_free" c_additional_information_keys_free :: FunPtr (Ptr (Ptr CChar) -> IO ()) +foreign import capi "oopetris/c_wrapper/wrapper.h &oopetris_additional_information_keys_free" c_additional_information_keys_free :: FunPtr (Ptr (Ptr CChar) -> IO ()) -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_get_field" c_additional_information_get_field :: Ptr AdditionalInformationC -> ConstPtr CChar -> ConstPtr AdditionalInformationFieldC +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_get_field" c_additional_information_get_field :: Ptr AdditionalInformationC -> ConstPtr CChar -> ConstPtr AdditionalInformationFieldC -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_type" c_additional_information_field_get_type :: ConstPtr AdditionalInformationFieldC -> EnumTypeC +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_type" c_additional_information_field_get_type :: ConstPtr AdditionalInformationFieldC -> EnumTypeC -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_string" c_additional_information_field_get_string :: ConstPtr AdditionalInformationFieldC -> ConstPtr CChar +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_string" c_additional_information_field_get_string :: ConstPtr AdditionalInformationFieldC -> ConstPtr CChar -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_float" c_additional_information_field_get_float :: ConstPtr AdditionalInformationFieldC -> CFloat +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_float" c_additional_information_field_get_float :: ConstPtr AdditionalInformationFieldC -> CFloat -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_double" c_additional_information_field_get_double :: ConstPtr AdditionalInformationFieldC -> CDouble +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_double" c_additional_information_field_get_double :: ConstPtr AdditionalInformationFieldC -> CDouble -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_bool" c_additional_information_field_get_bool :: ConstPtr AdditionalInformationFieldC -> CBool +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_bool" c_additional_information_field_get_bool :: ConstPtr AdditionalInformationFieldC -> CBool -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_u8" c_additional_information_field_get_u8 :: ConstPtr AdditionalInformationFieldC -> CU8 +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_u8" c_additional_information_field_get_u8 :: ConstPtr AdditionalInformationFieldC -> CU8 -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_i8" c_additional_information_field_get_i8 :: ConstPtr AdditionalInformationFieldC -> CI8 +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_i8" c_additional_information_field_get_i8 :: ConstPtr AdditionalInformationFieldC -> CI8 -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_u32" c_additional_information_field_get_u32 :: ConstPtr AdditionalInformationFieldC -> CU32 +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_u32" c_additional_information_field_get_u32 :: ConstPtr AdditionalInformationFieldC -> CU32 -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_i32" c_additional_information_field_get_i32 :: ConstPtr AdditionalInformationFieldC -> CI32 +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_i32" c_additional_information_field_get_i32 :: ConstPtr AdditionalInformationFieldC -> CI32 -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_u64" c_additional_information_field_get_u64 :: ConstPtr AdditionalInformationFieldC -> CU64 +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_u64" c_additional_information_field_get_u64 :: ConstPtr AdditionalInformationFieldC -> CU64 -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_i64" c_additional_information_field_get_i64 :: ConstPtr AdditionalInformationFieldC -> CI64 +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_i64" c_additional_information_field_get_i64 :: ConstPtr AdditionalInformationFieldC -> CI64 -foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_vector" c_additional_information_field_get_vector :: ConstPtr AdditionalInformationFieldC -> ConstPtr (ConstPtr AdditionalInformationFieldC) +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_vector" c_additional_information_field_get_vector :: ConstPtr AdditionalInformationFieldC -> ConstPtr (ConstPtr AdditionalInformationFieldC) -foreign import capi "oopetris/oopetris_wrapper.h oopetris_get_recording_information" c_get_recording_information :: ConstPtr CChar -> IO (Ptr RecordingReturnValueC) +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_get_recording_information" c_get_recording_information :: ConstPtr CChar -> IO (Ptr RecordingReturnValueC) -foreign import capi "oopetris/oopetris_wrapper.h oopetris_is_error" c_is_error :: Ptr RecordingReturnValueC -> CBool +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_is_error" c_is_error :: Ptr RecordingReturnValueC -> CBool -foreign import capi "oopetris/oopetris_wrapper.h oopetris_get_error" c_get_error :: Ptr RecordingReturnValueC -> ConstPtr CChar +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_get_error" c_get_error :: Ptr RecordingReturnValueC -> ConstPtr CChar -foreign import capi "oopetris/oopetris_wrapper.h oopetris_get_information" c_get_information :: Ptr RecordingReturnValueC -> Ptr RecordingInformationC +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_get_information" c_get_information :: Ptr RecordingReturnValueC -> Ptr RecordingInformationC -foreign import capi "oopetris/oopetris_wrapper.h &oopetris_free_recording_information" c_free_recording_information :: FunPtr (Ptr RecordingInformationC -> IO ()) +foreign import capi "oopetris/c_wrapper/wrapper.h &oopetris_free_recording_information" c_free_recording_information :: FunPtr (Ptr RecordingInformationC -> IO ()) -foreign import capi "oopetris/oopetris_wrapper.h &oopetris_free_recording_value_only" c_free_recording_value_only :: FunPtr (Ptr RecordingReturnValueC -> IO ()) +foreign import capi "oopetris/c_wrapper/wrapper.h &oopetris_free_recording_value_only" c_free_recording_value_only :: FunPtr (Ptr RecordingReturnValueC -> IO ()) -foreign import capi "oopetris/oopetris_wrapper.h &oopetris_free_recording_value_whole" c_free_recording_value_whole :: FunPtr (Ptr RecordingReturnValueC -> IO ()) +foreign import capi "oopetris/c_wrapper/wrapper.h &oopetris_free_recording_value_whole" c_free_recording_value_whole :: FunPtr (Ptr RecordingReturnValueC -> IO ()) -foreign import capi "oopetris/oopetris_wrapper.h oopetris_get_lib_version" c_get_lib_version :: ConstPtr CChar +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_get_lib_version" c_get_lib_version :: ConstPtr CChar -foreign import capi "oopetris/oopetris_wrapper.h oopetris_get_grid_properties" c_get_grid_properties :: IO (Ptr GridPropertiesC) +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_get_grid_properties" c_get_grid_properties :: IO (Ptr GridPropertiesC) -foreign import capi "oopetris/oopetris_wrapper.h &oopetris_free_grid_properties" c_free_grid_properties :: FunPtr (Ptr GridPropertiesC -> IO ()) +foreign import capi "oopetris/c_wrapper/wrapper.h &oopetris_free_grid_properties" c_free_grid_properties :: FunPtr (Ptr GridPropertiesC -> IO ()) -foreign import capi "oopetris/oopetris_wrapper.h oopetris_array_len" c_array_len :: Ptr () -> CSize +foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_array_len" c_array_len :: Ptr () -> CSize diff --git a/src/Lib.hs b/src/Lib.hs index a3370c6..af358fd 100644 --- a/src/Lib.hs +++ b/src/Lib.hs @@ -1,7 +1,7 @@ module Lib (isRecordingFile, getLibVersion, getGridProperties, getRecordingInformation, RecordingReturnValue (..)) where import qualified AdditionalInformationType as AdType -import Data.HashMap (fromList) +import Data.HashMap.Strict (fromList) import FFI (c_additional_information_field_get_bool, c_additional_information_field_get_double, c_additional_information_field_get_float, c_additional_information_field_get_i32, c_additional_information_field_get_i64, c_additional_information_field_get_i8, c_additional_information_field_get_string, c_additional_information_field_get_type, c_additional_information_field_get_u32, c_additional_information_field_get_u64, c_additional_information_field_get_u8, c_additional_information_field_get_vector, c_additional_information_get_field, c_additional_information_get_keys, c_additional_information_keys_free, c_array_len, c_free_grid_properties, c_free_recording_value_whole, c_get_error, c_get_grid_properties, c_get_information, c_get_lib_version, c_get_recording_information, c_is_error, c_is_recording_file) import Foreign (Storable (sizeOf), withForeignPtr) import Foreign.C (CChar (), CDouble (CDouble), CFloat (CFloat), withCString) diff --git a/src/Structs.hs b/src/Structs.hs index 0b2c581..65cdca7 100644 --- a/src/Structs.hs +++ b/src/Structs.hs @@ -22,7 +22,7 @@ module Structs ) where -import Data.HashMap (Map) +import Data.HashMap.Strict (HashMap) import Data.Int (Int32, Int64, Int8) import Data.Word (Word32, Word64, Word8) import Foreign.CStorable (CStorable (..)) @@ -51,7 +51,7 @@ data AdditionalInformationField | FieldVector [AdditionalInformationField] deriving (Eq, Show) -type AdditionalInformation = Map String AdditionalInformationField +type AdditionalInformation = HashMap String AdditionalInformationField -- | This aligns the sizeof, so that it works correctly with the library!! cSizeOfPatch :: (CStorable a) => a -> Int @@ -61,7 +61,7 @@ cSizeOfPatch a = if remainder == 0 then sz else (res + 1) * al sz = cSizeOf a (res, remainder) = sz `divMod` al -data {-# CTYPE "oopetris/oopetris_wrapper.h" "OOPetrisTetrionRecord" #-} TetrionRecordC = TetrionRecordC +data {-# CTYPE "oopetris/c_wrapper/wrapper.h" "OOPetrisTetrionRecord" #-} TetrionRecordC = TetrionRecordC { c_r_simulation_step_index :: CU64, c_event :: EnumTypeC, c_r_tetrion_index :: CU8 @@ -87,7 +87,7 @@ instance Storable TetrionRecordC where peek :: Ptr TetrionRecordC -> IO TetrionRecordC peek = cPeek -data {-# CTYPE "oopetris/oopetris_wrapper.h" "OOpetrisMinoPosition" #-} MinoPositionC = MinoPositionC +data {-# CTYPE "oopetris/c_wrapper/wrapper.h" "OOpetrisMinoPosition" #-} MinoPositionC = MinoPositionC { c_x :: CU8, c_y :: CU8 } @@ -111,7 +111,7 @@ instance Storable MinoPositionC where peek :: Ptr MinoPositionC -> IO MinoPositionC peek = cPeek -data {-# CTYPE "oopetris/oopetris_wrapper.h" "OOPetrisMino" #-} MinoC = MinoC +data {-# CTYPE "oopetris/c_wrapper/wrapper.h" "OOPetrisMino" #-} MinoC = MinoC { c_position :: MinoPositionC, c_type :: EnumTypeC } @@ -135,7 +135,7 @@ instance Storable MinoC where peek :: Ptr MinoC -> IO MinoC peek = cPeek -data {-# CTYPE "oopetris/oopetris_wrapper.h" "OOpetrisTetrionSnapshot" #-} TetrionSnapshotC = TetrionSnapshotC +data {-# CTYPE "oopetris/c_wrapper/wrapper.h" "OOpetrisTetrionSnapshot" #-} TetrionSnapshotC = TetrionSnapshotC { c_level :: CU32, c_mino_stack :: Ptr MinoC, c_score :: CU64, @@ -167,7 +167,7 @@ instance Storable TetrionSnapshotC where peek :: Ptr TetrionSnapshotC -> IO TetrionSnapshotC peek = cPeek -data {-# CTYPE "oopetris/oopetris_wrapper.h" "OOPetrisTetrionHeader" #-} TetrionHeaderC = TetrionHeaderC +data {-# CTYPE "oopetris/c_wrapper/wrapper.h" "OOPetrisTetrionHeader" #-} TetrionHeaderC = TetrionHeaderC { c_seed :: CU64, c_starting_level :: CU32 } @@ -191,7 +191,7 @@ instance Storable TetrionHeaderC where peek :: Ptr TetrionHeaderC -> IO TetrionHeaderC peek = cPeek -data {-# CTYPE "oopetris/oopetris_wrapper.h" "OOPetrisRecordingInformation" #-} RecordingInformationC = RecordingInformationC +data {-# CTYPE "oopetris/c_wrapper/wrapper.h" "OOPetrisRecordingInformation" #-} RecordingInformationC = RecordingInformationC { c_information :: Ptr AdditionalInformationC, c_records :: Ptr TetrionRecordC, c_snapshots :: Ptr TetrionSnapshotC, @@ -221,7 +221,7 @@ instance Storable RecordingInformationC where peek :: Ptr RecordingInformationC -> IO RecordingInformationC peek = cPeek -data {-# CTYPE "oopetris/oopetris_wrapper.h" "OOPetrisGridProperties" #-} GridPropertiesC = GridPropertiesC +data {-# CTYPE "oopetris/c_wrapper/wrapper.h" "OOPetrisGridProperties" #-} GridPropertiesC = GridPropertiesC { c_height :: CU32, c_width :: CU32 } diff --git a/src/Types.hs b/src/Types.hs index f92dc70..b687d6b 100644 --- a/src/Types.hs +++ b/src/Types.hs @@ -3,13 +3,13 @@ module Types (AdditionalInformationC, AdditionalInformationFieldC, RecordingRetu import StdInt (CI32) -- opaque type -data {-# CTYPE "oopetris/oopetris_wrapper.h" "OOPetrisAdditionalInformation" #-} AdditionalInformationC +data {-# CTYPE "oopetris/c_wrapper/wrapper.h" "OOPetrisAdditionalInformation" #-} AdditionalInformationC -- opaque type -data {-# CTYPE "oopetris/oopetris_wrapper.h" "OOPetrisAdditionalInformationField" #-} AdditionalInformationFieldC +data {-# CTYPE "oopetris/c_wrapper/wrapper.h" "OOPetrisAdditionalInformationField" #-} AdditionalInformationFieldC -- opaque type -data {-# CTYPE "oopetris/oopetris_wrapper.h" "OOPetrisRecordingReturnValue" #-} RecordingReturnValueC +data {-# CTYPE "oopetris/c_wrapper/wrapper.h" "OOPetrisRecordingReturnValue" #-} RecordingReturnValueC -- enum return type type EnumTypeC = CI32 diff --git a/stack.yaml b/stack.yaml index 792b894..a536711 100644 --- a/stack.yaml +++ b/stack.yaml @@ -18,7 +18,7 @@ # resolver: ./custom-snapshot.yaml # resolver: https://example.com/snapshots/2023-01-01.yaml resolver: - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/26.yaml + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/36.yaml # User packages to be built. # Various formats can be used as shown in the example below. diff --git a/stack.yaml.lock b/stack.yaml.lock index e5c5c55..0ff3aa1 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -13,8 +13,8 @@ packages: hackage: c-storable-deriving-0.1.3 snapshots: - completed: - sha256: 8e7996960d864443a66eb4105338bbdd6830377b9f6f99cd5527ef73c10c01e7 - size: 719128 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/26.yaml + sha256: 6a553c5fa4f211a9b639da5e5359124a93627852dd9967bed202fdd71b25f15e + size: 720021 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/36.yaml original: - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/26.yaml + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/36.yaml