environ:create, with fixes / improvemenst on csys:scope

This commit is contained in:
Helmut Merz 2026-07-19 21:16:16 +02:00
parent baf46a36d4
commit 85c23f10e0
3 changed files with 15 additions and 10 deletions

View file

@ -29,16 +29,18 @@
(syns :accessor syns :initform nil) (syns :accessor syns :initform nil)
(environ :reader environ :initarg :environ))) (environ :reader environ :initarg :environ)))
(defun scope (&optional (program (make-prog #'std-proc)) &rest args) (defun scope (program &rest args &key (cls 'scope) &allow-other-keys)
(let ((sc (apply #'make-instance 'scope :program program args))) (remf args :cls)
(set-proc sc))) (apply #'make-instance cls :program program args))
(defmethod initialize-instance :after ((sc scope) &key &allow-other-keys)
(set-proc sc))
(defun reset-scope (scope &rest args) (defun reset-scope (scope &rest args)
(let ((sc (apply #'scope (or (getf args :program) (program scope)) (apply #'scope (or (getf args :program) (program scope))
:categ (getf args :categ (categ scope)) :categ (getf args :categ (categ scope))
:environ (getf args :environ (environ scope)) :environ (getf args :environ (environ scope))
args))) args))
(set-proc sc)))
(defun set-proc (scope) (defun set-proc (scope)
(setf (proc scope) (funcall (program scope) scope)) (setf (proc scope) (funcall (program scope) scope))

View file

@ -7,7 +7,8 @@
(:index :scopes/util/index) (:index :scopes/util/index)
(:message :scopes/core/message) (:message :scopes/core/message)
(:shape :scopes/shape)) (:shape :scopes/shape))
(:export #:actions (:export #:create
#:actions
#:forward)) #:forward))
(in-package :scopes/csys/environ) (in-package :scopes/csys/environ)
@ -15,6 +16,10 @@
(defclass scope (csys:scope) (defclass scope (csys:scope)
((cells :reader cells :initform (make-hash-table :test #'equal)))) ((cells :reader cells :initform (make-hash-table :test #'equal))))
(defun create (proc app)
(let ((prog (csys:make-prog proc)))
(csys:neuron (csys:scope prog :cls 'scope :environ app))))
;;;; action handlers, public callables ;;;; action handlers, public callables
(defun actions () (defun actions ()

View file

@ -57,9 +57,7 @@
(core:setup-services) (core:setup-services)
(setf (tc:receiver t:*test-suite*) (core:find-service :test-receiver)) (setf (tc:receiver t:*test-suite*) (core:find-service :test-receiver))
;(csys:add-action '(:csys :sensor) #'csys:create-sensor) ;(csys:add-action '(:csys :sensor) #'csys:create-sensor)
(let* ((prog (csys:make-prog #'proc-env)) (let* ((env (environ:create #'proc-env (tc:receiver t:*test-suite*)))
(env (csys:neuron (csys:scope prog
:environ (tc:receiver t:*test-suite*))))
(msg (message:create '(:csys :create) (msg (message:create '(:csys :create)
:data `(:addr (:csys :c00 "0-0") :data `(:addr (:csys :c00 "0-0")
:categ :c00 :categ :c00