use.scm
1 (define-module (llvm use) 2 #:use-module (system foreign) 3 #:use-module (oop goops) 4 #:use-module (llvm value) 5 #:use-module (llvm types) 6 #:use-module (llvm raw)) 7 8 9 (define-public (first-use val) 10 (let ((o (LLVMGetFirstUse (unwrap-llvm-value val)))) 11 (if (null-pointer? o) 12 #f 13 (wrap-llvm-use o)))) 14 (define-public (next-use val) 15 (let ((o (LLVMGetNextUse (unwrap-llvm-use val)))) 16 (if (null-pointer? o) 17 #f 18 (wrap-llvm-use o)))) 19 20 (define-public (user use) 21 (let* ((o (LLVMGetUser (unwrap-llvm-use use))) 22 (user (wrap-llvm-user o))) 23 ;; (change-class 24 25 ;; <llvm-user>) 26 user 27 )) 28 (define-public (used-value use) 29 (let* ((use-p (unwrap-llvm-use use)) 30 (value-p (LLVMGetUsedValue use-p)) 31 (value (wrap-llvm-value value-p))) 32 value))