;; 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+ "1.0" :test #'equalp :documentation "String constant indicating the ERIS standard revision supported by this implementation.") (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)))))