From 56d3ca4cf14ac1b2bac9c866daa98cdb803915fa Mon Sep 17 00:00:00 2001 From: Piotr Szarmanski Date: Wed, 21 Sep 2022 22:50:14 +0200 Subject: Initial commit. --- src/conditions.lisp | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/conditions.lisp (limited to 'src/conditions.lisp') diff --git a/src/conditions.lisp b/src/conditions.lisp new file mode 100644 index 0000000..5b57fbf --- /dev/null +++ b/src/conditions.lisp @@ -0,0 +1,53 @@ +;; This file is part of eris-cl. +;; Copyright (C) 2022 Piotr SzarmaƄski + +;; eris-cl is free software: you can redistribute it and/or modify it under the +;; terms of the GNU Lesser General Public License as published by the Free +;; Software Foundation, either version 3 of the License, or (at your option) any +;; later versqion. + +;; eris-cl is distributed in the hope that it will be useful, but WITHOUT ANY +;; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +;; A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License along with +;; eris-cl. If not, see . + +(in-package :eris) + +(define-constant +eris-revision+ "0.3" :test #'equalp) + +(define-condition eris-condition () ()) + +(define-condition missing-block (eris-condition error) + ((reference :initarg :reference :reader reference)) + (:report (lambda (condition stream) + (format stream "Missing block: ~a" (reference condition))))) + +(define-condition padding-error (eris-condition error) + () + (:report "Corrupted padding.")) + +(define-condition version-mismatch (eris-condition error) + () + (:report (lambda (condition stream) + (declare (ignore condition)) + (format stream "Provided object has been encoded with a different version of the ERIS standard than ~a." +eris-revision+)))) + +(define-condition eof (eris-condition error) + ((eof :initarg :eof :reader eof) + (pos :initarg :position :reader pos)) + (:report (lambda (condition stream) + (with-slots (eof pos) condition + (format stream "End of file (~d) reached at ~d." eof pos))))) + +(define-condition hash-mismatch (eris-condition error) + ((reference :initarg :reference :reader reference) + (hash :initarg :hash :reader hash)) + (:report (lambda (condition stream) + (format stream "The hash ~a does not match the reference ~a." (hash condition) (reference condition))))) + +(define-condition invalid-internal-block (eris-condition error) + ((reference :initarg :reference :reader reference)) + (:report (lambda (condition stream) + (format stream "The internal block ~a is invalid." (reference condition))))) -- cgit v1.2.3