Welcome to the CHICKEN Scheme pasting service

the function pasted by kevinfish on Fri Mar 3 09:22:30 2017

(define
  (cpuid name code . types)
  (apply
   (cut define <> <> . <>)     ; this defines 
         (#~~ (#~QueryInterface <> )  <...>))
         name code types))

(cpuid  ci #x21452459  return: pointer:)

Example macro pasted by sjamaan on Fri Mar 3 09:25:39 2017

(define-syntax cpuid
  (syntax-rules ()
    ((_ ?name ?code ?type0 ...)
     (define (?name ?code ?type0 ...)
       (#~~ (#~QueryInterface ?name) ?type0 ...)))))

(cpuid  ci #x21452459  return: pointer:)

types are passed to the FFI but not to the defined proceure pasted by sjamaan on Fri Mar 3 10:15:24 2017

(define-syntax cpuid
  (syntax-rules ()
    ((_ ?name ?code ?type0 ...)
     (define (?name ?code)
       (#~~ (#~QueryInterface ?name) ?type0 ...)))))

(cpuid  ci #x21452459  return: pointer:)

Moving code to call-time instead of define-time added by sjamaan on Fri Mar 3 10:31:08 2017

(define-syntax cpuid
  (syntax-rules ()
    ((_ ?name ?type0 ...)
     (define (?name code)
       (#~~ (#~QueryInterface code) ?type0 ...)))))

(cpuid  ci return: pointer:)

;; Usage:
(ci #x21452459)

Your annotation:

Enter a new annotation:

Your nick:
The title of your paste:
Your paste (mandatory) :
Which module provides `get-environment-variable'?
Visually impaired? Let me spell it for you (wav file) download WAV