GRASS GIS 8 Programmer's Manual  8.2.2dev(2023)-5c00b4e944
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. More...

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

void G_progress (long n, int s)
Print progress info messages. More...

void G_set_percent_routine (int(*percent_routine)(int))
Establishes percent_routine as the routine that will handle the printing of percentage progress messages. More...

void G_unset_percent_routine (void)
After this call subsequent percentage progress messages will be handled in the default method. More...

## 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.

Definition in file percent.c.

## ◆ 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);
void G_percent(long, long, int)
Print percent complete messages.
Definition: percent.c:62
void G_message(const char *,...) __attribute__((format(printf
#define _(str)
Definition: glocale.h:10

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

Referenced by NetA_betweenness_closeness().

## ◆ G_percent_reset()

 void G_percent_reset ( void )

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

Definition at line 119 of file percent.c.

References st.

Referenced by NetA_betweenness_closeness().

## ◆ 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;
line = 0;
while(TRUE)
{
if (Vect_read_next_line(Map, Points, Cats) < 0)
break;
line++;
G_progress(line, 1e3);
}
G_progress(1, 1);
void G_progress(long, int)
Print progress info messages.
Definition: percent.c:160
int Vect_read_next_line(const struct Map_info *, struct line_pnts *, struct line_cats *)
#define TRUE
Definition: gis.h:59

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

## ◆ G_set_percent_routine()

 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_routine routine will be called like this: percent_routine(x)

Definition at line 194 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 205 of file percent.c.