+WPHolder *pholder_do_root_default(WPHolder *ph)
+{
+ return ph;
+}
+
+
+WPHolder *pholder_do_root(WPHolder *ph)
+{
+ WPHolder *ret=NULL;
+ CALL_DYN_RET(ret, WPHolder*, pholder_do_root, ph, (ph));
+ return ret;
+}
+
+
+WPHolder *pholder_root(WPHolder *ph)
+{
+ return (ph->redirect!=NULL
+ ? pholder_root(ph->redirect)
+ : pholder_do_root(ph));
+}
+
+
+bool pholder_stale(WPHolder *ph)
+{
+ return (pholder_root(ph)!=ph);
+}
+