Next: The dependency hierarchy and functions, Previous: The namespace hierarchy and functions, Up: Scheme
The group hierarchy (g-hierarchy) is a structure of GOs in one page. If a GO is group, then its members are its g-children.
The G-hierarchy is an ordering over objects of the go kind in one page. This ordering can be also viewed as a rooted tree (where nodes are objects of the go kind and the root the of tree is the maximum of all nodes in that tree), so it is a join-semi-lattice.
These functions do the comparison of g-objects in the g-hierarchy. The root is the maximum.
These functions return the appropriate g-neighbours of a given object. Being a sibling is considered to be a reflexive relation.
 (g-parent x1)
go ->
 go + false
   
 (g-first-child x1)
go ->
 go + false
   
 (g-last-child x1)
go ->
 go + false
   
 (g-next-sib go)
go ->
 go + false
   
 (g-prev-sib go)
go ->
 go + false
 (g-leaf? x)
any ->
 boolean 
Returns whether the object x is a g-leaf. A g-leaf is member of
the g-hierarchy which cannot have children (not just a g-object without
g-children), i.e. a GO which is not of the group type.
   
 (g-children x1)
go ->
 list 
Returns the list of all g-children of x1. In unspecified order.
   
 (g-ancestors x1)
go ->
 list 
Returns the list of all g-ancestors of x1 (i.e. objects that are
g-greater than x1). In descending g-order.
   
 (g-descendants x1)
go ->
 list 
Returns the list of all g-descendants of x1 (i.e. objects that are
g-lesser than x1). It is ordered like the pre-order deep-first tree
walk, so comparable objects are in descending g-order.
   
 (g-leaves x1)
go ->
 list 
Returns the list of all g-leaves that are g-lesser than x1. In
unspecified order.
   
 (g-set-parent! go grp)
go group ->
 unspecified 
Sets grp as the new g-parent of go. It must be called in
an appropriate transaction.
   
Because g-order and z-order is not completely independent, setting the g-parent also affects the z-order. This function tries to minimize the change. The next four functions allow a better control of z-change during the setting of a g-parent:
 (g-set-parent/before go grp g2)
go group go ->
 unspecified 
Like g-set-parent!, but go will be just
before g2 in the z-order (g2 must be also a child of grp).
   
 (g-set-parent/after go grp g2)
go group go ->
 unspecified 
Like g-set-parent!, but go will be just after
g2 in the z-order (g2 must be also a child of grp).
   
 (g-set-parent/top go grp)
go group go ->
 unspecified 
Like g-set-parent!, but go will be the minimal possible in the z-order.
   
 (g-set-parent/bottom go grp)
go group go ->
 unspecified 
Like g-set-parent!, but go will be the maximal possible in the z-order.