Commit 109db691 authored by Uwe Schulzweida's avatar Uwe Schulzweida
Browse files

Merge branch 'develop'

parents a8e2fe55 054ce75d
2017-04-13 Uwe Schulzweida
* Version 1.8.1 released
2017-04-12 Uwe Schulzweida
* file_fill_buffer: set offset (bug fix) [patch from Harald Anlauf]
2017-04-10 Uwe Schulzweida
* gribapi: use keys iScansNegatively and jScansPositively
2017-04-09 Uwe Schulzweida
* Refactor GRID_LCC to GRID_PROJECTION
2017-04-05 Uwe Schulzweida
* Scalar Z-Coordinate: added support for bounds (bug fix)
2017-03-18 Uwe Schulzweida
* grid_check_cyclic: check yvals for curvilinear grids (bug fix)
2017-03-17 Uwe Schulzweida
* gridCompareSearch: change 3rd parameter of gridCompare() to true.
2017-03-14 Uwe Schulzweida
* set chunk size of time axis to 512
* set min deflate size of data variables to 16
* streamOpenAppend: set defmiss = true (Needed for NetCDF4)
2017-03-08 Uwe Schulzweida
* Preserve netcdf time units attribute
2017-03-07 Uwe Schulzweida
* Added function streamGrbChangeParameterIdentification() (patch from Michal Koutek, KMNI)
2017-02-27 Uwe Schulzweida
* Added function gridDefUvRelativeToGrid()
* gridInqUvRelativeToGrid(): added cgribex support
2017-02-24 Uwe Schulzweida
* Added function gridInqUvRelativeToGrid() (patch from Michal Koutek, KMNI)
2017-02-22 Uwe Schulzweida
* CDI_CHUNK_AUTO: set chunk_size_max to 65536
2017-02-14 Uwe Schulzweida
* using CGRIBEX library version 1.7.6
......
......@@ -108,6 +108,7 @@ am__aclocal_m4_deps = \
$(top_srcdir)/m4/acx_lt_problems.m4 \
$(top_srcdir)/m4/acx_option_search_libs.m4 \
$(top_srcdir)/m4/acx_options.m4 \
$(top_srcdir)/m4/acx_prog_cc_posix.m4 \
$(top_srcdir)/m4/acx_sl_fc_mod_path_flag.m4 \
$(top_srcdir)/m4/acx_sl_mod_suffix.m4 \
$(top_srcdir)/m4/asx_tr_arg.m4 $(top_srcdir)/m4/asx_unset.m4 \
......
......@@ -1196,6 +1196,7 @@ m4_include([m4/acx_lang_package.m4])
m4_include([m4/acx_lt_problems.m4])
m4_include([m4/acx_option_search_libs.m4])
m4_include([m4/acx_options.m4])
m4_include([m4/acx_prog_cc_posix.m4])
m4_include([m4/acx_sl_fc_mod_path_flag.m4])
m4_include([m4/acx_sl_mod_suffix.m4])
m4_include([m4/asx_tr_arg.m4])
......
......@@ -101,6 +101,7 @@ am__aclocal_m4_deps = \
$(top_srcdir)/m4/acx_lt_problems.m4 \
$(top_srcdir)/m4/acx_option_search_libs.m4 \
$(top_srcdir)/m4/acx_options.m4 \
$(top_srcdir)/m4/acx_prog_cc_posix.m4 \
$(top_srcdir)/m4/acx_sl_fc_mod_path_flag.m4 \
$(top_srcdir)/m4/acx_sl_mod_suffix.m4 \
$(top_srcdir)/m4/asx_tr_arg.m4 $(top_srcdir)/m4/asx_unset.m4 \
......
......@@ -226,7 +226,7 @@ void print_xyvals2D(int gridID, int dig)
int xsize = gridInqXsize(gridID);
if ( xsize > 1 )
{
double *xvals = (double*) malloc(xsize*sizeof(double));
double *xvals = (double*) malloc((size_t)xsize*sizeof(double));
for ( int i = 0; i < xsize; ++i ) xvals[i] = xvals2D[i];
xinc = fabs(xvals[xsize-1] - xvals[0])/(xsize-1);
for ( int i = 2; i < xsize; i++ )
......@@ -236,7 +236,7 @@ void print_xyvals2D(int gridID, int dig)
int ysize = gridInqYsize(gridID);
if ( ysize > 1 )
{
double *yvals = (double*) malloc(ysize*sizeof(double));
double *yvals = (double*) malloc((size_t)ysize*sizeof(double));
for ( int i = 0; i < ysize; ++i ) yvals[i] = yvals2D[i*xsize];
yinc = fabs(yvals[ysize-1] - yvals[0])/(ysize-1);
for ( int i = 2; i < ysize; i++ )
......@@ -279,6 +279,10 @@ void printGridInfoKernel(int gridID, int index, bool lproj)
// int prec = gridInqPrec(gridID);
// int dig = (prec == CDI_DATATYPE_FLT64) ? 15 : 7;
int dig = 7;
#ifdef CDO
extern int CDO_flt_digits;
dig = CDO_flt_digits;
#endif
if ( !lproj )
{
......@@ -406,27 +410,6 @@ void printGridInfoKernel(int gridID, int index, bool lproj)
print_xyvals2D(gridID, dig);
}
else if ( gridtype == GRID_LCC )
{
double originLon, originLat, lonParY, lat1, lat2, xincm, yincm;
int projflag, scanflag;
gridInqParamLCC(gridID, &originLon, &originLat, &lonParY, &lat1, &lat2, &xincm, &yincm,
&projflag, &scanflag);
#ifdef CDO
set_text_color(stdout, RESET, GREEN);
#endif
fprintf(stdout, "points=%d (%dx%d) ", gridsize, xsize, ysize);
if ( (projflag&128) == 0 )
fprintf(stdout, "North Pole\n");
else
fprintf(stdout, "South Pole\n");
my_reset_text_color(stdout);
fprintf(stdout, "%33s : originLon=%g originLat=%g lonParY=%g\n", " ", originLon, originLat, lonParY);
fprintf(stdout, "%33s : lat1=%g lat2=%g xinc=%g m yinc=%g m\n", " ", lat1, lat2, xincm, yincm);
}
else /* if ( gridtype == GRID_GENERIC ) */
{
#ifdef CDO
......@@ -439,7 +422,7 @@ void printGridInfoKernel(int gridID, int index, bool lproj)
my_reset_text_color(stdout);
}
if ( gridtype == GRID_CURVILINEAR || gridtype == GRID_UNSTRUCTURED || gridtype == GRID_LCC )
if ( gridtype == GRID_CURVILINEAR || gridtype == GRID_UNSTRUCTURED )
{
if ( gridHasArea(gridID) ||
gridInqXbounds(gridID, NULL) || gridInqYbounds(gridID, NULL) )
......@@ -495,6 +478,10 @@ void printZaxisInfo(int vlistID)
// int prec = zaxisInqPrec(zaxisID);
// int dig = (prec == CDI_DATATYPE_FLT64) ? 15 : 7;
int dig = 7;
#ifdef CDO
extern int CDO_flt_digits;
dig = CDO_flt_digits;
#endif
zaxisName(zaxistype, zaxisname);
zaxisInqName(zaxisID, zname);
......
......@@ -47,9 +47,6 @@
"grib_api" : {
"lib" : "@GRIB_API_LIBS@",
"include" : "@GRIB_API_INCLUDE@"
},
"jasper" : {
"lib" : "@JASPER_LIBS@"
}
}
},
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.68 for cdi 1.8.0.
# Generated by GNU Autoconf 2.68 for cdi 1.8.1.
#
# Report bugs to <http://mpimet.mpg.de/cdi>.
#
......@@ -570,8 +570,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='cdi'
PACKAGE_TARNAME='cdi'
PACKAGE_VERSION='1.8.0'
PACKAGE_STRING='cdi 1.8.0'
PACKAGE_VERSION='1.8.1'
PACKAGE_STRING='cdi 1.8.1'
PACKAGE_BUGREPORT='http://mpimet.mpg.de/cdi'
PACKAGE_URL=''
 
......@@ -674,6 +674,8 @@ MPI_C_INCLUDE
MPIROOT
ENABLE_NETCDF_FALSE
ENABLE_NETCDF_TRUE
ENABLE_HIRLAM_EXTENSIONS_FALSE
ENABLE_HIRLAM_EXTENSIONS_TRUE
ENABLE_ALL_STATIC_FALSE
ENABLE_ALL_STATIC_TRUE
ENABLE_CDI_LIB
......@@ -865,6 +867,7 @@ enable_service
enable_extra
enable_ieg
enable_all_static
enable_hirlam_extensions
enable_mpi
with_mpi_root
with_mpi_include
......@@ -1460,7 +1463,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures cdi 1.8.0 to adapt to many kinds of systems.
\`configure' configures cdi 1.8.1 to adapt to many kinds of systems.
 
Usage: $0 [OPTION]... [VAR=VALUE]...
 
......@@ -1530,7 +1533,7 @@ fi
 
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of cdi 1.8.0:";;
short | recursive ) echo "Configuration of cdi 1.8.1:";;
esac
cat <<\_ACEOF
 
......@@ -1560,6 +1563,8 @@ Optional Features:
--enable-ieg Use the ieg library [default=yes]
--enable-all-static build a completely statically linked CDO binary
[default=no]
--enable-hirlam-extensions
HIRLAM extensions [default=no]
--enable-mpi Compile with MPI compiler [default=no]
--enable-iso-c-interface
Create Fortran Interface via iso_c_bindings facility
......@@ -1723,7 +1728,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
cdi configure 1.8.0
cdi configure 1.8.1
generated by GNU Autoconf 2.68
 
Copyright (C) 2010 Free Software Foundation, Inc.
......@@ -2568,7 +2573,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
 
It was created by cdi $as_me 1.8.0, which was
It was created by cdi $as_me 1.8.1, which was
generated by GNU Autoconf 2.68. Invocation command line was
 
$ $0 $@
......@@ -3520,7 +3525,7 @@ fi
 
# Define the identity of the package.
PACKAGE='cdi'
VERSION='1.8.0'
VERSION='1.8.1'
 
 
cat >>confdefs.h <<_ACEOF
......@@ -4949,6 +4954,54 @@ fi
 
 
 
acx_prog_cc_posix_version_value=200112
acx_prog_cc_posix_version_print="POSIX.1-2001"
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking For conformance to ${acx_prog_cc_posix_version_print}." >&5
$as_echo_n "checking For conformance to ${acx_prog_cc_posix_version_print}.... " >&6; }
if ${acx_cv_cc_posix_support2001+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <unistd.h>
int
main ()
{
int n[(_POSIX_VERSION >= ${acx_prog_cc_posix_version_value}L) * 2 - 1];
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
acx_cv_cc_posix_support2001=yes
else
acx_cv_cc_posix_support2001=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_posix_support2001" >&5
$as_echo "$acx_cv_cc_posix_support2001" >&6; }
if test "x$acx_cv_cc_posix_support2001" = xno; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: It seems your system does not define _POSIX_VERSION to a value
greater-or-equal ${acx_prog_cc_posix_version_value}. This is typically the case when the
compiler is instructed to make ISO C features available only,
e.g. when using gcc -std=c99" >&5
$as_echo "$as_me: It seems your system does not define _POSIX_VERSION to a value
greater-or-equal ${acx_prog_cc_posix_version_value}. This is typically the case when the
compiler is instructed to make ISO C features available only,
e.g. when using gcc -std=c99" >&6;}
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "${acx_prog_cc_posix_version_print} profile required
See \`config.log' for more details" "$LINENO" 5; }
fi
 
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
......@@ -23389,7 +23442,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
 
lt_cl_version="\
cdi config.lt 1.8.0
cdi config.lt 1.8.1
configured by $0, generated by GNU Autoconf 2.68.
 
Copyright (C) 2011 Free Software Foundation, Inc.
......@@ -27877,6 +27930,35 @@ else
ENABLE_ALL_STATIC_FALSE=
fi
 
# ----------------------------------------------------------------------
# Build CDO with HIRLAM extensions
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for HIRLAM extensions" >&5
$as_echo_n "checking for HIRLAM extensions... " >&6; }
# Check whether --enable-hirlam-extensions was given.
if test "${enable_hirlam_extensions+set}" = set; then :
enableval=$enable_hirlam_extensions; if test "x$enable_hirlam_extensions" != "xno"; then :
$as_echo "#define HIRLAM_EXTENSIONS 1" >>confdefs.h
enable_hirlam_extensions=yes
else
enable_hirlam_extensions=no
fi
else
enable_hirlam_extensions=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hirlam_extensions" >&5
$as_echo "$enable_hirlam_extensions" >&6; }
if test x$enable_hirlam_extensions = 'xyes'; then
ENABLE_HIRLAM_EXTENSIONS_TRUE=
ENABLE_HIRLAM_EXTENSIONS_FALSE='#'
else
ENABLE_HIRLAM_EXTENSIONS_TRUE='#'
ENABLE_HIRLAM_EXTENSIONS_FALSE=
fi
#
 
if test x$ENABLE_NETCDF = xyes; then
ENABLE_NETCDF_TRUE=
......@@ -30073,6 +30155,10 @@ if test -z "${ENABLE_ALL_STATIC_TRUE}" && test -z "${ENABLE_ALL_STATIC_FALSE}";
as_fn_error $? "conditional \"ENABLE_ALL_STATIC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${ENABLE_HIRLAM_EXTENSIONS_TRUE}" && test -z "${ENABLE_HIRLAM_EXTENSIONS_FALSE}"; then
as_fn_error $? "conditional \"ENABLE_HIRLAM_EXTENSIONS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${ENABLE_NETCDF_TRUE}" && test -z "${ENABLE_NETCDF_FALSE}"; then
as_fn_error $? "conditional \"ENABLE_NETCDF\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
......@@ -30534,7 +30620,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by cdi $as_me 1.8.0, which was
This file was extended by cdi $as_me 1.8.1, which was
generated by GNU Autoconf 2.68. Invocation command line was
 
CONFIG_FILES = $CONFIG_FILES
......@@ -30600,7 +30686,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
cdi config.status 1.8.0
cdi config.status 1.8.1
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
 
......@@ -4,7 +4,7 @@
# autoconf 2.68
# libtool 2.4.2
AC_INIT([cdi], [1.8.0], [http://mpimet.mpg.de/cdi])
AC_INIT([cdi], [1.8.1], [http://mpimet.mpg.de/cdi])
AC_DEFINE_UNQUOTED(CDI, ["$PACKAGE_VERSION"], [CDI version])
......@@ -26,6 +26,8 @@ AM_MAINTAINER_MODE([disable])
# Check building environment
AC_CHECK_TOOL([CC],[gcc],[:])
AC_PROG_CC_C99
dnl verify the setup supports POSIX 2001
ACX_PROG_CC_POSIX([2001])
AM_PROG_CC_C_O
AC_C_RESTRICT
AC_PROG_FC
......
......@@ -119,6 +119,21 @@ set function to be called after
setup of client/server communications of configuration object.
\section*{\tt \htmlref{cdiPioConfSetRedistCache}{cdiPioConfSetRedistCache}}
\begin{verbatim}
void cdiPioConfSetRedistCache (int confResH, int doCache);
\end{verbatim}
set doCache to anything non-zero if data
for internal data exchanges is to be cached. This makes sense when
the data passed via streamWriteVarPart or streamWriteScatteredVarPart
is always decomposed statically using the same partitioning
description objects and the sequence of calls to streamWriteVarPart
or streamWriteScatteredVarPart for a stream matches the sequence
of the previous sequence (divided by pioWriteTimestep).
\section*{\tt \htmlref{cdiPioInit}{cdiPioInit}}
\begin{verbatim}
......
......@@ -122,6 +122,21 @@ set function to be called after
setup of client/server communications of configuration object.
\section*{\tt \htmlref{cdiPioConfSetRedistCache}{cdiPioConfSetRedistCache}}
\begin{verbatim}
SUBROUTINE cdiPioConfSetRedistCache (INTEGER confResH, INTEGER doCache)
\end{verbatim}
set doCache to anything non-zero if data
for internal data exchanges is to be cached. This makes sense when
the data passed via streamWriteVarPart or streamWriteScatteredVarPart
is always decomposed statically using the same partitioning
description objects and the sequence of calls to streamWriteVarPart
or streamWriteScatteredVarPart for a stream matches the sequence
of the previous sequence (divided by pioWriteTimestep).
\section*{\tt \htmlref{cdiPioInit}{cdiPioInit}}
\begin{verbatim}
......
Attributes may be associated with each variable to specify non
CDI standard properties. CDI standard properties as code, name,
units, and missing value are directly associated with each variable by
the corresponding CDI function (e.g. {\htmlref{\tt vlistDefVarName}{vlistDefVarName}}).
the corresponding CDI function (e.g. {\htmlref{\texttt{vlistDefVarName}}{vlistDefVarName}}).
An attribute has a variable to which it is assigned, a name, a type,
a length, and a sequence of one or more values.
The attributes have to be defined after the variable is created and
......@@ -17,11 +17,11 @@ by the following predefined constants:
\vspace*{3mm}
\hspace*{8mm}\begin{minipage}{15cm}
\begin{deflist}{{\large\tt CDI\_DATATYPE\_TXT \ \ }}
\item[{\large\tt CDI\_DATATYPE\_INT16}] 16-bit integer attribute
\item[{\large\tt CDI\_DATATYPE\_INT32}] 32-bit integer attribute
\item[{\large\tt CDI\_DATATYPE\_FLT32}] 32-bit floating point attribute
\item[{\large\tt CDI\_DATATYPE\_FLT64}] 64-bit floating point attribute
\item[{\large\tt CDI\_DATATYPE\_TXT}] Text attribute
\begin{deflist}{\large\texttt{CDI\_DATATYPE\_TXT \ \ }}
\item[\large\texttt{CDI\_DATATYPE\_INT16}] 16-bit integer attribute
\item[\large\texttt{CDI\_DATATYPE\_INT32}] 32-bit integer attribute
\item[\large\texttt{CDI\_DATATYPE\_FLT32}] 32-bit floating point attribute
\item[\large\texttt{CDI\_DATATYPE\_FLT64}] 64-bit floating point attribute
\item[\large\texttt{CDI\_DATATYPE\_TXT}] Text attribute
\end{deflist}
\end{minipage}
\subsection{Get number of attributes: {\tt cdiInqNatts}}
\subsection{Get number of attributes: \texttt{cdiInqNatts}}
\index{cdiInqNatts}
\label{cdiInqNatts}
The function {\tt cdiInqNatts} gets the number of attributes assigned to this variable.
The function {\texttt{cdiInqNatts}} gets the number of attributes assigned to this variable.
\subsubsection*{Usage}
......@@ -13,23 +13,23 @@ The function {\tt cdiInqNatts} gets the number of attributes assigned to this va
\end{verbatim}
\hspace*{4mm}\begin{minipage}[]{15cm}
\begin{deflist}{\tt nattsp\ }
\item[{\tt cdiID}]
CDI ID, from a previous call to {\htmlref{\tt vlistCreate}{vlistCreate}}, {\htmlref{\tt gridCreate}{gridCreate}} or {\htmlref{\tt streamInqVlist}{streamInqVlist}}.
\item[{\tt varID}]
Variable identifier, or {\tt CDI\_GLOBAL} for a global attribute.
\item[{\tt nattsp}]
\begin{deflist}{\texttt{nattsp}\ }
\item[\texttt{cdiID}]
CDI ID, from a previous call to {\htmlref{\texttt{vlistCreate}}{vlistCreate}}, {\htmlref{\texttt{gridCreate}}{gridCreate}} or {\htmlref{\texttt{streamInqVlist}}{streamInqVlist}}.
\item[\texttt{varID}]
Variable identifier, or {\texttt{CDI\_GLOBAL}} for a global attribute.
\item[\texttt{nattsp}]
Pointer to location for returned number of attributes.
\end{deflist}
\end{minipage}
\subsection{Get information about an attribute: {\tt cdiInqAtt}}
\subsection{Get information about an attribute: \texttt{cdiInqAtt}}
\index{cdiInqAtt}
\label{cdiInqAtt}
The function {\tt cdiInqAtt} gets information about an attribute.
The function {\texttt{cdiInqAtt}} gets information about an attribute.
\subsubsection*{Usage}
......@@ -38,31 +38,31 @@ The function {\tt cdiInqAtt} gets information about an attribute.
\end{verbatim}
\hspace*{4mm}\begin{minipage}[]{15cm}
\begin{deflist}{\tt attnum\ }
\item[{\tt cdiID}]
CDI ID, from a previous call to {\htmlref{\tt vlistCreate}{vlistCreate}}, {\htmlref{\tt gridCreate}{gridCreate}} or {\htmlref{\tt streamInqVlist}{streamInqVlist}}.
\item[{\tt varID}]
Variable identifier, or {\tt CDI\_GLOBAL} for a global attribute.
\item[{\tt attnum}]
\begin{deflist}{\texttt{attnum}\ }
\item[\texttt{cdiID}]
CDI ID, from a previous call to {\htmlref{\texttt{vlistCreate}}{vlistCreate}}, {\htmlref{\texttt{gridCreate}}{gridCreate}} or {\htmlref{\texttt{streamInqVlist}}{streamInqVlist}}.
\item[\texttt{varID}]
Variable identifier, or {\texttt{CDI\_GLOBAL}} for a global attribute.
\item[\texttt{attnum}]
Attribute number (from 0 to natts-1).
\item[{\tt name}]
\item[\texttt{name}]
Pointer to the location for the returned attribute name. The caller must allocate space for the
returned string. The maximum possible length, in characters, of
the string is given by the predefined constant {\tt CDI\_MAX\_NAME}.
\item[{\tt typep}]
the string is given by the predefined constant {\texttt{CDI\_MAX\_NAME}}.
\item[\texttt{typep}]
Pointer to location for returned attribute type.
\item[{\tt lenp}]
\item[\texttt{lenp}]
Pointer to location for returned attribute number.
\end{deflist}
\end{minipage}
\subsection{Define an integer attribute: {\tt cdiDefAttInt}}
\subsection{Define an integer attribute: \texttt{cdiDefAttInt}}
\index{cdiDefAttInt}
\label{cdiDefAttInt}
The function {\tt cdiDefAttInt} defines an integer attribute.
The function {\texttt{cdiDefAttInt}} defines an integer attribute.
\subsubsection*{Usage}
......@@ -72,29 +72,29 @@ The function {\tt cdiDefAttInt} defines an integer attribute.
\end{verbatim}
\hspace*{4mm}\begin{minipage}[]{15cm}
\begin{deflist}{\tt cdiID\ }
\item[{\tt cdiID}]
CDI ID, from a previous call to {\htmlref{\tt vlistCreate}{vlistCreate}} or {\htmlref{\tt gridCreate}{gridCreate}}.
\item[{\tt varID}]
Variable identifier, or {\tt CDI\_GLOBAL} for a global attribute.
\item[{\tt name}]
\begin{deflist}{\texttt{cdiID}\ }
\item[\texttt{cdiID}]
CDI ID, from a previous call to {\htmlref{\texttt{vlistCreate}}{vlistCreate}} or {\htmlref{\texttt{gridCreate}}{gridCreate}}.
\item[\texttt{varID}]
Variable identifier, or {\texttt{CDI\_GLOBAL}} for a global attribute.
\item[\texttt{name}]
Attribute name.
\item[{\tt type}]
External data type ({\tt CDI\_DATATYPE\_INT16} or {\tt CDI\_DATATYPE\_INT32}).
\item[{\tt len}]
\item[\texttt{type}]
External data type ({\texttt{CDI\_DATATYPE\_INT16}} or {\texttt{CDI\_DATATYPE\_INT32}}).
\item[\texttt{len}]
Number of values provided for the attribute.
\item[{\tt ip}]
\item[\texttt{ip}]
Pointer to one or more integer values.
\end{deflist}
\end{minipage}
\subsection{Get the value(s) of an integer attribute: {\tt cdiInqAttInt}}
\subsection{Get the value(s) of an integer attribute: \texttt{cdiInqAttInt}}
\index{cdiInqAttInt}
\label{cdiInqAttInt}
The function {\tt cdiInqAttInt} gets the values(s) of an integer attribute.
The function {\texttt{cdiInqAttInt}} gets the values(s) of an integer attribute.
\subsubsection*{Usage}
......@@ -103,27 +103,27 @@ The function {\tt cdiInqAttInt} gets the values(s) of an integer attribute.
\end{verbatim}
\hspace*{4mm}\begin{minipage}[]{15cm}
\begin{deflist}{\tt cdiID\ }
\item[{\tt cdiID}]
CDI ID, from a previous call to {\htmlref{\tt vlistCreate}{vlistCreate}}, {\htmlref{\tt gridCreate}{gridCreate}} or {\htmlref{\tt streamInqVlist}{streamInqVlist}}.
\item[{\tt varID}]
Variable identifier, or {\tt CDI\_GLOBAL} for a global attribute.
\item[{\tt name}]
\begin{deflist}{\texttt{cdiID}\ }
\item[\texttt{cdiID}]
CDI ID, from a previous call to {\htmlref{\texttt{vlistCreate}}{vlistCreate}}, {\htmlref{\texttt{gridCreate}}{gridCreate}} or {\htmlref{\texttt{streamInqVlist}}{streamInqVlist}}.
\item[\texttt{varID}]
Variable identifier, or {\texttt{CDI\_GLOBAL}} for a global attribute.
\item[\texttt{name}]
Attribute name.
\item[{\tt mlen}]
\item[\texttt{mlen}]
Number of allocated values provided for the attribute.
\item[{\tt ip}]
\item[\texttt{ip}]
Pointer location for returned integer attribute value(s).
\end{deflist}
\end{minipage}
\subsection{Define a floating point attribute: {\tt cdiDefAttFlt}}
\subsection{Define a floating point attribute: \texttt{cdiDefAttFlt}}
\index{cdiDefAttFlt}
\label{cdiDefAttFlt}
The function {\tt cdiDefAttFlt} defines a floating point attribute.
The function {\texttt{cdiDefAttFlt}} defines a floating point attribute.
\subsubsection*{Usage}
......@@ -133,29 +133,29 @@ The function {\tt cdiDefAttFlt} defines a floating point attribute.
\end{verbatim}