diff base/charm/constructors.lisp @ 255:f1e6d10fdb11

pitched and unpitched Charm event constituent classes
author Jamie Forth <j.forth@gold.ac.uk>
date Thu, 24 Feb 2011 11:23:19 +0000
parents b5ffec94ae6d
children
line wrap: on
line diff
--- a/base/charm/constructors.lisp	Thu Feb 24 11:23:18 2011 +0000
+++ b/base/charm/constructors.lisp	Thu Feb 24 11:23:19 2011 +0000
@@ -42,18 +42,24 @@
 					      owner version
 					      creation-timestamp
 					      deletion-timestamp)
-  (make-instance 'standard-charm-event-constituent
-		 :identifier constituent-identifier
-		 :parent parent
-		 :time start		; FIXME: naming conventions?
-		 :interval duration
-		 :extrinsic-properties extrinsic-properties
-		 :intrinsic-properties intrinsic-properties
-		 :%data particles
-		 :owner owner
-		 :version version
-		 :creation-timestamp creation-timestamp
-		 :deletion-timestamp deletion-timestamp))
+  (let ((constituent-class (cond
+			     ((every #'amuse-utils:pitchedp particles)
+			      'standard-charm-pitched-event-constituent)
+			     ((every #'amuse-utils:unpitchedp particles)
+			      'standard-charm-unpitched-event-constituent)
+			     (t 'standard-charm-event-constituent))))
+    (make-instance constituent-class
+		   :identifier constituent-identifier
+		   :parent parent
+		   :time start		; FIXME: naming conventions?
+		   :interval duration
+		   :extrinsic-properties extrinsic-properties
+		   :intrinsic-properties intrinsic-properties
+		   :%data particles
+		   :owner owner
+		   :version version
+		   :creation-timestamp creation-timestamp
+		   :deletion-timestamp deletion-timestamp)))
 
 (defun composition->charm-constituent (composition
 				       extrinsic-properties
@@ -109,7 +115,8 @@
 
 (defun segment-at-bar (composition)
   "Returns a list of bar-constituents."
-  (loop with current-bar = (current-bar (elt composition 0) composition) and current-events
+  (loop with current-bar = (current-bar (elt composition 0) composition)
+     and current-events
      for event in (%list-slot-sequence-data composition)
      if (time= current-bar (current-bar event composition))
      do (push event current-events)