Allow batch processing systems

This commit is contained in:
BirDt_ 2026-04-04 14:21:49 +08:00
parent 42df36534e
commit edd3d24160
2 changed files with 7 additions and 4 deletions

View file

@ -94,12 +94,13 @@ When entities are created or removed, the creation/deletion is added to an inter
(system-name system) (system-name system)
(system-priority system) (system-priority system)
(set-system-priority! system priority) (set-system-priority! system priority)
(system-mode system)
(system-criteria system) (system-criteria system)
(set-system-criteria! system criteria) (set-system-criteria! system criteria)
(system-process system) (system-process system)
(set-system-process! system process) (set-system-process! system process)
#+end_src #+end_src
Functions for creating systems, which are SRFI-99 records. ~name~ must be a symbol, ~priority~ must be an integer, ~criteria~ must be a list of symbols, and ~process~ must be a single argument procedure (where the argument is an entity, a list of components, to act on). Functions for creating systems, which are SRFI-99 records. ~name~ must be a symbol, ~priority~ must be an integer, ~mode~ must be either ~entity~ or ~batch~, ~criteria~ must be a list of symbols, and ~process~ must be a single argument procedure (where the single argument is expected to be either a single entity matching all given criteria when the mode is ~entity~, or a list of entities matching the given criteria when the mode is ~batch~).
#+begin_src scheme #+begin_src scheme
(add-system system) (add-system system)

View file

@ -140,20 +140,22 @@
;; The system record ;; The system record
(define-record-type <system> (define-record-type <system>
(int:make-system name priority criteria process) (int:make-system name priority mode criteria process)
system? system?
(name system-name) (name system-name)
(priority system-priority int:set-system-priority!) (priority system-priority int:set-system-priority!)
(mode system-mode)
(criteria system-criteria int:set-system-criteria!) (criteria system-criteria int:set-system-criteria!)
(process system-process int:set-system-process!)) (process system-process int:set-system-process!))
;; Type-checked system constructor wrapper ;; Type-checked system constructor wrapper
(define (make-system name priority criteria process) (define (make-system name priority mode criteria process)
(assert (symbol? name)) (assert (symbol? name))
(assert (integer? priority)) (assert (integer? priority))
(assert (member mode '(enity batch)))
(assert (every symbol? criteria)) (assert (every symbol? criteria))
(assert (procedure? process)) (assert (procedure? process))
(int:make-system name priority criteria process)) (int:make-system name priority mode criteria process))
;; Type-checked system priority mutator ;; Type-checked system priority mutator
(define (set-system-priority! system priority) (define (set-system-priority! system priority)