ImplAAFTypeDefSet::GetElements() only supports sets
of referenced objects (i.e. ImplAAFRefSetValue).
This is a problem now that arbitrary set types are
supported by OMSetProperty<>.
For example, in 1.1, ImplAAFDescriptiveMarker has a
property that is a set of integers
(OMSetProperty<aafUInt32>), and the header has new
properties that are sets of uids
(OMSetProperty<aafUID_t>).
This problem prevents dump programs from generically
traversing the values contained in these new sets.
To generate a file that contains such a set
run: "ComModAAF.exe AAFCommentMarkerTest" in the
rosebud branch.
The attached axDump output illustrates the error.
The offending fragment of code is as follows:
ImplAAFTypeDefSet::GetElements (
ImplAAFPropertyValue * pSetPropertyValue,
ImplEnumAAFPropertyValues ** ppEnum)
{
...
// Get the elements if the set property value is a
object reference set.
ImplAAFRefSetValue* pRefSet =
dynamic_cast<ImplAAFRefSetValue*>
(pSetPropertyValue);
if (NULL != pRefSet)
{
return pRefSet->GetElements(ppEnum);
}
else
{
return AAFRESULT_ELEMENT_NOT_OBJECT;
}
}
Object dump of the file created by "ComModAAF.exe AAFCommentMarkerTest".
Logged In: YES
user_id=239292
I am not certain what the solution is, but I wonder if it has
something to do with the following fragment of code in
ImplAAFRefContainerValue.h:
class ImplAAFRefContainerValue : public
ImplAAFPropertyValue // TBD:
ImplAAFRefContainerValue implements support for sets of
contained objects and is implicated in the current
implementation of ImplAAFTypeDefSet::GetElements().
What does the "TBD" mean here? What is to be determined?
Perhaps ImplAAFRefContainerValue should be derived from a
specialized container type that is currently unimplemented,
and the missing specialized value type might have generic
support for other contained types?
The other possibility is that the TBD has nothing to do with
the problem and the problem lies entirely with the
implementation of ImplAAFTypeDefSet::GetElements(). I'm
not certain.