/* ----------------------------- MNI Header -----------------------------------
@NAME       : nd_loop.h
@DESCRIPTION: Header file for nd_loop.c
@METHOD     : Use these routines in the following way:

   Set start, end and increment vectors to define looping;

   nd_begin_looping(start, current, ndims);
   while (!nd_end_of_loop(current, end, ndims)) {
      nd_update_current_count(current, increment, end,
                              current_count, ndims);

      Use current and current_count to work on hyperslab;

      nd_increment_loop(current, start, increment, end, ndims);
   }

@GLOBALS    : 
@CREATED    : December 2, 1994 (Peter Neelin)
@MODIFIED   : 
 * $Log: nd_loop.h,v $
 * Revision 6.2  2004/10/15 13:47:13  bert
 * Minor changes for Windows compatibility
 *
 * Revision 6.1  2002/01/14 21:28:26  neelin
 * Moved nd_loop, voxel_loop, ParseArgv and time_stamp from ../progs/Proglib
 * in order to include them in the main minc library.
 *
 * Revision 6.1  1999/10/19 14:45:14  neelin
 * Fixed Log subsitutions for CVS
 *
 * Revision 6.0  1997/09/12 13:23:41  neelin
 * Release of minc version 0.6
 *
 * Revision 5.0  1997/08/21  13:24:41  neelin
 * Release of minc version 0.5
 *
 * Revision 4.0  1997/05/07  20:00:50  neelin
 * Release of minc version 0.4
 *
 * Revision 3.0  1995/05/15  19:31:35  neelin
 * Release of minc version 0.3
 *
 * Revision 1.3  1994/12/02  09:40:37  neelin
 * Fixed arguments to nd_end_of_loop.
 *
 * Revision 1.2  94/12/02  09:20:17  neelin
 * Added comments to clarify use of routines.
 * 
 * Revision 1.1  94/12/02  08:40:31  neelin
 * Initial revision
 * 
@COPYRIGHT  :
              Copyright 1994 Peter Neelin, McConnell Brain Imaging Centre, 
              Montreal Neurological Institute, McGill University.
              Permission to use, copy, modify, and distribute this
              software and its documentation for any purpose and without
              fee is hereby granted, provided that the above copyright
              notice appear in all copies.  The author and McGill University
              make no representations about the suitability of this
              software for any purpose.  It is provided "as is" without
              express or implied warranty.
---------------------------------------------------------------------------- */

#include "minc.h"

#if defined(__cplusplus)
extern "C" {
#endif

MNCAPI void nd_begin_looping(long start[], long current[], int ndims);
MNCAPI int nd_end_of_loop(long current[], long end[], int ndims);
MNCAPI void nd_update_current_count(long current[], 
                                    long increment[], long end[],
                                    long current_count[],
                                    int ndims);
MNCAPI void nd_increment_loop(long current[], 
                              long start[], long increment[], long end[],
                              int ndims);

#if defined(__cplusplus)
}
#endif
