NCEPLIBS-g2c  1.7.0
drstemplates.c File Reference

Functions for GRIB2 Data Representation Templates (DRT) for the Data Representation Setcion. More...

#include <stdlib.h>
#include "grib2_int.h"

Go to the source code of this file.

Macros

#define MAXDRSMAPLEN   200
 maximum template map length More...
 
#define MAXDRSTEMP   9
 maximum number of templates More...
 

Functions

gtemplateextdrstemplate (g2int number, g2int *list)
 This subroutine generates the remaining octet map for a given Data Representation Template, if required. More...
 
static g2int getdrsindex (g2int number)
 This function returns the index of specified Data Representation Template. More...
 
gtemplategetdrstemplate (g2int number)
 This subroutine returns DRS template information for a specified Data Representation Template. More...
 

Variables

static const struct drstemplate templatesdrs [MAXDRSTEMP]
 Stuct holding data for GRIB2 Data Representation Section (DRS) template. More...
 

Detailed Description

Functions for GRIB2 Data Representation Templates (DRT) for the Data Representation Setcion.

Each Template has three parts:

  1. The number of entries in the template (mapdrslen).
  2. A map of the template (mapdrs), 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 5.1 as an example.)
Note
Array mapdrs contains the number of octets in which the corresponding template values will be stored. A negative value in mapdrs 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 mapdrs 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 mapdrs.

Program History Log

Date Programmer Comments
2001-06-28 Gilbert Initial
2009-01-14 Vuong Changed structure name template to gtemplate
Author
Stephen Gilbert
Date
2001-06-28

Definition in file drstemplates.c.

Macro Definition Documentation

◆ MAXDRSMAPLEN

#define MAXDRSMAPLEN   200

maximum template map length

Definition at line 39 of file drstemplates.c.

◆ MAXDRSTEMP

#define MAXDRSTEMP   9

maximum number of templates

Definition at line 38 of file drstemplates.c.

Function Documentation

◆ extdrstemplate()

gtemplate* extdrstemplate ( g2int  number,
g2int list 
)

This subroutine generates the remaining octet map for a given Data Representation 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.

Parameters
numberThe number of the Data Representation Template that is being requested.
listThe list of values for each entry in the the Data Representation Template.
Returns
Pointer to the returned template struct. Returns NULL pointer, if template not found.
Author
Stephen Gilbert
Date
2000-05-11

Definition at line 212 of file drstemplates.c.

References getdrsindex(), and getdrstemplate().

Referenced by g2_unpack5().

◆ getdrsindex()

static g2int getdrsindex ( g2int  number)
static

This function returns the index of specified Data Representation Template.

Parameters
numberThe number of the Data Representation Template that is being requested.
Returns
Index of the DRT in array gtemplates, if it exists. -1, otherwise.
Author
Stephen Gilbert
Date
2001-06-28

Definition at line 134 of file drstemplates.c.

References MAXDRSTEMP, and templatesdrs.

Referenced by extdrstemplate(), and getdrstemplate().

◆ getdrstemplate()

gtemplate* getdrstemplate ( g2int  number)

This subroutine returns DRS template information for a specified Data Representation Template.

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.

Parameters
numberThe number of the Data Representation Template that is being requested.
Returns
Pointer to the returned template struct. Returns NULL if template not found.
Author
Stephen Gilbert
Date
2000-05-11

Definition at line 166 of file drstemplates.c.

References getdrsindex(), and templatesdrs.

Referenced by extdrstemplate(), g2_addfield(), and g2_unpack5().

Variable Documentation

◆ templatesdrs

const struct drstemplate templatesdrs[MAXDRSTEMP]
static

Stuct holding data for GRIB2 Data Representation Section (DRS) template.

Definition at line 56 of file drstemplates.c.

Referenced by getdrsindex(), and getdrstemplate().