Add is_frozen flag to C_DEFINED_OBJECT to implement cloning

Description

A facility is needed so that archetype nodes can be frozen, i.e. prevented from further redefinition. The default state is unfrozen. In a specialised archetype, if a parent node is redefined, but also set to frozen, subsequent children would not be able to redefine the original node.

As an example, in the (default) unfrozen state, the following archetypes could exist:

parent
at0013

child
at0013.1
at0013.2
at0013.3

grandchild
at0013.1.1 – redef of at0013.1 - from child
at0013.0.1 – redef of at0013 from parent

This is consistent with normal Object modelling formalisms, including all the OO programming languages in use.

changing this behaviour would entail doing the following:
parent
at0013

child
at0013.1
at0013.2
at0013.3
at0013 frozen – turn off at0013 for further redefinition

grandchild
at0013.1.1 – redef of at0013.1 - from child
at0013.0.1 – redef of at0013 from parent – THIS ONE IS NOW ILLEGAL

Reporter

Thomas Beale

Raised By

Thomas Beale

Components

Affects versions

Configure