Overview
The dynamic-view type approach is based on a view type interpreter, which interprets textual specifications of view types to provide view services. Such services consist in creating representations, maintaining their consistency, and editing server objects from their representations.
To perform these tasks, the view type interpreter needs to access the server object model at runtime. When loading a dynamic view type, the server object model checks whether the referenced server classes —that is, classes derived from IlsObject or IlsEntity— exist, as well as their data members and member functions. This access service is provided by the server model interpreter, which is embedded in the view type interpreter, within the dynamic-view server library (mvserver).
When implementing the object model of a dynamic view server, you must annotate the model classes with a set of macros, which declare internal variable. When these variables are initialized, they declare the server classes as runtime (accessible) types to the view type interpreter. For each runtime type, macros are used to declare runtime (accessible) relations, attributes and functions. Note that these members do not need to be public.
Dynamic-view related macros can be classified in two categories:
-
Those related to classes
-
Those related to relations, entry and derived data members, and member functions.
Each category includes in turn: