/*! @header FTIdToNodeIterator @abstract Module of FT @availability OS X, GNUstep @copyright 2004, 2005, 2006 Free Software Foundation, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  -------------------------------------------------------------------------
  Modification history

  17.07.05 ola     initial version
  23.08.06 ola     license changed
  -------------------------------------------------------------------------
  
*/ #if !defined(__FTIdToNodeIterator_H) #define __FTIdToNodeIterator_H #include #include #include #include #include enum __ftIdToNodeIteratorState { __IDTONODEITERATOR_STATE_BEGIN = 0, __IDTONODEITERATOR_STATE_HAS_NEXT_REQUESTED, __IDTONODEITERATOR_STATE_NEXT_REQUESTED }; /*! * @class FTIdToNodeIterator * @abstract Iterates over a set of node id's and returns the corresponding * node instance. * @discussion This class is threadsafe. */ @interface FTIdToNodeIterator : FTObject { @private NSEnumerator *nodeIds; FTGraphImpl *graph; NSLock *lock; /** * Points to the next object to return if state is * __IDTONODEITERATOR_STATE_HAS_NEXT_REQUESTED. In any other state this * field has no meaning. */ FTNodeImpl *nextNode; enum __ftIdToNodeIteratorState state; } /*! * @method initWithIdEnumerator * @param idEnumerator enumeration of node identifiers * @param aGraph underlying graph instance * @result self */ - initWithIdEnumerator: (NSEnumerator *) idEnumerator forGraph: (FTGraphImpl *) aGraph; - (void) dealloc; /*! * @method fetchNextNode * @abstract fetch the next node, if existent * @result the next node, if existent */ - (FTNodeImpl *) fetchNextNode; /*! * @method hasNext * @result returns YES if there is at least a datum at the current iteration * step */ - (BOOL) hasNext; /*! * @method next * @result returns the next object of the set to iterate or nil, if * not existent */ - next; @end #endif