Date

09 July 2014

Attendees

Agenda

Alan's presentation on 3.0 arch. overview

Discuss plan for checking off class objects

Notes

Alan gave an overview presentation on the 3.0 architecture that was primarily focused on session state (usage of the Params class). Slides are available here.

A couple of unresolved questions came up regarding the current state of the 3.0 code:

1. The Params and ParamsBase classes. Not clear when to use ParamsBase and when to use Params. Box is derived from ParamsBase, Region derived from Params. Why?

(explanation by A.N.: ) ParamsBase is useful to construct classes whose state is defined by an underlying XML node, and for which all state is defined as vectors of long, string, or double.  However, if it is desired to have the class state part of the VAPOR session, then the ParamsBase should be derived from Params, or be included in a Params class.  Whenever it is desired to have a class within a Params class, that class should be derived from ParamsBase, not Params.  RegionParams is derived from Params because it makes use of features of Params that are not in ParamsBase, such as Undo/Redo, and being part of the Session state.  The Box can be used in lots of places, but will only participate in Undo/Redo or in the Session state if the Box happens to be inside a Params instance.

2. The Command Class: Does this need to be exposed to developers? When is it needed and by whom?

(explanation by A.N. ) :  Currently there is a lot of usage of the Command class in vaporgui.  However, we could move the Command methods that are needed in vaporgui into the ControlExec.

3. Params::GetParamsInstance: how is it used, is it needed, should it be exposed to developers, etc?

(explanation by A. N. ) : This method can be accessed through ControlExec::GetParams(), so is not needed in developing apps or renderers.  It is only needed by developers writing Params methods, when a method in one Params instance needs to access another Params instance.

Action Items

DescriptionWho
Review ArrowParams and parent classes (code, API, and Doxygen documentation) for next meeting.Scott, John