Share

The FPInterface Class Hierarchy

The FPInterface class hierarchy is such that static and mixin interfaces and interface descriptors each have their own types.

  • FPInterface The base class for all interfaces, prime client type for using interfaces
    • FPInterfaceDesc Contains the interface metadata
      • FPStaticInterface Use as the base class for defining static or core virtual interface classes.
    • FPStaticInterface Use as the base class for defining static or core virtual interface classes.
    • FPMixinInterface Use as the base class for defining object-based mixin interface classes, use FPInterfaceDesc for mixin interface descriptors
  • FPInterfaceDesc Contains the interface metadata
    • FPStaticInterface Use as the base class for defining static or core virtual interface classes.
  • FPStaticInterface Use as the base class for defining static or core virtual interface classes.
  • FPMixinInterface Use as the base class for defining object-based mixin interface classes, use FPInterfaceDesc for mixin interface descriptors

The FPInterface class continues to provide all the original method and predicate invocation functions required by an SDK-level client of the interface. A pure virtual method, GetDesc(), should be used to get the FPInterfaceDesc instance for the interface. The metadata definition and accessing methods and the metadata data members now all live in the FPInterfaceDesc.

All the original interface query methods in the API (such as Animatable::GetInterface( id), ClassDesc2::GetInterface(id), GetCOREInterface( id)) still return FPInterface pointers, so you would use GetDesc() in constructs like the following to get at an interface's metadata:

FPInterface* fpi = GetCOREInterface(FOO_INTERFACE);
TCHAR* iname = fpi->GetDesc()->internal_name.data();

The FPInterface::GetDesc() method has a default implementation in FPInterfaceDesc(and so FPStaticInterface), simply returning 'this', since instances of these classes contain the metadata). FPMixinInterface subclasses provide implementations of GetDesc(), returning their associated FPInterfaceDesc instance.

Was this information helpful?