Before describing in detail the MeshViz Interface features, it is important to understand the concept of interface used to define the mesh data structures. This is a key concept in MeshViz Interface which must be understood before going any further. This concept provides a simple and convenient way to delegate the definition of the mesh to the application so that MeshViz Interface can adapt to any kind of mesh data structure.
All interface class names start with the Mi prefix
An interface is a C++ class similar to an interface in the Java™ language. However, as this is not a concept of the C++ language, we will describe below the particular properties of what we call an interface:
Some methods have a default implementation in order to avoid a tedious derivation. Two types of default implementation exist:
The concept of interface is often used with multiple inheritance. For instance if the application contains an existing class AppCell defining a cell, this class can be derived to implement the MiCell interface. In this case, the new class AppMiCell inherits both from MiCell and AppCell like in the following graph:
getNumNodes() by returning the inherited protected member numNodes of AppCell. The user application passes a pointer or a reference to this new AppMiCell class to the MeshViz extraction module.
Thanks to the particular properties described above, the multiple C++ inheritance used here does not introduce any multiple member inheritance as can happen when using classical multiple inheritance. Moreover, the new class AppMiCell usually does not need additional members.
Note for C++ experts:In some cases the inheritance of the interface must be declared as
virtual:class AppMiCell: virtual public MiCell, public AppCell{//…}The inherited interface must be first in the list of inherited
class
Note for Java experts:An interface class in MeshViz Interface
corresponds to a Java abstract class without member.