company logo

Property handle hierarchies

Property handles can be opened in a hierarchical order as shown below. The top property handle must be opened with a Database or ObjectSpace handle as parent. Subordinated property handles are opened with a property handle as parent. Each property handle can be the parent of any number of subordinated property handles.

Considering a Person object in the sample database, you will find the children property. Since the children property refers to a collection of Person s, again, persons in the children collection may have got children again.

Property handles opened in a hierarchical order, as shown below, will always reflect exactly one access path through the instance tree defined by the reference properties in the hierarchy, i.e. selecting a person in the top person property handle creates the set of children for the subordinated children property handle. Changing the selected instance in the top property handle person , automatically changes the collection represented in the subordinated children property handle to the set of children for the newly selected person on top.

Selecting a person in the children property handle will immediately provide a set of grandChildren in the lowest property handle, i.e. the children of the child selected from the set of children for the top most person.

void HandleHierarchy ( ObjectSpace &os ) {

  Property     person(os,"Person::Persons",Read);

  Property     children(person,"children");

  Property     grandChildren(children,"children");

  Value        name(grandChildren,"name");

  Value        firstName(grandChildren,"first_name");

  

  while ( person.next(true) )

    while ( children.next(true) )

      while ( grandChildren.next(true) )

        printf("Grand child: %s %s",name.toString(),firstName.toString());

}