X-Git-Url: https://git.jsancho.org/?p=guile-irrlicht.git;a=blobdiff_plain;f=irrlicht%2Fio.scm;h=1e94c5d23fd774668b28156d189051a186018d48;hp=13288d58ea0049aa4dcf02a82248c850252c8874;hb=09e9ed196aadab0f77e831c134fce8bdb58b772b;hpb=eaa186435f0c641c53841d8d15581525bd542249 diff --git a/irrlicht/io.scm b/irrlicht/io.scm index 13288d5..1e94c5d 100644 --- a/irrlicht/io.scm +++ b/irrlicht/io.scm @@ -1,5 +1,5 @@ ;;; guile-irrlicht --- FFI bindings for Irrlicht Engine -;;; Copyright (C) 2019 Javier Sancho +;;; Copyright (C) 2020 Javier Sancho ;;; ;;; This file is part of guile-irrlicht. ;;; @@ -19,31 +19,39 @@ (define-module (irrlicht io) - #:use-module (ice-9 match) - #:use-module (system foreign) - #:use-module ((irrlicht bindings io) #:prefix ffi-io:) - #:export (add-file-archive!)) - -(define* (add-file-archive! file-system filename - #:key - (ignore-case #t) - (ignore-paths #t) - (archive-type 'unknown) - (password "") - (ret-archive %null-pointer)) - (let ((type (match archive-type - ('zip ffi-io:EFAT_ZIP) - ('gzip ffi-io:EFAT_GZIP) - ('folder ffi-io:EFAT_FOLDER) - ('pak ffi-io:EFAT_PAK) - ('npk ffi-io:EFAT_NPK) - ('tar ffi-io:EFAT_TAR) - ('wad ffi-io:EFAT_WAD) - ('unknown ffi-io:EFAT_UNKNOWN)))) - (ffi-io:add-file-archive file-system - (string->pointer filename) - (if ignore-case 1 0) - (if ignore-paths 1 0) - type - (string->pointer password) - ret-archive))) + #:use-module (oop goops) + #:use-module (ice-9 optargs) + #:use-module (irrlicht foreign) + #:use-module (irrlicht irr)) + + +;; IAttributeExchangingObject +(define-class () + (irr-class #:init-value "IAttributeExchangingObject" #:getter irr-class)) + +(export ) + + +;;IFileArchive +(define-class () + (irr-class #:init-value "IFileArchive" #:getter irr-class)) + +(export ) + + +;;IFileSystem +(define-class () + (irr-class #:init-value "IFileSystem" #:getter irr-class)) + +(define-method (add-file-archive! (file-system ) filename . rest) + (let-keywords rest #f + ((ignore-case #t) + (ignore-paths #t) + (archive-type 'unknown) + (password "") + (ret-archive (make ))) + (let ((addFileArchive (get-irrlicht-proc "addFileArchive" file-system))) + (addFileArchive + file-system filename ignore-case ignore-paths archive-type password ret-archive)))) + +(export add-file-archive!)