567 lines
17 KiB
C
567 lines
17 KiB
C
/* file: cvt.h */
|
||
|
||
/*
|
||
**
|
||
** COPYRIGHT (c) 1989, 1990 BY
|
||
** DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS.
|
||
** ALL RIGHTS RESERVED.
|
||
**
|
||
** THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
|
||
** ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
|
||
** INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
|
||
** COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
|
||
** OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
|
||
** TRANSFERRED.
|
||
**
|
||
** THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
|
||
** AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
|
||
** CORPORATION.
|
||
**
|
||
** DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
|
||
** SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
|
||
**
|
||
*/
|
||
|
||
/*
|
||
**++
|
||
** Facility:
|
||
**
|
||
** CVT Run-Time Library
|
||
**
|
||
** Abstract:
|
||
**
|
||
** This module contains the public include file for the cvt_* routines.
|
||
** This module contains rountine interfaces as well as necessary
|
||
** definitions.
|
||
**
|
||
** Author:
|
||
**
|
||
** Math RTL
|
||
**
|
||
** Creation Date: December 5, 1989.
|
||
**
|
||
** Modification History:
|
||
**
|
||
** 1-001 Original created. MRTL 5-Dec-1989.
|
||
** 1-002 Add GEM FORTRAN stuff. TS 27-Mar-1990.
|
||
**
|
||
**--
|
||
*/
|
||
|
||
|
||
#ifndef CVT
|
||
#define CVT 1
|
||
|
||
/*
|
||
*
|
||
* Type Definitions
|
||
*
|
||
*/
|
||
|
||
typedef unsigned char CVT_BYTE;
|
||
typedef CVT_BYTE *CVT_BYTE_PTR;
|
||
|
||
typedef CVT_BYTE CVT_VAX_F[4];
|
||
typedef CVT_BYTE CVT_VAX_D[8];
|
||
typedef CVT_BYTE CVT_VAX_G[8];
|
||
typedef CVT_BYTE CVT_VAX_H[16];
|
||
typedef CVT_BYTE CVT_IEEE_SINGLE[4];
|
||
typedef CVT_BYTE CVT_IEEE_DOUBLE[8];
|
||
typedef CVT_BYTE CVT_IBM_SHORT[4];
|
||
typedef CVT_BYTE CVT_IBM_LONG[8];
|
||
typedef CVT_BYTE CVT_CRAY[8];
|
||
typedef float CVT_SINGLE;
|
||
typedef double CVT_DOUBLE;
|
||
typedef long CVT_SIGNED_INT;
|
||
typedef unsigned long CVT_UNSIGNED_INT;
|
||
typedef unsigned long CVT_STATUS;
|
||
|
||
|
||
/*
|
||
*
|
||
* Constant Definitions
|
||
*
|
||
*/
|
||
|
||
#define CVT_C_ROUND_TO_NEAREST 1
|
||
#define CVT_C_TRUNCATE 2
|
||
#define CVT_C_ROUND_TO_POS 4
|
||
#define CVT_C_ROUND_TO_NEG 8
|
||
#define CVT_C_VAX_ROUNDING 16
|
||
#define CVT_C_BIG_ENDIAN 32
|
||
#define CVT_C_ERR_UNDERFLOW 64
|
||
#define CVT_C_ZERO_BLANKS 128
|
||
#define CVT_C_SKIP_BLANKS 256
|
||
#define CVT_C_SKIP_UNDERSCORES 512
|
||
#define CVT_C_SKIP_UNDERSCORE 512
|
||
#define CVT_C_SKIP_TABS 1024
|
||
#define CVT_C_ONLY_E 2048
|
||
#define CVT_C_EXP_LETTER_REQUIRED 4096
|
||
#define CVT_C_FORCE_SCALE 8192
|
||
#define CVT_C_EXPONENTIAL_FORMAT 16384
|
||
#define CVT_C_FORCE_PLUS 32768
|
||
#define CVT_C_FORCE_EXPONENT_SIGN 65536
|
||
#define CVT_C_SUPPRESS_TRAILING_ZEROES 131072
|
||
#define CVT_C_FORCE_EXPONENTIAL_FORMAT 262144
|
||
#define CVT_C_FORCE_FRACTIONAL_FORMAT 524288
|
||
#define CVT_C_EXPONENT_D 1048576
|
||
#define CVT_C_EXPONENT_E 2097152
|
||
#define CVT_C_SEMANTICS_FORTRAN 4194304
|
||
#define CVT_C_SEMANTICS_PASCAL 8388608
|
||
|
||
|
||
#define cvt__normal 1
|
||
#define cvt__invalid_character 2
|
||
#define cvt__invalid_option 3
|
||
#define cvt__invalid_radix 4
|
||
#define cvt__invalid_size 5
|
||
#define cvt__invalid_value 6
|
||
#define cvt__neg_infinity 7
|
||
#define cvt__output_conversion_error 8
|
||
#define cvt__overflow 9
|
||
#define cvt__pos_infinity 10
|
||
#define cvt__underflow 11
|
||
#define cvt__input_conversion_error 12
|
||
|
||
#define cvt_s_normal cvt__normal
|
||
#define cvt_s_invalid_character cvt__invalid_character
|
||
#define cvt_s_invalid_option cvt__invalid_option
|
||
#define cvt_s_invalid_radix cvt__invalid_radix
|
||
#define cvt_s_invalid_size cvt__invalid_size
|
||
#define cvt_s_invalid_value cvt__invalid_value
|
||
#define cvt_s_neg_infinity cvt__neg_infinity
|
||
#define cvt_s_input_conversion_error cvt__input_conversion_error
|
||
#define cvt_s_output_conversion_error cvt__output_conversion_error
|
||
#define cvt_s_overflow cvt__overflow
|
||
#define cvt_s_pos_infinity cvt__pos_infinity
|
||
#define cvt_s_underflow cvt__underflow
|
||
|
||
#define CVT_C_BIN 2
|
||
#define CVT_C_OCT 8
|
||
#define CVT_C_DEC 10
|
||
#define CVT_C_HEX 16
|
||
|
||
|
||
/*
|
||
*
|
||
* Routine interfaces
|
||
*
|
||
*/
|
||
|
||
#ifndef PCC
|
||
|
||
extern void cvt_cray_to_vax_f (
|
||
CVT_CRAY input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_F output_value
|
||
);
|
||
|
||
extern void cvt_cray_to_vax_d (
|
||
CVT_CRAY input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_D output_value
|
||
);
|
||
|
||
extern void cvt_cray_to_vax_g (
|
||
CVT_CRAY input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_G output_value
|
||
);
|
||
|
||
extern void cvt_cray_to_vax_h (
|
||
CVT_CRAY input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_H output_value
|
||
);
|
||
|
||
extern void cvt_cray_to_ieee_single (
|
||
CVT_CRAY input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IEEE_SINGLE output_value
|
||
);
|
||
|
||
extern void cvt_cray_to_ieee_double (
|
||
CVT_CRAY input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IEEE_DOUBLE output_value
|
||
);
|
||
|
||
|
||
|
||
|
||
extern void cvt_ibm_short_to_vax_f (
|
||
CVT_IBM_SHORT input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_F output_value
|
||
);
|
||
|
||
extern void cvt_ibm_short_to_ieee_single (
|
||
CVT_IBM_SHORT input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IEEE_SINGLE output_value
|
||
);
|
||
|
||
|
||
|
||
|
||
extern void cvt_ibm_long_to_vax_d (
|
||
CVT_IBM_LONG input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_D output_value
|
||
);
|
||
|
||
extern void cvt_ibm_long_to_vax_g (
|
||
CVT_IBM_LONG input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_G output_value
|
||
);
|
||
|
||
extern void cvt_ibm_long_to_vax_h (
|
||
CVT_IBM_LONG input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_H output_value
|
||
);
|
||
|
||
extern void cvt_ibm_long_to_ieee_double (
|
||
CVT_IBM_LONG input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IEEE_DOUBLE output_value
|
||
);
|
||
|
||
|
||
|
||
|
||
extern void cvt_ieee_single_endian (
|
||
CVT_IEEE_SINGLE input_value,
|
||
CVT_IEEE_SINGLE output_value
|
||
);
|
||
|
||
extern void cvt_ieee_single_to_cray (
|
||
CVT_IEEE_SINGLE input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_CRAY output_value
|
||
);
|
||
|
||
extern void cvt_ieee_single_to_ibm_short (
|
||
CVT_IEEE_SINGLE input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IBM_SHORT output_value
|
||
);
|
||
|
||
extern void cvt_ieee_single_to_vax_f (
|
||
CVT_IEEE_SINGLE input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_F output_value
|
||
);
|
||
|
||
|
||
|
||
|
||
extern void cvt_ieee_double_endian (
|
||
CVT_IEEE_DOUBLE input_value,
|
||
CVT_IEEE_DOUBLE output_value
|
||
);
|
||
|
||
extern void cvt_ieee_double_to_cray (
|
||
CVT_IEEE_DOUBLE input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_CRAY output_value
|
||
);
|
||
|
||
extern void cvt_ieee_double_to_ibm_long (
|
||
CVT_IEEE_DOUBLE input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IBM_LONG output_value
|
||
);
|
||
|
||
extern void cvt_ieee_double_to_vax_d (
|
||
CVT_IEEE_DOUBLE input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_D output_value
|
||
);
|
||
|
||
extern void cvt_ieee_double_to_vax_g (
|
||
CVT_IEEE_DOUBLE input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_G output_value
|
||
);
|
||
|
||
extern void cvt_ieee_double_to_vax_h (
|
||
CVT_IEEE_DOUBLE input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_H output_value
|
||
);
|
||
|
||
|
||
|
||
|
||
extern void cvt_vax_f_to_cray (
|
||
CVT_VAX_F input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_CRAY output_value
|
||
);
|
||
|
||
extern void cvt_vax_f_to_ibm_short (
|
||
CVT_VAX_F input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IBM_SHORT output_value
|
||
);
|
||
|
||
extern void cvt_vax_f_to_ieee_single (
|
||
CVT_VAX_F input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IEEE_SINGLE output_value
|
||
);
|
||
|
||
|
||
|
||
|
||
extern void cvt_vax_d_to_cray (
|
||
CVT_VAX_D input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_CRAY output_value
|
||
);
|
||
|
||
extern void cvt_vax_d_to_ibm_long (
|
||
CVT_VAX_D input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IBM_LONG output_value
|
||
);
|
||
|
||
extern void cvt_vax_d_to_ieee_double (
|
||
CVT_VAX_D input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IEEE_DOUBLE output_value
|
||
);
|
||
|
||
|
||
|
||
|
||
extern void cvt_vax_g_to_cray (
|
||
CVT_VAX_G input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_CRAY output_value
|
||
);
|
||
|
||
extern void cvt_vax_g_to_ibm_long (
|
||
CVT_VAX_G input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IBM_LONG output_value
|
||
);
|
||
|
||
extern void cvt_vax_g_to_ieee_double (
|
||
CVT_VAX_G input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IEEE_DOUBLE output_value
|
||
);
|
||
|
||
|
||
|
||
|
||
extern void cvt_vax_h_to_cray (
|
||
CVT_VAX_H input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_CRAY output_value
|
||
);
|
||
|
||
extern void cvt_vax_h_to_ibm_long (
|
||
CVT_VAX_H input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_IBM_LONG output_value
|
||
);
|
||
|
||
extern void cvt_vax_h_to_ieee_double (
|
||
CVT_VAX_H input_value,
|
||
CVT_SIGNED_INT options,
|
||
CVT_VAX_H output_value
|
||
);
|
||
|
||
|
||
|
||
|
||
extern CVT_SINGLE cvt_integer_to_single(
|
||
CVT_SIGNED_INT, /* input_value */
|
||
CVT_SIGNED_INT /* options */
|
||
);
|
||
|
||
extern CVT_DOUBLE cvt_integer_to_double(
|
||
CVT_SIGNED_INT /* input_value */
|
||
);
|
||
|
||
#ifdef VAX
|
||
extern CVT_SIGNED_INT cvt_single_to_integer(
|
||
CVT_DOUBLE, /* input_value */
|
||
CVT_SIGNED_INT /* options */
|
||
);
|
||
#else
|
||
extern CVT_SIGNED_INT cvt_single_to_integer(
|
||
CVT_SINGLE, /* input_value */
|
||
CVT_SIGNED_INT /* options */
|
||
);
|
||
#endif
|
||
|
||
extern CVT_SIGNED_INT cvt_double_to_integer(
|
||
CVT_DOUBLE, /* input_value */
|
||
CVT_SIGNED_INT /* options */
|
||
);
|
||
|
||
#ifdef VAX
|
||
extern CVT_DOUBLE cvt_single_to_double(
|
||
CVT_DOUBLE /* input_value */
|
||
);
|
||
#else
|
||
extern CVT_DOUBLE cvt_single_to_double(
|
||
CVT_SINGLE /* input_value */
|
||
);
|
||
#endif
|
||
|
||
extern CVT_SINGLE cvt_double_to_single(
|
||
CVT_DOUBLE, /* input_value */
|
||
CVT_SIGNED_INT /* options */
|
||
);
|
||
|
||
|
||
|
||
extern void cvt_integer_endian (
|
||
CVT_UNSIGNED_INT, /* input_value */
|
||
CVT_UNSIGNED_INT * /* output_value */
|
||
);
|
||
|
||
extern void cvt_data_endian (
|
||
unsigned char *, /* input_value */
|
||
CVT_SIGNED_INT, /* value_size */
|
||
unsigned char * /* output_value */
|
||
);
|
||
|
||
extern CVT_STATUS cvt_text_to_integer(
|
||
char *, /* input_string */
|
||
CVT_SIGNED_INT, /* string_size */
|
||
CVT_SIGNED_INT, /* options */
|
||
CVT_SIGNED_INT * /* resultant value */
|
||
);
|
||
|
||
extern CVT_STATUS cvt_text_to_unsigned(
|
||
char *, /* input_string */
|
||
CVT_SIGNED_INT, /* string_size */
|
||
CVT_SIGNED_INT, /* radix */
|
||
CVT_SIGNED_INT, /* options */
|
||
CVT_UNSIGNED_INT * /* resultant value */
|
||
);
|
||
|
||
extern CVT_STATUS cvt_integer_to_text(
|
||
CVT_SIGNED_INT, /* input_value */
|
||
CVT_SIGNED_INT, /* string_size */
|
||
CVT_SIGNED_INT, /* number_of_digits */
|
||
CVT_SIGNED_INT, /* options */
|
||
char * /* resultant_string */
|
||
);
|
||
|
||
extern CVT_STATUS cvt_unsigned_to_text(
|
||
CVT_UNSIGNED_INT, /* input_value */
|
||
CVT_SIGNED_INT, /* string_size */
|
||
CVT_SIGNED_INT, /* radix */
|
||
CVT_SIGNED_INT, /* number_of_digits */
|
||
char * /* resultant_string */
|
||
);
|
||
|
||
extern CVT_STATUS cvt_text_to_data(
|
||
char *, /* input_string */
|
||
CVT_SIGNED_INT, /* string_size */
|
||
CVT_SIGNED_INT, /* value_size */
|
||
CVT_SIGNED_INT, /* radix */
|
||
CVT_SIGNED_INT, /* options */
|
||
unsigned char *); /* resultant value */
|
||
|
||
extern CVT_STATUS cvt_data_to_text(
|
||
unsigned char *, /* input_value */
|
||
CVT_SIGNED_INT, /* string_size */
|
||
CVT_SIGNED_INT, /* value_size */
|
||
CVT_SIGNED_INT, /* radix */
|
||
CVT_SIGNED_INT, /* number_of_digits */
|
||
char *); /* resultant_string */
|
||
|
||
extern CVT_STATUS cvt_text_to_boolean (
|
||
char *, /* input_string */
|
||
CVT_SIGNED_INT, /* string_size */
|
||
CVT_SIGNED_INT, /* options */
|
||
CVT_SIGNED_INT *); /* resultant value */
|
||
|
||
extern CVT_STATUS cvt_boolean_to_text (
|
||
CVT_SIGNED_INT, /* input_value */
|
||
CVT_SIGNED_INT, /* string_size */
|
||
CVT_SIGNED_INT, /* options */
|
||
char *); /* resultant_string */
|
||
|
||
#else // PCC
|
||
|
||
extern void cvt_cray_to_vax_f ();
|
||
extern void cvt_cray_to_vax_d ();
|
||
extern void cvt_cray_to_vax_g ();
|
||
extern void cvt_cray_to_vax_h ();
|
||
extern void cvt_cray_to_ieee_single ();
|
||
extern void cvt_cray_to_ieee_double ();
|
||
|
||
extern void cvt_ibm_short_to_vax_f ();
|
||
extern void cvt_ibm_short_to_ieee_single ();
|
||
|
||
extern void cvt_ibm_long_to_vax_d ();
|
||
extern void cvt_ibm_long_to_vax_g ();
|
||
extern void cvt_ibm_long_to_vax_h ();
|
||
extern void cvt_ibm_long_to_ieee_double ();
|
||
|
||
extern void cvt_ieee_single_endian ();
|
||
extern void cvt_ieee_single_to_cray ();
|
||
extern void cvt_ieee_single_to_ibm_short ();
|
||
extern void cvt_ieee_single_to_vax_f ();
|
||
|
||
extern void cvt_ieee_double_endian ();
|
||
extern void cvt_ieee_double_to_cray ();
|
||
extern void cvt_ieee_double_to_ibm_long ();
|
||
extern void cvt_ieee_double_to_vax_d ();
|
||
extern void cvt_ieee_double_to_vax_g ();
|
||
extern void cvt_ieee_double_to_vax_h ();
|
||
|
||
extern void cvt_vax_f_to_cray ();
|
||
extern void cvt_vax_f_to_ibm_short ();
|
||
extern void cvt_vax_f_to_ieee_single ();
|
||
|
||
extern void cvt_vax_d_to_cray ();
|
||
extern void cvt_vax_d_to_ibm_long ();
|
||
extern void cvt_vax_d_to_ieee_double ();
|
||
|
||
extern void cvt_vax_g_to_cray ();
|
||
extern void cvt_vax_g_to_ibm_long ();
|
||
extern void cvt_vax_g_to_ieee_double ();
|
||
|
||
extern void cvt_vax_h_to_cray ();
|
||
extern void cvt_vax_h_to_ibm_long ();
|
||
extern void cvt_vax_h_to_ieee_double ();
|
||
|
||
extern void cvt_integer_endian ();
|
||
extern void cvt_data_endian ();
|
||
|
||
extern CVT_SINGLE cvt_integer_to_single();
|
||
extern CVT_DOUBLE cvt_integer_to_double();
|
||
|
||
extern CVT_SIGNED_INT cvt_single_to_integer();
|
||
extern CVT_SIGNED_INT cvt_double_to_integer();
|
||
|
||
extern CVT_DOUBLE cvt_single_to_double();
|
||
extern CVT_SINGLE cvt_double_to_single();
|
||
|
||
extern CVT_STATUS cvt_text_to_integer();
|
||
extern CVT_STATUS cvt_text_to_unsigned();
|
||
|
||
extern CVT_STATUS cvt_integer_to_text();
|
||
extern CVT_STATUS cvt_unsigned_to_text();
|
||
|
||
extern CVT_STATUS cvt_text_to_boolean();
|
||
extern CVT_STATUS cvt_text_to_data();
|
||
|
||
extern CVT_STATUS cvt_boolean_to_text();
|
||
extern CVT_STATUS cvt_data_to_text();
|
||
|
||
#endif
|
||
#endif /* end of CVT.H */
|
||
|