diff base/conditions.lisp @ 24:8d2b1662f658

base/*.lisp: move files in amuse-base to subdirectory. darcs-hash:20061215161617-aa3d6-1b63bd555b02ec02aa2db12d335e8b726e2108cd.gz
author m.pearce <m.pearce@gold.ac.uk>
date Fri, 15 Dec 2006 16:16:17 +0000
parents
children b16472d7823f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/base/conditions.lisp	Fri Dec 15 16:16:17 2006 +0000
@@ -0,0 +1,34 @@
+(cl:in-package #:amuse) 
+
+;; Some conditions we might want to be able to signal
+
+(define-condition undefined-action (condition)
+  ;; This condition would apply to an attempt to perform a meaningless
+  ;; operation on an object. This may, initially, include things that
+  ;; are a pain to implement but should really be used when it's
+  ;; genuinely unclear what an operation means in the given
+  ;; context. In such cases, a condition handler might be the best
+  ;; approach anyway.
+  ((operation :initarg :operation
+	      :reader undefined-action-operation)
+   (datatype :initarg :datatype
+	     :reader undefined-action-datatype))
+  (:report (lambda (condition stream)
+	     (format stream "The consequence of performing ~A on and object of type ~A is undefined"
+		     (undefined-action-operation condition)
+		     (undefined-action-datatype condition)))))
+
+(define-condition insufficient-information (condition)
+  ;; It should be possible to construct genuinely minimal musical
+  ;; structures. When the information in these is insufficient to
+  ;; answer a query, this condition should be raised.
+  ((operation :initarg :operation
+	      :reader insufficient-information-operation)
+   (datatype :initarg :datatype
+	     :reader insufficient-information-datatype))
+  (:report (lambda (condition stream)
+	     (format stream "The ~A object does not contain enough information to perform ~A"
+		     (insufficient-information-datatype condition)
+		     (insufficient-information-operation condition)))))
+
+