Newer
Older
Import / research / ui / toolkit / docs / TERMINOLOGY.md

LuteFisk

LUTE - Light-weight UI Toolkit Engine Lutefisk - A dish served in Norway

Terminology

Value

  • a single stored basic type value, such as an int, float, unsigned, bool, char, string etc
  • not a complex type where you would need a struct or similar to hold multiple values
  • string is a value for this definition, but obviously it could be argued it is a variable array of chars

Object

  • a complex type which is composed of multiple values and or objects
  • Objects have reflection and introspection

Mix-in

  • A mix-in is adding in functionality to something outside of it
  • In C++ a way to achieve this is using CRTP (Curiously Recurring Template Pattern)
  • It is said to be static polymorphism - no virtual function call overhead, resolved at compile time

Inheritance

Polymorphism

Attribute

  • similar to a property - not sure how to define how it is different
  • perhaps attributes are named properties and how to access the property
  • HTML DOM contains attributes, but JavaScript calls those attributes properties, so it is confused
  • in C# it is meta info about something
  • attributes are attributed to something - so an attribute is assigned to an object
  • whereas a property exists without being attributed - in this way a property is intrinsic to something
  • may want to consider swapping in the code Attributes and Properties
    • could then make AbstractProperty references that are assigned to call those attributes

Property

  • a property has a getter and setter
  • a property has a signal that can notify when it has changed
  • a property is available via reflection and introspection
  • TODO: read-only properties. A base property class with no signal. Try to reduce the size overhead of a property

Signal

  • a signal is like an event that can be raised and listened to to respond to when raised#
  • multiple listeners can connect to a signal

Slot

  • a slot is an end-point to connect a signal to and is called when a signal is raised

Variant

  • a polymorphic value - it can morph in between value types
  • example is a boolean, as a string it converts to "true" or "false", as an int it converts to 1 or 0 etc

Reflection

  • reflection allows looking from the outside in
  • without tight bindings, using reflection it is possible to lookup and find object types, create objects
  • find properties and get or set them etc

Introspection

  • introspection allows looking from inside inwardly
  • it allows an object to find out about itself
  • a object can look up what type it is and what it inherits from which together with reflection allows finding
  • its properties.