bool
avtSILRestrictionTraverser::Equal(avtSILRestriction_p silr2)
{
    int ns = silr->GetNumSets();
    if (ns != silr2->GetNumSets())
    {
        return false;
    }
 
    if (silr->topSet != silr2->topSet)
    {
        return false;
    }
 
    vector<unsigned char> &useSet1 = silr->useSet;
    vector<unsigned char> &useSet2 = silr2->useSet;

    for (int i = 0 ; i < ns ; i++)
    {
        if (useSet1[i] != useSet2[i])
        {
            return false;
        }
    }
 
    //
    // Okay, it passed our tests.  This is exhaustive if the underlying SIL is
    // the same.  Otherwise, it was hopefully caught by checking the size of
    // the sets.
    //
    return true;
}
bool
SimEngineManager::ReadDataObject(const EngineKey &/*ek*/,
    const std::string &format,
    const std::string &filename,
    const std::string &var, const int ts,
    avtSILRestriction_p silr,
    const MaterialAttributes &matopts,
    const ExpressionList &expressions,
    const MeshManagementAttributes &meshopts,
    bool treatAllDbsAsTimeVarying,
    bool ignoreExtents,
    const std::string &selName,
    int windowID)
{
    engine->GetNetMgr()->GetDatabasePluginManager()->PluginAvailable(format);

    // Need this??
    *ParsingExprList::Instance()->GetList() = expressions;

    CompactSILRestrictionAttributes *cSilAtts = silr->MakeCompactAttributes();
    engine->GetNetMgr()->StartNetwork(format,
                                      filename, 
                                      var,
                                      ts,
                                      *cSilAtts,
                                      matopts,
                                      meshopts,
                                      treatAllDbsAsTimeVarying,
                                      ignoreExtents,
                                      selName,
                                      windowID);

    delete cSilAtts;
    return true;
}
void
EngineMethods::ReadDataObject(const std::string &format, const std::string &file,
                            const std::string &var, const int time,
                            avtSILRestriction_p silr,
                            const MaterialAttributes &matopts,
                            const ExpressionList &expressions,
                            const MeshManagementAttributes &meshopts,
                            bool treatAllDBsAsTimeVarying,
                            bool ignoreExtents,
                            const std::string &selName,
                            int windowID)
{
    // Make sure the engine knows about our current expression list.
    if (state->exprList != expressions)
    {
        state->exprList = expressions;
        state->exprList.Notify();
    }

    CompactSILRestrictionAttributes *atts = silr->MakeCompactAttributes();
    state->readRPC(format, file, var, time, *atts, matopts, meshopts,
                   treatAllDBsAsTimeVarying, ignoreExtents, selName, windowID);
    if (state->readRPC.GetStatus() == VisItRPC::error)
    {
        RECONSTITUTE_EXCEPTION(state->readRPC.GetExceptionType(),
                               state->readRPC.Message());
    }
    delete atts;
}