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.
39 lines
1.8 KiB
39 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.")
|
|
|