/ llvm / use.scm
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))