;;;; cl-scopes/core/message (defpackage :scopes/core/message (:use :common-lisp) (:local-nicknames (:shape :scopes/shape)) (:export #:message-meta #:message #:create #:head #:data #:sender)) (in-package :scopes/core/message) ;;;; message (defun message-meta () (make-instance 'shape:record-meta :head-fields '(:domain :action :class :item))) (defclass message (shape:record) ((shape:meta :initform (message-meta) :allocation :class) (sender :reader sender :initarg :sender :initform nil))) (defun create (head &key data sender) (shape:create 'message :head head :data data :sender sender)) (defmethod print-object ((msg message) stream) (shape:print-slots msg stream 'shape:head 'sender 'shape:data))