---
name: "gridtemplates.c"
section: "3"
platform: "linux"
package: "libg2c-dev"
version: "2.1.0-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/gridtemplates.c"
---

# gridtemplates.c(3)

Returns grid template information for a specified Grid Definition Template for Section 3 - the Grid Definition Section (GDS).

## NAME

gridtemplates.c - Returns grid template information for a specified Grid Definition Template for Section 3 - the Grid Definition Section (GDS).

## SYNOPSIS

`#include 'grib2_int.h'`\

### Functions

**gtemplate** \* **extgridtemplate** (**g2int** number, **g2int** \*template)\
 This subroutine generates the remaining octet map for a given Grid Definition Template, if required.  int **g2c\_get\_grid\_template** (int grid\_template\_num, int \*maplen, int \*map, int \*needext)\
 Get grid template information.  int **g2c\_get\_grid\_template\_extension** (int grid\_template\_num, int \*template, int \*extlen, int \*ext)\
 Get grid template extension information.  static **g2int** **getgridindex** (**g2int** number)\
 This function returns the index of specified Grid Definition Template in array templates for \[Section 3 - the Grid Definition Section (GDS)\](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2\_doc/grib2\_sect3.shtml).  **gtemplate** \* **getgridtemplate** (**g2int** number)\
 This subroutine returns grid template information for a specified Grid Definition Template for \[Section 3 - the Grid Definition Section (GDS)\](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2\_doc/grib2\_sect3.shtml).

### Variables

static const struct gridtemplate **templatesgrid** \[**G2C\_MAX\_GDS\_TEMPLATE**\]\
 Templates grid.

## Detailed Description

Returns grid template information for a specified Grid Definition Template for Section 3 - the Grid Definition Section (GDS).

Each Template has three parts:

- 1\.

  The number of entries in the template (mapgridlen).

- 2\.

  A map of the template (mapgrid), which contains the number of octets in which to pack each of the template values.

- 3\.

  A logical value (needext) that indicates whether the Template needs to be extended.

In some cases the number of entries in a template can vary depending upon values specified in the 'static' part of the template. (See Template 3.120 as an example).

**Note**

Array mapgrid contains the number of octets in which the corresponding template values will be stored. A negative value in mapgrid is used to indicate that the corresponding template entry can contain negative values. This information is used later when packing (or unpacking) the template data values. Negative data values in GRIB are stored with the left most bit set to one, and a negative number of octets value in mapgrid indicates that this possibility should be considered. The number of octets used to store the data value in this case would be the absolute value of the negative value in mapgrid.

### Program History Log

Date   Programmer   Comments    2001-06-28   Gilbert   Initial    2007-08-16   Vuong   Added GDT 3.204 Curvilinear Orthogonal Grid    2008-07-08   Vuong   Added GDT 3.32768 Rotate Lat/Lon E-grid (Arakawa)    2009-01-14   Vuong   Changed structure name template to gtemplate    2010-05-11   Vuong   Added GDT 3.32769 Rotate Lat/Lon Non-E Staggered grid (Arakawa)    2013-08-06   Vuong   Added GDT 3.4, 3.5, 3.12, 3.101, 3.140    2022-10-16   Hartnett   Added **g2c\_get\_grid\_template()**.    2025-01-06   Stahl   Added GDT 3.13, 3.23, 3.33, 3.61, 3.62, 3.63, 3.150

**Author**

Stephen Gilbert

**Date**

2001-06-28

Definition in file **gridtemplates.c**.

## Function Documentation

### gtemplate \* extgridtemplate (g2int number, g2int \* template)

This subroutine generates the remaining octet map for a given Grid Definition Template, if required. Some Templates can vary depending on data values given in an earlier part of the Template, and it is necessary to know some of the earlier entry values to generate the full octet map of the Template.

This function allocates memory for the extension. The pointer ext in the gtemplate struct must be freed to prevent memory leaks.

**Parameters**

*number* The number of the Grid Definition Template that is being requested. \
 *template* The grid definition template array.

**Returns**

Pointer to the returned template struct. Returns NULL pointer, if template not found.

**Author**

Stephen Gilbert

**Date**

2000-05-09

Definition at line **241** of file **gridtemplates.c**.

References **getgridindex()**, and **getgridtemplate()**.

Referenced by **g2\_addgrid()**, **g2\_unpack3()**, and **g2c\_get\_grid\_template\_extension()**.

### int g2c\_get\_grid\_template (int grid\_template\_num, int \* maplen, int \* map, int \* needext)

Get grid template information. The grid template consists of a template map, its length, and, for some templates, an extra extension map, and its length. If an extension is needed, use **g2c\_get\_grid\_template\_extension()** to get it.

**Parameters**

*grid\_template\_num* The grid template number. \
 *maplen* Pointer that gets the length of the map. Ignored if NULL. \
 *map* Pointer that gets the map as an array of int. Memory must be allocated by caller. Ignored if NULL. \
 *needext* Pointer that a non-zero value if an extension to this template is needed. Ignored if NULL.

**Returns**

- •

  **G2C\_NOERROR** No error.

- •

  **G2C\_ENOTEMPLATE** Template not found.

**Author**

Ed Hartnett

**Date**

10/16/22

Definition at line **391** of file **gridtemplates.c**.

References **G2C\_ENOTEMPLATE**, **G2C\_MAX\_GDS\_TEMPLATE**, **G2C\_NOERROR**, and **templatesgrid**.

Referenced by **g2c\_rw\_section3\_metadata()**.

### int g2c\_get\_grid\_template\_extension (int grid\_template\_num, int \* template, int \* extlen, int \* ext)

Get grid template extension information.

**Parameters**

*grid\_template\_num* The grid template number. \
 *template* Pointer to array that contains the template values. \
 *extlen* Pointer that gets the length of the extension. Ignored if NULL. \
 *ext* Pointer that gets template extension array, if there is one. Memory must be allocated by the caller. Ignored if NULL.

**Returns**

- •

  **G2C\_NOERROR** No error.

- •

  **G2C\_EINVAL** Invalid input.

- •

  **G2C\_ENOTEMPLATE** Template not found.

- •

  **G2C\_ENOMEM** Out of memory.

**Author**

Ed Hartnett

**Date**

10/16/22

Definition at line **316** of file **gridtemplates.c**.

References **gtemplate::ext**, **extgridtemplate()**, **gtemplate::extlen**, **G2C\_EINVAL**, **G2C\_ENOMEM**, **G2C\_ENOTEMPLATE**, **G2C\_MAX\_GDS\_TEMPLATE**, **G2C\_NOERROR**, and **templatesgrid**.

### static g2int getgridindex (g2int number)` [static]`

This function returns the index of specified Grid Definition Template in array templates for \[Section 3 - the Grid Definition Section (GDS)\](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2\_doc/grib2\_sect3.shtml).

**Parameters**

*number* The number of the Grid Definition Template being requested.

**Returns**

Index of the Grid Definition Template(GDT) in array templates, if template exists. -1, otherwise.

**Author**

Stephen Gilbert

**Date**

2001-06-28

Definition at line **155** of file **gridtemplates.c**.

References **G2C\_MAX\_GDS\_TEMPLATE**, **getgridindex()**, and **templatesgrid**.

Referenced by **extgridtemplate()**, **getgridindex()**, and **getgridtemplate()**.

### gtemplate \* getgridtemplate (g2int number)

This subroutine returns grid template information for a specified Grid Definition Template for \[Section 3 - the Grid Definition Section (GDS)\](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2\_doc/grib2\_sect3.shtml). The number of entries in the template is returned along with a map of the number of octets occupied by each entry. Also, a flag is returned to indicate whether the template would need to be extended.

This function allocates storage for the template. The returned pointer must be freed by the caller.

**Parameters**

*number* The number of the Grid Definition Template that is being requested.

**Returns**

Pointer to the returned template struct (must be freed by caller). Returns NULL pointer, if template not found.

**Author**

Stephen Gilbert

**Date**

2000-05-09

Definition at line **193** of file **gridtemplates.c**.

References **getgridindex()**, and **templatesgrid**.

Referenced by **extgridtemplate()**, **g2\_addgrid()**, and **g2\_unpack3()**.

## Variable Documentation

### const struct gridtemplate templatesgrid\[G2C\_MAX\_GDS\_TEMPLATE\]` [static]`

Templates grid.

Definition at line **58** of file **gridtemplates.c**.

Referenced by **g2c\_get\_grid\_template()**, **g2c\_get\_grid\_template\_extension()**, **getgridindex()**, and **getgridtemplate()**.

## Author

Generated automatically by Doxygen for NCEPLIBS-g2c from the source code.
