NT4/private/rpc/ndr20/cvt.h

567 lines
17 KiB
C
Raw Permalink Normal View History

2001-01-01 00:00:00 +01:00
/* 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 */