I have a boss
Class
{
kVIE_DataTagBoss,
kAttrBossReferencingBoss,
{
IID_IVIE_DATATAGTEXTATTR, kVIE_DataTagTextAttrImpl,
IID_IATTRREPORT, kVIE_DataTagReportImpl,
IID_IATTRIMPORTEXPORT, kVIE_DataTagImportExportImpl,
}
}
The kVIE_DataTagTextAttrImpl has a ReadWrite function, which is to save the tag as PMString.
And I implement a converter,as follows:
ImplementationID ConvertTag(ImplementationID tag,ClassID forClass,int32 conversionIndex,int32 inLength,IPMStream* oldData,IPMStream* newData,IterationStatus whichIteration)
{
ImplementationID outImplID = tag;
switch(conversionIndex)
{
case 0:
if(tag == kVIE_PreferencesImpl)
ConvertPreference(oldData,newData);
break;
default:
break;
}
return outImplID;
}
ShouldConvertImplementation(ImplementationID tag, ClassID context, int32 conversionIndex) const
{
IConversionProvider::ConversionStatus status = IConversionProvider::kNothingToConvert;
switch(conversionIndex)
{
case 0:
if(tag == kVIE_PreferencesImpl)
status = IConversionProvider::kMustConvert;
break;
default:
break;
}
return status;
}
ShouldConvertClass (ClassID clsID, ImplementationID context, int32 conversionIndex) const
{
IConversionProvider::ConversionStatus status = IConversionProvider::kNothingToConvert;
switch(conversionIndex)
{
case 0:
if(clsID == kVIE_DataTagBoss)
status = IConversionProvider::kMustConvert;
break;
default:
break;
}
return status;
}
ConvertClass(ClassID clsID,ImplementationID embeddedContext,int32 conversionIndex,int32 inLength,IPMStream* oldData,IPMStream* newData,IterationStatus whichIteration)
{
ClassID outClsID = clsID;
switch(conversionIndex)
{
case 0:
if(clsID == kVIE_DataTagBoss)
ConvertTagName(oldData,newData);
break;
default:
break;
}
return outClsID;
}