cdds_put - put one field into a DDS type buffer
SYNOPSIS
#include "cdds.h"
int cdds_putxx(bin, tag, out_buf, in_array, count);
-
BIN_TAG bin
FIELD_TAG tag
const void *out_buf
HostType *in_array
int count
DESCRIPTION
These functions put data into a type field
and from an array variable.
The data is converted from the host array type,
into the type defined for the field.
The array type is implied by the function name suffix.
Vectors are truncated or padded, depending upon the
source and destination count.
INPUT
The first three arguments describe an output field within a type buffer.
bin is a binary tag, previously obtained from
cdds_open.
tag identifies a specific field associated with bin
obtained from fdds_member. Note that there is
a distinct difference between tags generated from different bin
values. This means that you should not be using a tag from the
in_bin for anything related to the out_bin. If tag is
zero, the default target (trace) is used.
out_buf is the output type buffer into which the output field
is found.
The last two arguments describe an input array.
The type of in_array is implied by the function name suffix.
The number of elements is specified by count.
OUTPUT
The put functions copy (or convert) data from an input array
into the output field.
Vectors are truncated or padded,
depending upon the source and destination count.
The function return value is count, or zero if an error occurred.
A simple byte copy is performed, if the binary formats are the same.
The put functions convert between most numeric representations.
The allowed combinations are implementation dependent.
The functions also convert between ascii and ebcdic character formats.
Byte fields can be copied, without conversion, from any array.
The cdds_put function copies an array into any field type,
without conversion.
Conversion is not allowed between numeric and character types.
If conversion is not possible, an error is reported and
the output field is not changed.
-
Function HostType in_array Pad
cdds_put char zero
cdds_putcs char null terminated
cdds_putcb char blank
cdds_puti int zero
cdds_puts short zero
cdds_putl long zero
cdds_putu unsigned zero
cdds_putus unsigned short zero
cdds_putul unsigned long zero
cdds_putf float zero
cdds_putff float zero (USP fake float)
cdds_putd double zero
C assignment rules are used to convert float arrays to integer
and unsigned fields. Character arrays passed by cdds_putcb
are assumed to be padded with blanks. Trailing pad characters are
ignored during put processing; they effectively shorten input
character arrays. A null character, within a cdds_putcs
character array, effectively reduces its count.
cdds_putff stuffs floats into consecutive 4-bytes (fake floats).
EXAMPLES
BIN_TAG out_bin;
FIELD_TAG tag;
char *out_buf;
const int *in_array;
...
tag = cdds_member(out_bin, 0, "TagName");
...
// Store 100 integers of "TagName" header from in_array in out_buf at correct offsets
cdds_puti(out_bin, tag, out_buf, in_array, 100);
// Write a single trace to output
cddx_write(out_bin, out_buf, 1);
SEE ALSO
cdds_get Get one field from a buffer
AUTHOR
R. L. Selzler, EPTG (Oct 1995)
Jerry Ehlers, BP America (May 2003)
|