GRASS Programmer's Manual  6.4.2(2012)
percent.c File Reference

GIS Library - percentage progress functions. More...

#include <stdio.h>
#include <grass/gis.h>
Include dependency graph for percent.c:

Go to the source code of this file.

Functions

int G_percent (long n, long d, int s)
 Print percent complete messages.
int G_percent2 (long n, long d, int s, FILE *out)
 Print percent complete messages.
int G_percent_reset (void)
 Reset G_percent() to 0%; do not add newline.
void G_set_percent_routine (int(*percent_routine)(int))
 Establishes percent_routine as the routine that will handle the printing of percentage progress messages.
void G_unset_percent_routine (void)
 After this call subsequent percentage progress messages will be handled in the default method.

Detailed Description

GIS Library - percentage progress functions.

(C) 2001-2008 by the GRASS Development Team

This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details.

Author:
GRASS GIS Development Team

Definition in file percent.c.


Function Documentation

int G_percent ( long  n,
long  d,
int  s 
)

Print percent complete messages.

This routine prints a percentage complete message to stderr. The percentage complete is (n/d)*100, and these are printed only for each s percentage. This is perhaps best explained by example:

  #include <stdio.h>
  #include <grass/gis.h>
  int row;
  int nrows;
  nrows = 1352; // 1352 is not a special value - example only

  G_message(_("Percent complete..."));
  for (row = 0; row < nrows; row++)
  {
      G_percent(row, nrows, 10);
      do_calculation(row);
  }
  G_percent(1, 1, 1);

This example code will print completion messages at 10% increments; i.e., 0%, 10%, 20%, 30%, etc., up to 100%. Each message does not appear on a new line, but rather erases the previous message.

Note that to prevent the illusion of the module stalling, the G_percent() call is placed before the time consuming part of the for loop, and an additional call is generally needed after the loop to "finish it off" at 100%.

Parameters:
ncurrent element
dtotal number of elements
sincrement size
Returns:
always returns 0

Definition at line 63 of file percent.c.

References G_percent2().

Referenced by Gs_loadmap_as_char(), Gs_loadmap_as_float(), Gs_loadmap_as_int(), Gs_loadmap_as_short(), Gs_pack_colors(), Gs_pack_colors_float(), IL_interp_segments_2d(), IL_resample_interp_segments_2d(), IL_vector_input_data_2d(), N_read_rast3d_to_array_3d(), N_read_rast_to_array_2d(), N_write_array_2d_to_rast(), N_write_array_3d_to_rast3d(), NetA_allpairs(), NetA_betweenness_closeness(), NetA_spanning_tree(), Vect_break_lines_list(), Vect_break_polygons(), Vect_build_nat(), Vect_build_sidx_from_topo(), Vect_clean_small_angles_at_nodes(), Vect_merge_lines(), Vect_net_build_graph(), Vect_remove_duplicates(), Vect_remove_small_areas(), and Vect_snap_lines_list().

int G_percent2 ( long  n,
long  d,
int  s,
FILE *  out 
)

Print percent complete messages.

This routine prints a percentage complete message to the file given by the out parameter. Otherwise usage is the same as G_percent().

Parameters:
ncurrent element
dtotal number of elements
sincrement size
[out]outfile to print to
Returns:
always returns 0

Definition at line 83 of file percent.c.

References first, G_info_format(), G_verbose(), and NULL.

Referenced by G_percent().

int G_percent_reset ( void  )

Reset G_percent() to 0%; do not add newline.

Returns:
always returns 0

Definition at line 146 of file percent.c.

References first.

Referenced by NetA_allpairs(), NetA_betweenness_closeness(), and NetA_spanning_tree().

void G_set_percent_routine ( int(*)(int)  percent_routine)

Establishes percent_routine as the routine that will handle the printing of percentage progress messages.

Parameters:
percent_routineroutine will be called like this: percent_routine(x)

Definition at line 160 of file percent.c.

void G_unset_percent_routine ( void  )

After this call subsequent percentage progress messages will be handled in the default method.

Percentage progress messages are printed directly to stderr.

Definition at line 171 of file percent.c.

References NULL.

Referenced by gui_modules.wxvdriver.DisplayDriver::__del__().

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines