Topics

Note Selector

LDefinition Class

Friday, August 23, 2024

There should be an LDefinition class for representing loaded definitions. A top-level definition should be associated with a top-level definable widget, applying the data recursively.

Inheritance

Definitions needs to support inheritance internally. Instead of copying inherited values, a benefitting definition should store pointers to the values of its base. These values are not expected to change at runtime (unless they are being modified by a software developer in Nebula, and those changes won't appear until restarting the owning software), but they can change quite a bit during initialization as parents and other inheritances are resolved. Storing pointers to inherited values helps ensure that other initializations get inherited as well.

Consider making it so that the LDefinition::attributes() and LDefinition::children() functions propagate up the object hierarchy to return all inherited attributes and children.

LDefinition objects should maintain a pointer to the base definition when there is one.

Root Definition

  • What definitions should go into the root definition?
    • Should the top-level definitions from all files