这个宏的定义如下
vtkInformationKeyMacro(CLASS,NAME,type) \
static vtkInformation##type##Key * CLASS##_##NAME = \
new vtkInformation##type##Key(#NAME,#CLASS); \
vtkInformation##type##Key* CLASS::NAME() \
{ \
return CLASS##_##NAME; \
}
这个宏把vtkExecutive和vtkInformationExecutiveKey关联起来,举例:
vtkInformationKeyMacro(vtkExecutive, PRODUCER, ExecutivePort)展开后
static vtkInformationExecutivePortKey* vtkExecutive_PRODUCER = new vtkInformationExecutivePortKey(PRODUCER,vtkExecutive);
vtkInformationExecutivePortKey* vtkExecutive::PRODUCER()
{
return vtkExecutive_PRODUCER;
}
vtkInformmationKey是用于访问vtkInformation表示的映射的所有key 的超类。vtkInformation::Set() and vtkInformation::Get()方法可以被information(信息)关键字访问,键是指向vtkInformationKey的子类的实列的指针,子类的类型决定了所选set/get的重载。这颗确保存储在与给定密钥对应的vtkInformation实例中的值类型与该密钥所需类型匹配。