FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
Classes
The VISH - Fiber Bundle Interface

Fish is the Fiber Bundle VISH interface. More...

Classes

struct  Wizt::BinaryFieldOperatorObject< TheBinaryOperator, NamingOperator, PrimaryValueType, SecondaryValueType, ResultValueType >
 Template class for binary operations on Fields. More...
 
class  Wizt::BundleProviderObject
 Common base class for objects that provide Bundle objects. More...
 
class  Wizt::FieldFunctor< Operation, GridInspectorType >
 Perform operations on fields. More...
 
struct  Wizt::FieldInputCreatorBaseTrait< FieldVObject, OutputType >
 Template meta-program to compute the right base class for FieldInputCreators (objects that take Field objects as input), depending on whether they provide some output or not. More...
 
struct  Wizt::TypeInspector
 Helper class for FieldInputCreator . More...
 
struct  Wizt::FieldInputCreator< FieldVObject, TypeList, GridInspector, NumberOfInputFields, OutputType >
 Creator class for objects that require fields as input. More...
 
struct  Wizt::TypedFieldInputCreator< FieldVObject, GridInspector, OutputType >
 A FieldInputCreator that retrieves the types of possible input fields from a TypeList type as exported from the parameter. More...
 
class  Wizt::FieldObject
 Base class for selecting fields from a Grid object. More...
 
struct  Wizt::FieldObjectCreator< FieldVObject >
 VCreator class that operates on fields or bundles. More...
 
class  Wizt::FieldOperatorObject
 Base class for objects that operate on Field objects and create new fields. More...
 
struct  Wizt::Fish< Fiber::Bundle >
 Base class for Vish Objects that request a fiber bundle as input objects. More...
 
class  Wizt::VOutput< Fiber::Field >
 The output fish scale for fields, used whenever an VObject provides a field. More...
 
struct  Wizt::VValueTrait< FieldSelector >
 Template trait for using Fish field scales as input slots. More...
 
class  Wizt::FieldValueConstraint
 
struct  Wizt::TypedSlot< Fiber::Field >
 An input slot for retrieving fields on a Fiber::Grid. More...
 
struct  Wizt::Fish< Fiber::Field >
 The fish scale to access the fields of a grid object in a fiber bundle. More...
 
class  Wizt::Fish< Fiber::FragmentCluster >
 A base class for Fish objects that operate on selections of data fragments, which are sections of fields distributed over possibly different refinement levels. More...
 
struct  Wizt::VValueTrait< GridSelector >
 Template trait for using Fiber grids as input slots. More...
 
struct  Wizt::TypedSlot< Fiber::Grid >
 The input fish scale for grids. More...
 
class  Wizt::VOutput< Fiber::Grid >
 The output fish scale for grids, used whenever an VObject provides a grid. More...
 
struct  Wizt::Fish< Fiber::GridContainer >
 Abstract virtual base class (a Fish scale) for interfacing slots to Grid objects. More...
 
struct  Wizt::Fish< Fiber::Grid >
 A fish scale for dealing with dependencies on grid objects. More...
 
class  Wizt::FishObject
 
struct  Wizt::Fish< Fiber::Skeleton >
 Operating on skeletons. More...
 
struct  Wizt::Fish< Fiber::Slice >
 A Fish slot (scale) that allows to select a slice from a fiber bundle. More...
 
struct  Wizt::GridActor< GridInspector, CreativeObject >
 Creator for objects operating on certain kinds of Grid objects, providing an interface for the function Fiber::hasProperty() . More...
 
class  Wizt::GridObject
 Base class for objects that provide Grid objects extracted from Bundle objects. More...
 
struct  Wizt::GridObjectCreator< GridVObject >
 Creator for objects that may create grids; such objects may be attached to objects that provide bundles. More...
 
class  Wizt::GridProviderObject
 Common base class for objects that provide Grid objects. More...
 
class  Wizt::TypedCreationPreferencesBase
 Base class for Fiber-specific creation preferences that know how to deal with types. More...
 
class  Wizt::TypedCreationPreferences< T >
 Fiber-specific creation preferences that know how to deal with types. More...
 
class  Wizt::TypedCreationPreferences< META::LIST< T... > >
 Fiber-specific creation preferences that know how to deal with types. More...
 

Detailed Description

Fish is the Fiber Bundle VISH interface.

It provides certain types and respective VISH slots (VSlots) to retrieve, communicate and provide Fiber Bundle object properties, such as Grid and Field objects.

These Fish slots can be used directly like any VISH slot, but there are also some building blocks defined that implicitely implement these slots. These building blocks are used via the Fish<> template class and called the "Fish Scales". A Fish Scale is used as a base class from which a Vish Object is derived.

For instance, a Vish Object may request a Field as input. It may then requiest a Field as a usual TypedSlot:

struct MyObject : VObject
{
TypedSlot<Field> MyInputField;
MyObject(...)
: VObject(...)
, MyInputField(this, "inputfield")
{}
};

This mechanism will just work. Note that Fields are communicated among Vish Objects in the form of FieldSelectors, not as actual Fields. In contrast to a Fields, a FieldSelectordescribes the means on how to get a Field, but does not load or create any data by itself. To get the actual Field, one must apply the various member functions of the FieldSelector. For the purpose of connecting objects, the FieldSelector is equipped with the functionality on how to describe Fields, such as its possible types. This is used to determine if objects may be connected at all, without having to load or create any data yet.

However, alternatively to using a TypedSlot<Field>, one can use the method of Fish Scales:

struct MyObject : VObject, Fish<Field>
{
MyObject(...)
: VObject(...)
, Fish<VObject>(this)
, Fish<Field>("inputfield")
{}
};

As a Fish Scale, the newly defined object will be equipped with convenient membet functions to operate on the available data. See class Fish<Field> for further details. Note that class Fish<Field> only supports input of a single Field; so if multiple input Fields are required, the child class still needs to make use of TypedSlot<Field> members.

If a Vish object wishes to provide a Field as output, this is done the standard way:

struct MyObject : VObject
{
VOutput<Field> Result;
bool update(const VContext&Context, double precision(
{
FieldSelector FS;
// initialize FS
Result << Context << FS;
return true;
}
};
Definition Lytica.hpp:7

Remember, Fields are communicated in Fish as FieldSelectors;

Similarly to Fields, also Grids and Bundles can be communicated among Vish Objects. For Grids, communication will be done via the GridSelector, for Bundles it will be via a BundlePtr.