mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 12:00:11 -05:00
317 lines
11 KiB
C
317 lines
11 KiB
C
/* do not edit automatically generated by mc from StringConvert. */
|
|
/* StringConvert.def provides functions to convert numbers to and from strings.
|
|
|
|
Copyright (C) 2001-2026 Free Software Foundation, Inc.
|
|
Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
|
|
|
|
This file is part of GNU Modula-2.
|
|
|
|
GNU Modula-2 is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3, or (at your option)
|
|
any later version.
|
|
|
|
GNU Modula-2 is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
Under Section 7 of GPL version 3, you are granted additional
|
|
permissions described in the GCC Runtime Library Exception, version
|
|
3.1, as published by the Free Software Foundation.
|
|
|
|
You should have received a copy of the GNU General Public License and
|
|
a copy of the GCC Runtime Library Exception along with this program;
|
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
|
|
#if !defined (_StringConvert_H)
|
|
# define _StringConvert_H
|
|
|
|
# ifdef __cplusplus
|
|
extern "C" {
|
|
# endif
|
|
#include <stdbool.h>
|
|
# if !defined (PROC_D)
|
|
# define PROC_D
|
|
typedef void (*PROC_t) (void);
|
|
typedef struct { PROC_t proc; } PROC;
|
|
# endif
|
|
|
|
# include "GDynamicStrings.h"
|
|
|
|
# if defined (_StringConvert_C)
|
|
# define EXTERN
|
|
# else
|
|
# define EXTERN extern
|
|
# endif
|
|
|
|
|
|
/*
|
|
IntegerToString - converts INTEGER, i, into a String. The field with
|
|
can be specified if non zero. Leading characters
|
|
are defined by padding and this function will
|
|
prepend a + if sign is set to TRUE.
|
|
The base allows the caller to generate binary,
|
|
octal, decimal, hexidecimal numbers.
|
|
The value of lower is only used when hexidecimal
|
|
numbers are generated and if TRUE then digits
|
|
abcdef are used, and if FALSE then ABCDEF are used.
|
|
*/
|
|
|
|
EXTERN DynamicStrings_String StringConvert_IntegerToString (int i, unsigned int width, char padding, bool sign, unsigned int base, bool lower);
|
|
|
|
/*
|
|
CardinalToString - converts CARDINAL, c, into a String. The field
|
|
width can be specified if non zero. Leading
|
|
characters are defined by padding.
|
|
The base allows the caller to generate binary,
|
|
octal, decimal, hexidecimal numbers.
|
|
The value of lower is only used when hexidecimal
|
|
numbers are generated and if TRUE then digits
|
|
abcdef are used, and if FALSE then ABCDEF are used.
|
|
*/
|
|
|
|
EXTERN DynamicStrings_String StringConvert_CardinalToString (unsigned int c, unsigned int width, char padding, unsigned int base, bool lower);
|
|
|
|
/*
|
|
StringToInteger - converts a string, s, of, base, into an INTEGER.
|
|
Leading white space is ignored. It stops converting
|
|
when either the string is exhausted or if an illegal
|
|
numeral is found.
|
|
The parameter found is set TRUE if a number was found.
|
|
*/
|
|
|
|
EXTERN int StringConvert_StringToInteger (DynamicStrings_String s, unsigned int base, bool *found);
|
|
|
|
/*
|
|
StringToCardinal - converts a string, s, of, base, into a CARDINAL.
|
|
Leading white space is ignored. It stops converting
|
|
when either the string is exhausted or if an illegal
|
|
numeral is found.
|
|
The parameter found is set TRUE if a number was found.
|
|
*/
|
|
|
|
EXTERN unsigned int StringConvert_StringToCardinal (DynamicStrings_String s, unsigned int base, bool *found);
|
|
|
|
/*
|
|
LongIntegerToString - converts LONGINT, i, into a String. The field with
|
|
can be specified if non zero. Leading characters
|
|
are defined by padding and this function will
|
|
prepend a + if sign is set to TRUE.
|
|
The base allows the caller to generate binary,
|
|
octal, decimal, hexidecimal numbers.
|
|
The value of lower is only used when hexidecimal
|
|
numbers are generated and if TRUE then digits
|
|
abcdef are used, and if FALSE then ABCDEF are used.
|
|
*/
|
|
|
|
EXTERN DynamicStrings_String StringConvert_LongIntegerToString (long int i, unsigned int width, char padding, bool sign, unsigned int base, bool lower);
|
|
|
|
/*
|
|
StringToLongInteger - converts a string, s, of, base, into an LONGINT.
|
|
Leading white space is ignored. It stops converting
|
|
when either the string is exhausted or if an illegal
|
|
numeral is found.
|
|
The parameter found is set TRUE if a number was found.
|
|
*/
|
|
|
|
EXTERN long int StringConvert_StringToLongInteger (DynamicStrings_String s, unsigned int base, bool *found);
|
|
|
|
/*
|
|
LongCardinalToString - converts LONGCARD, c, into a String. The field
|
|
width can be specified if non zero. Leading
|
|
characters are defined by padding.
|
|
The base allows the caller to generate binary,
|
|
octal, decimal, hexidecimal numbers.
|
|
The value of lower is only used when hexidecimal
|
|
numbers are generated and if TRUE then digits
|
|
abcdef are used, and if FALSE then ABCDEF are used.
|
|
*/
|
|
|
|
EXTERN DynamicStrings_String StringConvert_LongCardinalToString (long unsigned int c, unsigned int width, char padding, unsigned int base, bool lower);
|
|
|
|
/*
|
|
StringToLongCardinal - converts a string, s, of, base, into a LONGCARD.
|
|
Leading white space is ignored. It stops converting
|
|
when either the string is exhausted or if an illegal
|
|
numeral is found.
|
|
The parameter found is set TRUE if a number was found.
|
|
*/
|
|
|
|
EXTERN long unsigned int StringConvert_StringToLongCardinal (DynamicStrings_String s, unsigned int base, bool *found);
|
|
|
|
/*
|
|
ShortCardinalToString - converts SHORTCARD, c, into a String. The field
|
|
width can be specified if non zero. Leading
|
|
characters are defined by padding.
|
|
The base allows the caller to generate binary,
|
|
octal, decimal, hexidecimal numbers.
|
|
The value of lower is only used when hexidecimal
|
|
numbers are generated and if TRUE then digits
|
|
abcdef are used, and if FALSE then ABCDEF are used.
|
|
*/
|
|
|
|
EXTERN DynamicStrings_String StringConvert_ShortCardinalToString (short unsigned int c, unsigned int width, char padding, unsigned int base, bool lower);
|
|
|
|
/*
|
|
StringToShortCardinal - converts a string, s, of, base, into a SHORTCARD.
|
|
Leading white space is ignored. It stops converting
|
|
when either the string is exhausted or if an illegal
|
|
numeral is found.
|
|
The parameter found is set TRUE if a number was found.
|
|
*/
|
|
|
|
EXTERN short unsigned int StringConvert_StringToShortCardinal (DynamicStrings_String s, unsigned int base, bool *found);
|
|
|
|
/*
|
|
stoi - decimal string to INTEGER
|
|
*/
|
|
|
|
EXTERN int StringConvert_stoi (DynamicStrings_String s);
|
|
|
|
/*
|
|
itos - integer to decimal string.
|
|
*/
|
|
|
|
EXTERN DynamicStrings_String StringConvert_itos (int i, unsigned int width, char padding, bool sign);
|
|
|
|
/*
|
|
ctos - cardinal to decimal string.
|
|
*/
|
|
|
|
EXTERN DynamicStrings_String StringConvert_ctos (unsigned int c, unsigned int width, char padding);
|
|
|
|
/*
|
|
stoc - decimal string to CARDINAL
|
|
*/
|
|
|
|
EXTERN unsigned int StringConvert_stoc (DynamicStrings_String s);
|
|
|
|
/*
|
|
hstoi - hexidecimal string to INTEGER
|
|
*/
|
|
|
|
EXTERN int StringConvert_hstoi (DynamicStrings_String s);
|
|
|
|
/*
|
|
ostoi - octal string to INTEGER
|
|
*/
|
|
|
|
EXTERN int StringConvert_ostoi (DynamicStrings_String s);
|
|
|
|
/*
|
|
bstoi - binary string to INTEGER
|
|
*/
|
|
|
|
EXTERN int StringConvert_bstoi (DynamicStrings_String s);
|
|
|
|
/*
|
|
hstoc - hexidecimal string to CARDINAL
|
|
*/
|
|
|
|
EXTERN unsigned int StringConvert_hstoc (DynamicStrings_String s);
|
|
|
|
/*
|
|
ostoc - octal string to CARDINAL
|
|
*/
|
|
|
|
EXTERN unsigned int StringConvert_ostoc (DynamicStrings_String s);
|
|
|
|
/*
|
|
bstoc - binary string to CARDINAL
|
|
*/
|
|
|
|
EXTERN unsigned int StringConvert_bstoc (DynamicStrings_String s);
|
|
|
|
/*
|
|
StringToLongreal - returns a LONGREAL and sets found to TRUE
|
|
if a legal number is seen.
|
|
*/
|
|
|
|
EXTERN long double StringConvert_StringToLongreal (DynamicStrings_String s, bool *found);
|
|
|
|
/*
|
|
LongrealToString - converts a LONGREAL number, Real, which has,
|
|
TotalWidth, and FractionWidth into a string.
|
|
|
|
So for example:
|
|
|
|
LongrealToString(1.0, 4, 2) -> '1.00'
|
|
LongrealToString(12.3, 5, 2) -> '12.30'
|
|
LongrealToString(12.3, 6, 2) -> ' 12.30'
|
|
LongrealToString(12.3, 6, 3) -> '12.300'
|
|
|
|
if total width is too small then the fraction
|
|
becomes truncated.
|
|
|
|
LongrealToString(12.3, 5, 3) -> '12.30'
|
|
|
|
If TotalWidth is 0 then the function
|
|
will return the value of x which is converted
|
|
into as a fixed point number with exhaustive
|
|
precision.
|
|
*/
|
|
|
|
EXTERN DynamicStrings_String StringConvert_LongrealToString (long double x, unsigned int TotalWidth, unsigned int FractionWidth);
|
|
|
|
/*
|
|
stor - returns a REAL given a string.
|
|
*/
|
|
|
|
EXTERN double StringConvert_stor (DynamicStrings_String s);
|
|
|
|
/*
|
|
stolr - returns a LONGREAL given a string.
|
|
*/
|
|
|
|
EXTERN long double StringConvert_stolr (DynamicStrings_String s);
|
|
|
|
/*
|
|
ToSigFig - returns a floating point or base 10 integer
|
|
string which is accurate to, n, significant
|
|
figures. It will return a new String
|
|
and, s, will be destroyed.
|
|
|
|
|
|
So: 12.345
|
|
|
|
rounded to the following significant figures yields
|
|
|
|
5 12.345
|
|
4 12.34
|
|
3 12.3
|
|
2 12
|
|
1 10
|
|
*/
|
|
|
|
EXTERN DynamicStrings_String StringConvert_ToSigFig (DynamicStrings_String s, unsigned int n);
|
|
|
|
/*
|
|
ToDecimalPlaces - returns a floating point or base 10 integer
|
|
string which is accurate to, n, decimal
|
|
places. It will return a new String
|
|
and, s, will be destroyed.
|
|
Decimal places yields, n, digits after
|
|
the .
|
|
|
|
So: 12.345
|
|
|
|
rounded to the following decimal places yields
|
|
|
|
5 12.34500
|
|
4 12.3450
|
|
3 12.345
|
|
2 12.34
|
|
1 12.3
|
|
*/
|
|
|
|
EXTERN DynamicStrings_String StringConvert_ToDecimalPlaces (DynamicStrings_String s, unsigned int n);
|
|
# ifdef __cplusplus
|
|
}
|
|
# endif
|
|
|
|
# undef EXTERN
|
|
#endif
|