view tests/tooltalk/simple.el @ 5067:7d7ae8db0341

add functions `stable-union' and `stable-intersection' to do stable set operations -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-02-22 Ben Wing <ben@xemacs.org> * cl-seq.el: * cl-seq.el (stable-union): New. * cl-seq.el (stable-intersection): New. New functions to do stable set operations, i.e. preserve the order of the elements in the argument lists, and prefer LIST1 over LIST2 when ordering the combined result. The result looks as much like LIST1 as possible, followed (in the case of `stable-union') by any necessary elements from LIST2, in order. This is contrary to `union' and `intersection', which are not required to be order- preserving and are not -- they prefer LIST2 and output results in backwards order.
author Ben Wing <ben@xemacs.org>
date Mon, 22 Feb 2010 21:23:02 -0600
parents 131b0175ea99
children 9fc91aa3a927
line wrap: on
line source

;;; Example of Sending Messages

(defun tooltalk-random-query-handler (msg pat)
  (let ((state (get-tooltalk-message-attribute msg 'state)))
    (cond
      ((eq state 'TT_HANDLED)
       (message (get-tooltalk-message-attribute msg arg_val 0)))
      ((memq state '(TT_FAILED TT_REJECTED))
       (message "Random query turns up nothing")))))

(setq random-query-message
  '(   class TT_REQUEST
       scope TT_SESSION
     address TT_PROCEDURE
	  op "random-query"
        args ((TT_INOUT "?" "string"))
    callback tooltalk-random-query-handler))

(let ((m (make-tooltalk-message random-query-message)))
      (send-tooltalk-message m))

;;; Example of Receiving Messaegs

(defun tooltalk-display-string-handler (msg pat)
  (return-tooltalk-message msg 'reply)
  (describe-tooltalk-message msg)
  (message (get-tooltalk-message-attribute msg 'arg_val 0)))

(setq display-string-pattern
  '(category TT_HANDLE
       scope TT_SESSION
	  op "emacs-eval"
	args ((TT_IN "filename" "string"))
    callback tooltalk-display-string-handler))

(let ((p (make-tooltalk-pattern display-string-pattern)))
  (register-tooltalk-pattern p))