GeomConverter/src/org/lcsim/detector
diff -u -r1.23 -r1.24
--- DetectorElement.java 9 May 2007 00:59:57 -0000 1.23
+++ DetectorElement.java 9 May 2007 20:42:20 -0000 1.24
@@ -13,7 +13,7 @@
* Implementation of {@link IDetectorElement}.
*
* @author Jeremy McCormick
- * @version $Id: DetectorElement.java,v 1.23 2007/05/09 00:59:57 jeremy Exp $
+ * @version $Id: DetectorElement.java,v 1.24 2007/05/09 20:42:20 jeremy Exp $
*/
public class DetectorElement
extends Named
@@ -402,6 +402,12 @@
IDetectorElement detectorElement,
IDetectorElementVisitor visitor)
{
+ // Return if done.
+ if ( visitor.isDone() )
+ {
+ return;
+ }
+
// Visit this node.
visitor.visit(detectorElement);
@@ -418,7 +424,13 @@
public static void traversePostOrder(
IDetectorElement detectorElement,
IDetectorElementVisitor visitor)
- {
+ {
+ // Return if done.
+ if ( visitor.isDone() )
+ {
+ return;
+ }
+
// Recursively traverse the daughters.
if ( detectorElement.hasChildren() )
{
@@ -465,6 +477,11 @@
{
return results;
}
+
+ public boolean isDone()
+ {
+ return false;
+ }
}
public <T extends IDetectorElement> List<T> findAncestors(Class<T> klass)
GeomConverter/src/org/lcsim/detector
diff -u -r1.1 -r1.2
--- IVisitor.java 7 Mar 2007 00:43:32 -0000 1.1
+++ IVisitor.java 9 May 2007 20:42:20 -0000 1.2
@@ -2,5 +2,17 @@
public interface IVisitor<T>
{
- public abstract void visit(T object);
+ /**
+ * Perform some action on a node.
+ *
+ * @param object The object to be visited.
+ */
+ public void visit(T object);
+
+ /**
+ * True if the traversal should stop.
+ *
+ * @return True if the traversal should stop.
+ */
+ public boolean isDone();
}
GeomConverter/src/org/lcsim/geometry/compact
diff -u -r1.23 -r1.24
--- Detector.java 9 May 2007 00:59:58 -0000 1.23
+++ Detector.java 9 May 2007 20:42:20 -0000 1.24
@@ -45,7 +45,10 @@
*/
protected Detector(Element element)
{
- name = element.getChild("info").getAttributeValue("name");
+ if ( element != null )
+ {
+ name = element.getChild("info").getAttributeValue("name");
+ }
materialMgr = XMLMaterialManager.create(XMLMaterialManager.materials() );
}