Public archive for the Return to Ritherdon project.
https://www.nicolaellisandritherdon.com
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.8 KiB
40 lines
1.8 KiB
(defpackage #:app-constants
|
|||
(:use #:cl)
|
|||
(:export #:define-constant
|
|||
#:+false+
|
|||
#:+true+))
|
|||
|
|||
(in-package #:app-constants)
|
|||
|
|||
#| Switched to `DEFINE-CONSTANT' from `DEFCONSTANT'.
|
|||
================================================================================
|
|||
Because this website uses Steel Bank Common Lisp (SBCL), I need to go through a
|
|||
cycle of confirming changes to the constant values even though they have not
|
|||
changed. This behaviour is explained in the SBCL Manual 2.1.3 2021-03 (Section
|
|||
2.3.4 Defining Constants, page 5 (printed) page 13 (PDF)). The key part of the
|
|||
section is,
|
|||
'ANSI says that doing `DEFCONSTANT' of the same symbol more than once is
|
|||
undefined unless the new value is eql to the old value.'
|
|||
http://www.sbcl.org/manual/#Defining-Constants (this URL should provide the
|
|||
latest information of the subject).
|
|||
A workaround, provided by the SBCL Manual is to use the `DEFINE-CONSTANT' macro
|
|||
instead of `DEFCONST'. By doing this, I can use Quickload to reload the code
|
|||
(after a big change for example) and not have to repeat the cycle of 'updating'
|
|||
the constants when they have not changed.
|
|||
|#
|
|||
(defmacro define-constant (name value &optional doc)
|
|||
`(defconstant ,name (if (boundp ',name) (symbol-value ',name) ,value)
|
|||
,@(when doc (list doc))))
|
|||
|
|||
#| SQLite does not have Boolean value types.
|
|||
================================================================================
|
|||
At the time of writing (February 2022), the website uses SQLite as its
|
|||
database. So, I have made these constants to reduce hard-coded `1'
|
|||
and/or `0' values when `TRUE' and `NIL'/`FALSE' values are want is
|
|||
meant (in the code-base).
|
|||
|#
|
|||
(define-constant +false+ 0
|
|||
"An integer representing 'false' (for SQLite mostly).")
|
|||
(define-constant +true+ 1
|
|||
"An integer representing 'true' (for SQLite mostly.")
|