#84 ImplAAFTypeDefSet::GetElements() only supports object sets

open
nobody
None
5
2004-08-19
2004-08-19
Jim Trainor
No

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;
}
}

Discussion

  • Jim Trainor

    Jim Trainor - 2004-08-19

    Object dump of the file created by "ComModAAF.exe AAFCommentMarkerTest".

     
  • Jim Trainor

    Jim Trainor - 2004-08-19

    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.