Loading...
Searching...
No Matches
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

void | G_percent (long n, long d, int s)
| Print percent complete messages.
void | G_percent_reset (void)
| Reset G_percent() to 0%; do not add newline.
void | G_progress (long n, int s)
| Print progress info messages.
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-2009, 2011 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 Development Team

Definition in file percent.c.

## Function Documentation

## G_percent()

void 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);
G_message
void G_message(const char *msg,...)
Print a message to stderr.
Definition gis/error.c:89
G_percent
void G_percent(long n, long d, int s)
Print percent complete messages.
Definition percent.c:61

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

  n | current element
  d | total number of elements
  s | increment size

Definition at line 61 of file percent.c.

References G_info_format(), G_verbose(), and x.

Referenced by G_math_cholesky_sband_decomposition(), 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_interp_segments_2d_parallel(), IL_resample_interp_segments_2d(), N_gwflow_2d_calc_water_budget(), N_gwflow_3d_calc_water_budget(), N_read_rast3d_to_array_3d(), N_read_rast_to_array_2d(), N_write_array_2d_to_rast(), N_write_array_3d_to_rast3d(), and P_Aux_to_Raster().

## G_percent_reset()

void G_percent_reset | ( | void |  | ) |

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

Definition at line 117 of file percent.c.

## G_progress()

void G_progress | ( | long | n,
|  | int | s )

Print progress info messages.

Use G_percent() when number of elements is defined.

This routine prints a progress info message to stderr. The value n is printed only for each s. This is perhaps best explained by example:

#include <grass/vector.h>
int line;
G_message(_("Reading features..."));
line = 0;
while(TRUE)
{
if (Vect_read_next_line(Map, Points, Cats) < 0)
break;
line++;
G_progress(line, 1e3);
}
G_progress(1, 1);
TRUE
#define TRUE
Definition dbfopen.c:56
G_progress
void G_progress(long n, int s)
Print progress info messages.
Definition percent.c:158

This example code will print progress in messages at 1000 increments; i.e., 1000, 2000, 3000, 4000, etc., up to number of features for given vector map. Each message does not appear on a new line, but rather erases the previous message.

Parameters

  n | current element
  s | increment size

Returns
  always returns 0

Definition at line 158 of file percent.c.

References G_info_format(), and G_verbose().

## G_set_percent_routine()

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

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

Parameters

  percent_routine | routine will be called like this: percent_routine(x)

Definition at line 192 of file percent.c.

## G_unset_percent_routine()

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 203 of file percent.c.

References NULL.