void
avtFileDescriptorManager::UsedFile(int index)
{
    if (index >= (int)fileIsOpen.size() || index < 0)
    {
        EXCEPTION2(BadIndexException, index, (int)fileIsOpen.size());
    }

    VisitMutexLock("avtFileDescriptorManagerFileTimestamp");

    fileTimestamp[index] = timestamp;
    timestamp++;

    VisitMutexUnlock("avtFileDescriptorManagerFileTimestamp");
}
void
avtSIMODataTreeIterator::UpdateExtents(avtDataTree_p tree)
{
    if (*tree == NULL)
    {
        return;
    }

    if (overrideOriginalSpatialExtents)
    {
        avtDataAttributes &outAtts = GetOutput()->GetInfo().GetAttributes();

        double bounds[6];
        bool gotBounds = false;
        struct {double *se; const double *xform;} info = {bounds, NULL};
        tree->Traverse(CGetSpatialExtents, (void *)&info, gotBounds);
        if (gotBounds)
        {
            avtDataAttributes &atts = GetInput()->GetInfo().GetAttributes();
            avtExtents        *exts = atts.GetThisProcsOriginalSpatialExtents();
            avtExtents originalSpatialExtents(exts->GetDimension());

            originalSpatialExtents.Merge(bounds);
            exts = outAtts.GetThisProcsOriginalSpatialExtents();

            VisitMutexLock("SIMOSpatial");
            *exts = originalSpatialExtents;
            outAtts.GetOriginalSpatialExtents()->Clear();
            VisitMutexUnlock("SIMOSpatial");
        }
        else
        {
            VisitMutexLock("SIMOSpatial");
            outAtts.GetOriginalSpatialExtents()->Clear();
            VisitMutexUnlock("SIMOSpatial");
        }
    }

    if (overrideOriginalDataExtents)
    {
        avtDataAttributes &outAtts = GetOutput()->GetInfo().GetAttributes();

        double range[2];  // who has more than 25 vars?
        bool gotBounds = false;
        tree->Traverse(CGetDataExtents, (void *)range, gotBounds);
        if (gotBounds)
        {
            avtExtents originalDataExtents(1);
            originalDataExtents.Merge(range);
            avtExtents *exts = outAtts.GetThisProcsOriginalDataExtents();

            VisitMutexLock("SIMOData");
            *exts = originalDataExtents;
            outAtts.GetOriginalDataExtents()->Clear();
            VisitMutexUnlock("SIMOData");
        }
        else
        {
            VisitMutexLock("SIMOData");
            outAtts.GetOriginalDataExtents()->Clear();
            VisitMutexUnlock("SIMOData");
        }
    }
}