Пример #1
0
bool EPLocatorVisitor::PreOrderVisit( EPTypedObjNode<IAAFSourceMob, EPImportSource>& node )
{
    
    AxSourceMob axSrcMob( node.GetAAFObjectOfType() );
    AxImportDescriptor
      axImpDes( AxQueryInterface<IAAFEssenceDescriptor, IAAFImportDescriptor>( axSrcMob.GetEssenceDescriptor() ) );

    try
    {
        AxLocatorIter locIter( axImpDes.GetLocators() );
        IAAFSmartPointer2<IAAFLocator> spLocator;
            
        //REQ_EP_075
        bool locatorFound = false;
        while ( locIter.NextOne( spLocator ) )
        {
            //If this is a Network Locator
            AxLocator axLocator( spLocator );
            IAAFNetworkLocatorSP spNetLoc;
            if ( AxIsA( axLocator, spNetLoc ) )
            {
                AxNetworkLocator axNetLoc( spNetLoc );
                if ( CheckNetworkLocator( axNetLoc ) )
                {
                    locatorFound = true;
                    break;
                }
            }
        }
            
        if ( !locatorFound )
        {
          wstring explain = L"EssenceDescriptor::Locator property of " +
                            this->GetMobName( axSrcMob, L"Import Source" ) +
                            L" does not include any NetworkLocators that complies "
                            L"with the constraints set out in Section 6.9 of the AAF Edit Protocol.";

          _spTestResult->AddSingleResult( L"REQ_EP_075", 
                                          explain,
                                          TestResult::FAIL,
					  node );
          return false;
        }
    }
    catch ( const AxExHResult& ex )
    {
        if ( ex.getHResult() != AAFRESULT_PROP_NOT_PRESENT )
        {
            throw ex;
        }

        wstring explain = this->GetMobName( axSrcMob, EPImportSource::GetName() ) + 
                          L" does not have an EssenceDescriptor::Locator property.";

        _spTestResult->AddSingleResult( L"REQ_EP_075", 
                                        explain,
                                        TestResult::FAIL,
					node );
        return false;
    }

    return true;
}
Пример #2
0
void AliasMap::output(OA::IRHandlesIRInterface& ir)
{
    sOutBuild->objStart("AliasMap");

    sOutBuild->fieldStart("mProcHandle");
    sOutBuild->outputIRHandle(mProcHandle, ir);
    sOutBuild->fieldEnd("mProcHandle");
    sOutBuild->field("mNumSets", OA::int2string(mNumSets));
    sOutBuild->field("mStartId", OA::int2string(mStartId));
    sOutBuild->mapStart("mIdToLocSetMap", "int", "OA::OA_ptr<LocSet> ");
    std::map<int, OA::OA_ptr<LocSet> >::iterator reg_mIdToLocSetMap_iterator;
    for(reg_mIdToLocSetMap_iterator = mIdToLocSetMap.begin();
        reg_mIdToLocSetMap_iterator != mIdToLocSetMap.end();
        reg_mIdToLocSetMap_iterator++)
    {
        const int &first = reg_mIdToLocSetMap_iterator->first;
        OA::OA_ptr<LocSet>  &second = reg_mIdToLocSetMap_iterator->second;
        if ( second.ptrEqual(0) ) continue;
        sOutBuild->mapEntryStart();
        sOutBuild->mapKey(OA::int2string(first));
        sOutBuild->mapValueStart();

        sOutBuild->listStart();
        LocSetIterator locIter(second);
        for (; locIter.isValid(); ++locIter) {
            OA_ptr<Location> loc = locIter.current();
            sOutBuild->listItemStart();
            loc->output(ir);
            sOutBuild->listItemEnd();
        }
        sOutBuild->listEnd();

        sOutBuild->mapValueEnd();
        sOutBuild->mapEntryEnd();
    }
    sOutBuild->mapEnd("mIdToLocSetMap");

    sOutBuild->mapStart("mIdToSetStatusMap", "int", "AliasResultType");
    std::map<int, AliasResultType>::iterator reg_mIdToSetStatusMap_iterator;
    for(reg_mIdToSetStatusMap_iterator = mIdToSetStatusMap.begin();
        reg_mIdToSetStatusMap_iterator != mIdToSetStatusMap.end();
        reg_mIdToSetStatusMap_iterator++)
    {
        const int &first = reg_mIdToSetStatusMap_iterator->first;
        AliasResultType &second = reg_mIdToSetStatusMap_iterator->second;
        sOutBuild->mapEntryStart();
        sOutBuild->mapKey(OA::int2string(first));
        sOutBuild->mapValueStart();
        sOutBuild->mapValue(OA::int2string(second));
        sOutBuild->mapValueEnd();
        sOutBuild->mapEntryEnd();
    }
    sOutBuild->mapEnd("mIdToSetStatusMap");

    sOutBuild->mapStart("mIdToMemRefSetMap", "int", "MemRefSet");
    std::map<int, MemRefSet>::iterator reg_mIdToMemRefSetMap_iterator;
    for(reg_mIdToMemRefSetMap_iterator = mIdToMemRefSetMap.begin();
        reg_mIdToMemRefSetMap_iterator != mIdToMemRefSetMap.end();
        reg_mIdToMemRefSetMap_iterator++)
    {
        const int &first = reg_mIdToMemRefSetMap_iterator->first;
        MemRefSet &second = reg_mIdToMemRefSetMap_iterator->second;
        sOutBuild->mapEntryStart();
        sOutBuild->mapKey(OA::int2string(first));
        sOutBuild->mapValueStart();
        sOutBuild->listStart();
        for (MemRefSet::iterator it = second.begin(); it != second.end(); ++it) {
	    MemRefHandle memRefHandle = *it;
            sOutBuild->listItemStart();
            sOutBuild->outputIRHandle(memRefHandle, ir);
            sOutBuild->listItemEnd();
        }
        sOutBuild->listEnd();
        sOutBuild->mapValueEnd();
        sOutBuild->mapEntryEnd();
    }
    sOutBuild->mapEnd("mIdToMemRefSetMap");

    sOutBuild->mapStart("mIdToMRESetMap", "int", "MemRefExprSet");
    std::map<int, MemRefExprSet>::iterator reg_mIdToMRESetMap_iterator;
    for(reg_mIdToMRESetMap_iterator = mIdToMRESetMap.begin();
        reg_mIdToMRESetMap_iterator != mIdToMRESetMap.end();
        reg_mIdToMRESetMap_iterator++)
    {
        const int &first = reg_mIdToMRESetMap_iterator->first;
        MemRefExprSet &second = reg_mIdToMRESetMap_iterator->second;
        sOutBuild->mapEntryStart();
        sOutBuild->mapKey(OA::int2string(first));
        sOutBuild->mapValueStart();
        sOutBuild->listStart();
        for (MemRefExprSet::iterator it = second.begin(); it != second.end(); ++it) {
	    OA_ptr<MemRefExpr> mre = *it;
            sOutBuild->listItemStart();
            mre->output(ir);
            sOutBuild->listItemEnd();
        }
        sOutBuild->listEnd();
        sOutBuild->mapValueEnd();
        sOutBuild->mapEntryEnd();
    }
    sOutBuild->mapEnd("mIdToMRESetMap");

#if 0
    // This is redundant with mIdToMemRefSetMap
    sOutBuild->mapStart("mMemRefToIdMap", "MemRefHandle", "int");
    std::map<MemRefHandle, int>::iterator reg_mMemRefToIdMap_iterator;
    for(reg_mMemRefToIdMap_iterator = mMemRefToIdMap.begin();
        reg_mMemRefToIdMap_iterator != mMemRefToIdMap.end();
        reg_mMemRefToIdMap_iterator++)
    {
        const MemRefHandle &first = reg_mMemRefToIdMap_iterator->first;
        int &second = reg_mMemRefToIdMap_iterator->second;
        sOutBuild->mapEntryStart();
        sOutBuild->mapKeyStart();
        sOutBuild->outputIRHandle(first, ir);
        sOutBuild->mapKeyEnd();
        sOutBuild->mapValue(OA::int2string(second));
        sOutBuild->mapEntryEnd();
    }
    sOutBuild->mapEnd("mMemRefToIdMap");
#endif

#if 0
    // This is redundant with mIdToMRESetMap.
    sOutBuild->mapStart("mMREToIdMap", "OA::OA_ptr<MemRefExpr> ", "int");
    std::map<OA::OA_ptr<MemRefExpr> , int>::iterator reg_mMREToIdMap_iterator;
    for(reg_mMREToIdMap_iterator = mMREToIdMap.begin();
        reg_mMREToIdMap_iterator != mMREToIdMap.end();
        reg_mMREToIdMap_iterator++)
    {
        const OA::OA_ptr<MemRefExpr>  &first = reg_mMREToIdMap_iterator->first;
        int &second = reg_mMREToIdMap_iterator->second;
        sOutBuild->mapEntryStart();
        sOutBuild->mapKeyStart();
        first->output(ir);
        sOutBuild->mapKeyEnd();
        sOutBuild->mapValue(OA::int2string(second));
        sOutBuild->mapEntryEnd();
    }
    sOutBuild->mapEnd("mMREToIdMap");
#endif

#if 0
    // This is redundant with mIdToLocSetMap.
    sOutBuild->mapStart("mLocToIdMap", "OA::OA_ptr<Location> ", "int");
    std::map<OA::OA_ptr<Location> , int>::iterator reg_mLocToIdMap_iterator;
    for(reg_mLocToIdMap_iterator = mLocToIdMap.begin();
        reg_mLocToIdMap_iterator != mLocToIdMap.end();
        reg_mLocToIdMap_iterator++)
    {
        const OA::OA_ptr<Location>  &first = reg_mLocToIdMap_iterator->first;
        int &second = reg_mLocToIdMap_iterator->second;
        sOutBuild->mapEntryStart();
        sOutBuild->mapKeyStart();
        first->output(ir);
        sOutBuild->mapKeyEnd();
        sOutBuild->mapValue(OA::int2string(second));
        sOutBuild->mapEntryEnd();
    }
    sOutBuild->mapEnd("mLocToIdMap");
#endif
    sOutBuild->objEnd("AliasMap");
}
Пример #3
0
bool EPLocatorVisitor::PreOrderVisit( EPTypedObjNode<IAAFSourceMob, EPFileSource>& node )
{

    bool testPassed = true;
    AxSourceMob axSrcMob( node.GetAAFObjectOfType() );

    AxString mobName = this->GetMobName( axSrcMob, EPFileSource::GetName() );

    try
    {
        //REQ_EP_059
        AxFileDescriptor axFileDes( AxQueryInterface<IAAFEssenceDescriptor, IAAFFileDescriptor>( axSrcMob.GetEssenceDescriptor() ) );
        AxContainerDef axContDef( axFileDes.GetContainerFormat() );
        aafUID_t containerFormat = axContDef.GetAUID();
        
        try
        {
            AxLocatorIter locIter( axFileDes.GetLocators() );
    
            IAAFSmartPointer2<IAAFLocator> spLocator; 
            
            bool fileFound = false;
            
            if ( containerFormat == kAAFContainerDef_External )
            {
                
                //REQ_EP_060    
                //Repeat until the iterator is out of mob slots.
                while ( locIter.NextOne( spLocator ) )
                {
                    AxLocator axLocator( spLocator );
                    AxString fileLocation = axLocator.GetPath();
    
                    //TODO: Determine if the file exists  
                    if ( false )
                    {
                        fileFound = true;
                        break;
                    }
                }
                
                if ( !fileFound )
                {
                    _spTestResult->AddSingleResult( L"REQ_EP_060", 
                                                     L"EssenceDescriptor::Locator property of " + 
                                                    mobName + 
                                                    L" does not contain a locator pointing to any known file.", 
                                                    TestResult::WARN,
						    node );
                }
                
                locIter.Reset();
                
            }
            else if ( containerFormat != kAAFContainerDef_AAF )
            {
                _spTestResult->AddSingleResult( L"REQ_EP_059", 
                                                 L"Essence associated with " + mobName +
                                                L" is neither internal or external.",
                                                 TestResult::FAIL,
						node );
                testPassed = false;
            }
            
            //REQ_EP_061
            bool locatorFound = false;
            while ( locIter.NextOne( spLocator ) )
            {
                //If this is a Network Locator
                AxLocator axLocator( spLocator );
                IAAFNetworkLocatorSP spNetLoc;
                if ( AxIsA( axLocator, spNetLoc ) )
                {
                    AxNetworkLocator axNetLoc( spNetLoc );
                    if ( CheckNetworkLocator( axNetLoc ) )
                    {
                        locatorFound = true;
                        break;
                    }
                }
            }
            
            if ( !locatorFound )
            {
              wstring explain = L"EssenceDescriptor::Locator property of " + mobName + 
                                L" does not include any NetworkLocators that complies with"
                                L" the constrains set out in Section 6.9 of the AAF Edit Protocol.";
                _spTestResult->AddSingleResult( L"REQ_EP_061", 
                                                explain,
                                                TestResult::WARN,
						node );
            }
            
        }
        catch ( const AxExHResult& ex )
        {
            if ( ex.getHResult() != AAFRESULT_PROP_NOT_PRESENT )
            {
                throw ex;
            }
            
            wstring explain = mobName + L" does not have an EssenceDescriptor::Locator property.";

            _spTestResult->AddSingleResult( L"REQ_EP_060",
                                            explain,
                                            TestResult::WARN,
					    node );

            _spTestResult->AddSingleResult( L"REQ_EP_061",
                                            explain,
                                            TestResult::WARN,
					    node );
        }
                 
    }
    catch ( const AxExHResult& ex )
    {
        if ( ex.getHResult() != AAFRESULT_PROP_NOT_PRESENT )
        {
            throw ex;
        }
        _spTestResult->AddSingleResult( L"REQ_EP_059", 
                                         mobName +
                                        L" does not have a FileDescriptor::ContainerDefinition property.",
                                        TestResult::FAIL,
					node );
        testPassed = false;
    }        
    
    return testPassed;
}