-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathconditions.lisp
31 lines (24 loc) · 2.59 KB
/
conditions.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
(in-package :pq)
(define-condition physical-quantities-error (simple-error) () (:documentation "Generic error for the physical quantities library."))
(export '(physical-quantities-error))
(define-condition unit-definition-error (physical-quantities-error) () (:documentation "Generic error for unit/prefix definitions."))
(define-condition unit-definition-syntax-error (unit-definition-error) () (:documentation "Syntax error in the definition of a unit/prefix"))
(define-condition unit-definition-semantic-error (unit-definition-error) () (:documentation "Semantic error in the definition of a unit/prefix"))
(define-condition unit-definition-conflict-error (unit-definition-error) () (:documentation "Name conflict for the definition of a unit/prefix"))
(export '(unit-definition-error unit-definition-syntax-error unit-definition-semantic-error unit-definition-conflict-error))
(define-condition operation-undefined-error (physical-quantities-error) () (:documentation "Error for situations in which an operation is undefined"))
(export 'operation-undefined-error)
(define-condition invalid-unit-error (physical-quantities-error) () (:documentation "Generic unit error"))
(define-condition invalid-unit-operation-error (invalid-unit-error) () (:documentation "Error for situations in which the unit is invalid in a given operation"))
(define-condition invalid-unit-conversion-error (invalid-unit-error) () (:documentation "Error when converting between incompatible units"))
(define-condition invalid-unit-reference-error (invalid-unit-error) () (:documentation "Unit lookup error"))
(export '(invalid-unit-error invalid-unit-operation-error invalid-unit-conversion-error invalid-unit-reference-error))
(define-condition error-propagation-error (physical-quantities-error) () (:documentation "Error for situations in which the propagation of uncertainty is undefined"))
(export 'error-propagation-error)
(define-condition quantity-definition-error (physical-quantities-error) () (:documentation "Generic error for quantity definitions."))
(define-condition quantity-definition-syntax-error (quantity-definition-error) () (:documentation "Syntax error in the definition of a quantity/unit"))
(define-condition quantity-definition-semantic-error (quantity-definition-error) () (:documentation "Semantic error in the definition of a quantity/unit"))
(export 'unit-syntax-error)
(defmacro f-error (type (&rest initargs) control &rest args)
"Like (error ...), but allows the condition type to be specified (which is required to inherit from simple-condition)."
`(error ',type ,@initargs :format-control ,control :format-arguments (list ,@args)))