c64-livecoding/wip-duuqnd/user-side-compiler/reference.lisp
John Lorentzson 5d0f4b4767 Move definition of REFERENCE classes to its own file
Dereferencing is still defined in high-level.lisp, this might change
in the future since I'm sort of restructuring a little bit.
2025-05-16 21:00:14 +02:00

25 lines
787 B
Common Lisp

(in-package #:user-side-compiler)
(defclass reference () ())
(defgeneric ref-constantp (reference) (:method (reference) nil))
(defclass reference-constant (reference)
((%value :accessor ref-value :initarg :value)))
(defmethod ref-constantp ((reference reference-constant))
t)
(defmethod print-object ((object reference-constant) stream)
(print-unreadable-object (object stream :type t)
(format stream "~D" (ref-value object))))
(defmethod ref= ((a reference-constant) (b reference-constant))
(= (value a) (value b)))
(defclass reference-variable (reference)
((%index :accessor ref-index :initarg :index)))
(defmethod print-object ((object reference-variable) stream)
(print-unreadable-object (object stream :type t)
(format stream "@~D" (ref-index object))))