86 lines
2.3 KiB
Common Lisp
86 lines
2.3 KiB
Common Lisp
(in-package #:sync-music/libcue-ffi)
|
|
|
|
(defctype file-ptr :pointer)
|
|
(defcfun (fopen "fopen") file-ptr
|
|
(str :string)
|
|
(mode :string))
|
|
(defcfun (fclose "fclose") :int
|
|
(file file-ptr))
|
|
|
|
#+unix
|
|
(cl:progn
|
|
(defcfun (freopen "freopen") file-ptr
|
|
(str :string)
|
|
(mode :string)
|
|
(stream file-ptr))
|
|
(defcfun (dup "dup") :int
|
|
(old-fd :int)))
|
|
|
|
(define-foreign-library libcue
|
|
(:unix (:or "libcue.so.2.3.0" "libcue.so"))
|
|
(t (:default "libcue")))
|
|
|
|
(use-foreign-library libcue)
|
|
|
|
(defctype cd-ptr :pointer)
|
|
(defctype track-ptr :pointer)
|
|
(defctype cd-text-ptr :pointer)
|
|
(defctype rem-ptr :pointer)
|
|
|
|
(defcfun (cue-parse-file "cue_parse_file") cd-ptr
|
|
(file file-ptr))
|
|
(defcfun (cue-parse-string "cue_parse_string") cd-ptr
|
|
(str :string))
|
|
(defcfun (cd-delete "cd_delete") :void
|
|
(cd cd-ptr))
|
|
|
|
(defcfun (%cd-get-mode "cd_get_mode") :int
|
|
(cd cd-ptr))
|
|
(defcfun (cd-get-cd-text-file "cd_get_cdtextfile") :string
|
|
(cd cd-ptr))
|
|
(defcfun (cd-get-track-count "cd_get_ntrack") :int
|
|
(cd cd-ptr))
|
|
|
|
(defcfun (cd-get-cd-text "cd_get_cdtext") cd-text-ptr
|
|
(cd cd-ptr))
|
|
(defcfun (track-get-cd-text "track_get_cdtext") cd-text-ptr
|
|
(track track-ptr))
|
|
(defcfun (cd-text-get "cdtext_get") :string
|
|
(pti :int)
|
|
(cd-text cd-text-ptr))
|
|
|
|
(defcfun (cd-get-rem "cd_get_rem") rem-ptr
|
|
(cd cd-ptr))
|
|
(defcfun (track-get-rem "track_get_rem") rem-ptr
|
|
(track track-ptr))
|
|
(defcfun (rem-get "rem_get") :string
|
|
;; NOTE: Defined in libcue.h as unsigned int, but actually takes in enum
|
|
(rem-type :int)
|
|
(rem rem-ptr))
|
|
|
|
(defcfun (cd-get-track "cd_get_track") track-ptr
|
|
(cd cd-ptr)
|
|
(i :int))
|
|
(defcfun (track-get-file-name "track_get_filename") :string
|
|
(track track-ptr))
|
|
(defcfun (track-get-start "track_get_start") :long
|
|
(track track-ptr))
|
|
(defcfun (track-get-length "track_get_length") :long
|
|
(track track-ptr))
|
|
(defcfun (%track-get-mode "track_get_mode") :int
|
|
(track track-ptr))
|
|
(defcfun (%track-get-sub-mode "track_get_sub_mode") :int
|
|
(track track-ptr))
|
|
(defcfun (%track-flag-set-p "track_is_set_flag") :boolean
|
|
(track track-ptr)
|
|
(flag :int))
|
|
(defcfun (track-get-zero-pre "track_get_zero_pre") :long
|
|
(track track-ptr))
|
|
(defcfun (track-get-zero-post "track_get_zero_post") :long
|
|
(track track-ptr))
|
|
(defcfun (track-get-isrc "track_get_isrc") :string
|
|
(track track-ptr))
|
|
(defcfun (track-get-index "track_get_index") :long
|
|
(track track-ptr)
|
|
(i :int))
|