Example #1
0
//******************************************************************************
const Set *DataBase::set( const std::string &ref,
                          const std::string &open,
                          const std::string &close )
{
    // Check to see if set was already built.
    std::vector<Set *>::iterator iter = m_sets.begin();
    for ( ; iter != m_sets.end(); ++iter )
    {
        if ( (*iter)->isMe( ref, open, close ) )
        {
            return (*iter);
        }
    }

    // If we get here, set didn't exist.
    Set *newSet = new Set( ref, open, close );
    m_sets.push_back( newSet );
    
    // Read reference file
    Reader reader( *newSet, READER_REF );
    if ( reader.open( ref.c_str() ) == false )
    {
        std::cerr << "ERROR: Couldn't open rest file '" 
                  << ref << "'" << std::endl;
        // Remove the mal-formed set
        m_sets.pop_back();
        return NULL;
    }
    newSet->doneReading( READER_REF );

    // Read open file
    if ( open != "" && open != "NULL" && open != ref )
    {
        Reader reader( *newSet, READER_OPEN );
        if ( reader.open( open.c_str() ) == false )
        {
            std::cerr << "ERROR: Couldn't open shutter-open file '" 
                      << open << "'" << std::endl;
            // Remove the mal-formed set
            m_sets.pop_back();
            return NULL;
        }
    }
    newSet->doneReading( READER_OPEN );

    // Read close file
    if ( open != "" && open != "NULL" &&
         close != "" && close != "NULL" && 
         open != ref && close != ref )
    {
        Reader reader( *newSet, READER_CLOSE );
        if ( reader.open( close.c_str() ) == false )
        {
            std::cerr << "ERROR: Couldn't open shutter-close file '" 
                      << close << "'" << std::endl;
            // Remove the mal-formed set
            m_sets.pop_back();
            return NULL;
        }
    }
    newSet->doneReading( READER_CLOSE );

    return newSet;
}