summaryrefslogtreecommitdiff
path: root/src/tg/type-macros.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tg/type-macros.lisp')
-rw-r--r--src/tg/type-macros.lisp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/tg/type-macros.lisp b/src/tg/type-macros.lisp
index b9d649c..390781f 100644
--- a/src/tg/type-macros.lisp
+++ b/src/tg/type-macros.lisp
@@ -1,7 +1,9 @@
1;; SPDX-License-Identifier: EUPL-1.2 1;; SPDX-License-Identifier: EUPL-1.2
2;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs <perkontevs@gmail.com> 2;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs <perkontevs@gmail.com>
3(defpackage :ukkoclot/tg/type-macros 3(defpackage :ukkoclot/tg/type-macros
4 (:documentation "Macros for easy defining TG types.")
4 (:use :c2cl :iterate) 5 (:use :c2cl :iterate)
6 (:import-from :com.dieggsy.f-string :enable-f-strings)
5 (:import-from :ukkoclot/serializing :parse-value) 7 (:import-from :ukkoclot/serializing :parse-value)
6 (:import-from :ukkoclot/hash-tables :gethash-lazy) 8 (:import-from :ukkoclot/hash-tables :gethash-lazy)
7 (:import-from :ukkoclot/strings :lisp->snake-case) 9 (:import-from :ukkoclot/strings :lisp->snake-case)
@@ -10,6 +12,8 @@
10 (:export :define-tg-type)) 12 (:export :define-tg-type))
11(in-package :ukkoclot/tg/type-macros) 13(in-package :ukkoclot/tg/type-macros)
12 14
15(enable-f-strings)
16
13(eval-when (:compile-toplevel :load-toplevel :execute) 17(eval-when (:compile-toplevel :load-toplevel :execute)
14 (defstruct (field (:constructor make-field%)) name type default skip-if-default) 18 (defstruct (field (:constructor make-field%)) name type default skip-if-default)
15 19
@@ -20,7 +24,7 @@
20 &optional (default +unique+) 24 &optional (default +unique+)
21 &key (skip-if-default (not (eq default +unique+)))) 25 &key (skip-if-default (not (eq default +unique+))))
22 (let ((default (if (eq default +unique+) 26 (let ((default (if (eq default +unique+)
23 `(error ,(format nil "No value given for ~A" name)) 27 `(error ,#f"No value given for {name}")
24 default))) 28 default)))
25 (make-field% :name name 29 (make-field% :name name
26 :type type 30 :type type