anchor.diff:              (foreign-bitfield-value 'recv-options flags)))
   
   (defmacro with-poll-items ((items-var size-var) items &body body)
  -  "Evaluate BODY in an environment where ITEMS-VAR is bound to a foreign
  -  array of poll items, and SIZE-VAR is bound to the number of polled
  -  items. Poll items are filled according to ITEMS. ITEMS is a list where each
  -  element describe a poll item. Each description is a list where the first
  -  element is a socket or file descriptor, and other elements are the events to
  -  watch for, :POLLIN, :POLLOUT or :POLLERR."
  +  "Evaluate BODY in an environment where ITEMS-VAR is bound to a foreign array
  +  of poll items, and SIZE-VAR is bound to the number of polled items. Poll
  +  items are filled according to ITEMS. ITEMS is a list where each element
  +  describe a poll item. Each description is a list where the first element is
  +  a socket or file descriptor, and other elements are the events to watch
  +  for, :POLLIN, :POLLOUT or :POLLERR."
     (let ((i 0)
           (pollitem-size (foreign-type-size 'pollitem)))
       `(with-foreign-object (,items-var 'pollitem ,(length items))
  
positive.code:               (foreign-bitfield-value 'event-types events)) 0))
  
  (defun poll-item-socket (poll-item)
    "Return the `socket' of the given `poll-item'"
    (foreign-slot-value poll-item 'pollitem 'socket))
  
  (defun poll (items nb-items timeout)
  
negative.code:   (call-ffi -1 '%msg-move destination source))
  
  (defun send (socket message &optional flags)
    "Queue MESSAGE to be sent on SOCKET."
    (call-ffi -1 '%send socket message
              (foreign-bitfield-value 'send-options flags)))
  
  