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