+
+/**
+ * Test whether a node is archivable or has archivable descendants.
+ */
+static bool
+isArchivable (const SGPropertyNode * node)
+{
+ // FIXME: it's inefficient to do this all the time
+ if (node->getAttribute(SGPropertyNode::ARCHIVE))
+ return true;
+ else {
+ int nChildren = node->nChildren();
+ for (int i = 0; i < nChildren; i++)
+ if (isArchivable(node->getChild(i)))
+ return true;
+ }
+ return false;