SingleDomAllSP_Iter.cpp

Go to the documentation of this file.
00001 /* ****************************************************************** **
00002 **    OpenSees - Open System for Earthquake Engineering Simulation    **
00003 **          Pacific Earthquake Engineering Research Center            **
00004 **                                                                    **
00005 **                                                                    **
00006 ** (C) Copyright 1999, The Regents of the University of California    **
00007 ** All Rights Reserved.                                               **
00008 **                                                                    **
00009 ** Commercial use of this program without express permission of the   **
00010 ** University of California, Berkeley, is strictly prohibited.  See   **
00011 ** file 'COPYRIGHT'  in main directory for information on usage and   **
00012 ** redistribution,  and for a DISCLAIMER OF ALL WARRANTIES.           **
00013 **                                                                    **
00014 ** Developed by:                                                      **
00015 **   Frank McKenna (fmckenna@ce.berkeley.edu)                         **
00016 **   Gregory L. Fenves (fenves@ce.berkeley.edu)                       **
00017 **   Filip C. Filippou (filippou@ce.berkeley.edu)                     **
00018 **                                                                    **
00019 ** ****************************************************************** */
00020                                                                         
00021 // $Revision: 1.1.1.1 $
00022 // $Date: 2000/09/15 08:23:18 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/domain/domain/single/SingleDomAllSP_Iter.cpp,v $
00024                                                                         
00025                                                                         
00026 // File: ~/OOP/domain/domain/SingleDomAllSP_Iter.C
00027 //
00028 // Written: fmk 
00029 // Created: Fri Sep 20 15:27:47: 1996
00030 // Revision: A
00031 //
00032 // Description: This file contains the method definitions for class 
00033 // SingleDomAllSP_Iter. SingleDomAllSP_Iter is a class for iterating through the 
00034 // elements of a domain. 
00035 
00036 #include "SingleDomAllSP_Iter.h"
00037 
00038 #include <Domain.h>
00039 #include <LoadPattern.h>
00040 #include <LoadPatternIter.h>
00041 #include <SP_Constraint.h>
00042 #include <TaggedObjectIter.h>
00043 #include <TaggedObjectStorage.h>
00044 
00045 // SingleDomAllSP_Iter(SingleDomAllain &theDomain):
00046 //      constructor that takes the model, just the basic iter
00047 
00048 SingleDomAllSP_Iter::SingleDomAllSP_Iter(Domain &domain)
00049   :theDomain(&domain), doneDomainSPs(false)
00050 {
00051 
00052 }
00053 
00054 SingleDomAllSP_Iter::~SingleDomAllSP_Iter()
00055 {
00056 }    
00057 
00058 
00059 void
00060 SingleDomAllSP_Iter::reset(void)
00061 {
00062   theDomainSPs = &(theDomain->getSPs());
00063   theLoadPatterns = &(theDomain->getLoadPatterns());
00064   currentLoadPattern = (*theLoadPatterns)();
00065   if (currentLoadPattern != 0) {
00066       theLoadPatternSPs = &(currentLoadPattern->getSPs());
00067   }
00068 
00069   doneDomainSPs = false;
00070 }
00071 
00072 
00073 SP_Constraint *
00074 SingleDomAllSP_Iter::operator()(void)
00075 {
00076   SP_Constraint *theRes = 0;
00077 
00078   if (doneDomainSPs == false) {
00079     theRes = (*theDomainSPs)();
00080     if (theRes != 0)
00081       return theRes;
00082     else
00083       doneDomainSPs = true;
00084   }
00085 
00086   while (currentLoadPattern != 0) {
00087     theRes = (*theLoadPatternSPs)();
00088     if (theRes == 0) {
00089       currentLoadPattern = (*theLoadPatterns)();
00090       if (currentLoadPattern != 0)
00091         theLoadPatternSPs = &(currentLoadPattern->getSPs());
00092     } else
00093         return theRes;
00094   }
00095 
00096   return 0;
00097 }
00098     
00099     
00100 
00101 
00102     
00103     

Generated on Mon Oct 23 15:05:01 2006 for OpenSees by doxygen 1.5.0