forked from KolibriOS/kolibrios
Clib char & math functions
git-svn-id: svn://kolibrios.org@554 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
836c97f0ac
commit
43bd1e645f
374
programs/develop/open watcom/trunk/clib/char/chartest.c
Normal file
374
programs/develop/open watcom/trunk/clib/char/chartest.c
Normal file
@ -0,0 +1,374 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Non-exhaustive test of ctype.h functions and macros.
|
||||
* Note: Tests assume the C locale.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include <ctype.h>
|
||||
#include <wctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#define VERIFY( exp ) if( !(exp) ) { \
|
||||
printf( "%s: ***FAILURE*** at line %d of %s.\n",\
|
||||
ProgramName, __LINE__, \
|
||||
strlwr(__FILE__) ); \
|
||||
NumErrors++; \
|
||||
}
|
||||
|
||||
#define TEST_ARRAY_SIZE 256
|
||||
#define TEST_ARRAY_SIZE_WIDE 512
|
||||
|
||||
|
||||
struct CtypeBits {
|
||||
unsigned alnum : 1;
|
||||
unsigned alpha : 1;
|
||||
unsigned blank : 1;
|
||||
unsigned cntrl : 1;
|
||||
unsigned digit : 1;
|
||||
unsigned graph : 1;
|
||||
unsigned lower : 1;
|
||||
unsigned print : 1;
|
||||
unsigned punct : 1;
|
||||
unsigned space : 1;
|
||||
unsigned upper : 1;
|
||||
unsigned xdigit : 1;
|
||||
unsigned ascii : 1;
|
||||
unsigned csym : 1;
|
||||
unsigned csymf : 1;
|
||||
};
|
||||
|
||||
struct CtypeBits MacroResults[TEST_ARRAY_SIZE];
|
||||
struct CtypeBits FunctResults[TEST_ARRAY_SIZE];
|
||||
struct CtypeBits WideMacroResults[TEST_ARRAY_SIZE_WIDE];
|
||||
struct CtypeBits WideFunctResults[TEST_ARRAY_SIZE_WIDE];
|
||||
|
||||
char ProgramName[_MAX_PATH]; /* executable filename */
|
||||
int NumErrors = 0; /* number of errors */
|
||||
|
||||
int far far_data = 0;
|
||||
|
||||
void TestClassifyMacro( void )
|
||||
/****************************/
|
||||
{
|
||||
int i;
|
||||
|
||||
far_data++; // set ds outside DGROUP
|
||||
|
||||
MacroResults[0].alnum = isalnum( EOF );
|
||||
MacroResults[0].alpha = isalpha( EOF );
|
||||
MacroResults[0].blank = isblank( EOF );
|
||||
MacroResults[0].cntrl = iscntrl( EOF );
|
||||
MacroResults[0].digit = isdigit( EOF );
|
||||
MacroResults[0].graph = isgraph( EOF );
|
||||
MacroResults[0].lower = islower( EOF );
|
||||
MacroResults[0].print = isprint( EOF );
|
||||
MacroResults[0].punct = ispunct( EOF );
|
||||
MacroResults[0].space = isspace( EOF );
|
||||
MacroResults[0].upper = isupper( EOF );
|
||||
MacroResults[0].xdigit = isxdigit( EOF );
|
||||
MacroResults[0].ascii = isascii( EOF );
|
||||
MacroResults[0].csym = __iscsym( EOF );
|
||||
MacroResults[0].csymf = __iscsymf( EOF );
|
||||
|
||||
for( i = 1; i < TEST_ARRAY_SIZE; i++ ) {
|
||||
MacroResults[i].alnum = isalnum( i );
|
||||
MacroResults[i].alpha = isalpha( i );
|
||||
MacroResults[i].blank = isblank( i );
|
||||
MacroResults[i].cntrl = iscntrl( i );
|
||||
MacroResults[i].digit = isdigit( i );
|
||||
MacroResults[i].graph = isgraph( i );
|
||||
MacroResults[i].lower = islower( i );
|
||||
MacroResults[i].print = isprint( i );
|
||||
MacroResults[i].punct = ispunct( i );
|
||||
MacroResults[i].space = isspace( i );
|
||||
MacroResults[i].upper = isupper( i );
|
||||
MacroResults[i].xdigit = isxdigit( i );
|
||||
MacroResults[i].ascii = isascii( i );
|
||||
MacroResults[i].csym = __iscsym( i );
|
||||
MacroResults[i].csymf = __iscsymf( i );
|
||||
}
|
||||
}
|
||||
|
||||
void TestClassifyFunct( void )
|
||||
/****************************/
|
||||
{
|
||||
int i;
|
||||
|
||||
far_data++; // set ds outside DGROUP
|
||||
|
||||
FunctResults[0].alnum = (isalnum)( EOF );
|
||||
FunctResults[0].alpha = (isalpha)( EOF );
|
||||
FunctResults[0].blank = (isblank)( EOF );
|
||||
FunctResults[0].cntrl = (iscntrl)( EOF );
|
||||
FunctResults[0].digit = (isdigit)( EOF );
|
||||
FunctResults[0].graph = (isgraph)( EOF );
|
||||
FunctResults[0].lower = (islower)( EOF );
|
||||
FunctResults[0].print = (isprint)( EOF );
|
||||
FunctResults[0].punct = (ispunct)( EOF );
|
||||
FunctResults[0].space = (isspace)( EOF );
|
||||
FunctResults[0].upper = (isupper)( EOF );
|
||||
FunctResults[0].xdigit = (isxdigit)( EOF );
|
||||
FunctResults[0].ascii = (isascii)( EOF );
|
||||
FunctResults[0].csym = (__iscsym)( EOF );
|
||||
FunctResults[0].csymf = (__iscsymf)( EOF );
|
||||
|
||||
for( i = 1; i < TEST_ARRAY_SIZE; i++ ) {
|
||||
FunctResults[i].alnum = (isalnum)( i );
|
||||
FunctResults[i].alpha = (isalpha)( i );
|
||||
FunctResults[i].blank = (isblank)( i );
|
||||
FunctResults[i].cntrl = (iscntrl)( i );
|
||||
FunctResults[i].digit = (isdigit)( i );
|
||||
FunctResults[i].graph = (isgraph)( i );
|
||||
FunctResults[i].lower = (islower)( i );
|
||||
FunctResults[i].print = (isprint)( i );
|
||||
FunctResults[i].punct = (ispunct)( i );
|
||||
FunctResults[i].space = (isspace)( i );
|
||||
FunctResults[i].upper = (isupper)( i );
|
||||
FunctResults[i].xdigit = (isxdigit)( i );
|
||||
FunctResults[i].ascii = (isascii)( i );
|
||||
FunctResults[i].csym = (__iscsym)( i );
|
||||
FunctResults[i].csymf = (__iscsymf)( i );
|
||||
}
|
||||
}
|
||||
|
||||
void TestClassifyWideMacro( void )
|
||||
/********************************/
|
||||
{
|
||||
int i;
|
||||
|
||||
far_data++; // set ds outside DGROUP
|
||||
|
||||
WideMacroResults[0].alnum = iswalnum( WEOF );
|
||||
WideMacroResults[0].alpha = iswalpha( WEOF );
|
||||
WideMacroResults[0].blank = iswblank( WEOF );
|
||||
WideMacroResults[0].cntrl = iswcntrl( WEOF );
|
||||
WideMacroResults[0].digit = iswdigit( WEOF );
|
||||
WideMacroResults[0].graph = iswgraph( WEOF );
|
||||
WideMacroResults[0].lower = iswlower( WEOF );
|
||||
WideMacroResults[0].print = iswprint( WEOF );
|
||||
WideMacroResults[0].punct = iswpunct( WEOF );
|
||||
WideMacroResults[0].space = iswspace( WEOF );
|
||||
WideMacroResults[0].upper = iswupper( WEOF );
|
||||
WideMacroResults[0].xdigit = iswxdigit( WEOF );
|
||||
WideMacroResults[0].ascii = isascii( WEOF );
|
||||
WideMacroResults[0].csym = __iscsym( WEOF );
|
||||
WideMacroResults[0].csymf = __iscsymf( WEOF );
|
||||
|
||||
for( i = 1; i < TEST_ARRAY_SIZE_WIDE; i++ ) {
|
||||
WideMacroResults[i].alnum = iswalnum( i );
|
||||
WideMacroResults[i].alpha = iswalpha( i );
|
||||
WideMacroResults[i].blank = iswblank( i );
|
||||
WideMacroResults[i].cntrl = iswcntrl( i );
|
||||
WideMacroResults[i].digit = iswdigit( i );
|
||||
WideMacroResults[i].graph = iswgraph( i );
|
||||
WideMacroResults[i].lower = iswlower( i );
|
||||
WideMacroResults[i].print = iswprint( i );
|
||||
WideMacroResults[i].punct = iswpunct( i );
|
||||
WideMacroResults[i].space = iswspace( i );
|
||||
WideMacroResults[i].upper = iswupper( i );
|
||||
WideMacroResults[i].xdigit = iswxdigit( i );
|
||||
WideMacroResults[i].ascii = isascii( i );
|
||||
WideMacroResults[i].csym = __iscsym( i );
|
||||
WideMacroResults[i].csymf = __iscsymf( i );
|
||||
}
|
||||
}
|
||||
|
||||
void TestClassifyWideFunct( void )
|
||||
/********************************/
|
||||
{
|
||||
int i;
|
||||
|
||||
far_data++; // set ds outside DGROUP
|
||||
|
||||
WideFunctResults[0].alnum = (iswalnum)( WEOF );
|
||||
WideFunctResults[0].alpha = (iswalpha)( WEOF );
|
||||
WideFunctResults[0].blank = (iswblank)( WEOF );
|
||||
WideFunctResults[0].cntrl = (iswcntrl)( WEOF );
|
||||
WideFunctResults[0].digit = (iswdigit)( WEOF );
|
||||
WideFunctResults[0].graph = (iswgraph)( WEOF );
|
||||
WideFunctResults[0].lower = (iswlower)( WEOF );
|
||||
WideFunctResults[0].print = (iswprint)( WEOF );
|
||||
WideFunctResults[0].punct = (iswpunct)( WEOF );
|
||||
WideFunctResults[0].space = (iswspace)( WEOF );
|
||||
WideFunctResults[0].upper = (iswupper)( WEOF );
|
||||
WideFunctResults[0].xdigit = (iswxdigit)( WEOF );
|
||||
WideFunctResults[0].ascii = (isascii)( WEOF );
|
||||
WideFunctResults[0].csym = (__iscsym)( WEOF );
|
||||
WideFunctResults[0].csymf = (__iscsymf)( WEOF );
|
||||
|
||||
for( i = 1; i < TEST_ARRAY_SIZE_WIDE; i++ ) {
|
||||
WideFunctResults[i].alnum = (iswalnum)( i );
|
||||
WideFunctResults[i].alpha = (iswalpha)( i );
|
||||
WideFunctResults[i].blank = (iswblank)( i );
|
||||
WideFunctResults[i].cntrl = (iswcntrl)( i );
|
||||
WideFunctResults[i].digit = (iswdigit)( i );
|
||||
WideFunctResults[i].graph = (iswgraph)( i );
|
||||
WideFunctResults[i].lower = (iswlower)( i );
|
||||
WideFunctResults[i].print = (iswprint)( i );
|
||||
WideFunctResults[i].punct = (iswpunct)( i );
|
||||
WideFunctResults[i].space = (iswspace)( i );
|
||||
WideFunctResults[i].upper = (iswupper)( i );
|
||||
WideFunctResults[i].xdigit = (iswxdigit)( i );
|
||||
WideFunctResults[i].ascii = (isascii)( i );
|
||||
WideFunctResults[i].csym = (__iscsym)( i );
|
||||
WideFunctResults[i].csymf = (__iscsymf)( i );
|
||||
}
|
||||
}
|
||||
|
||||
/* Helper function to print mismatches in human readable form */
|
||||
void CheckResults( struct CtypeBits *s1, struct CtypeBits *s2, int count )
|
||||
/************************************************************************/
|
||||
{
|
||||
int i;
|
||||
|
||||
far_data++; // set ds outside DGROUP
|
||||
|
||||
for( i = 0; i < TEST_ARRAY_SIZE; i++ ) {
|
||||
if( s1[i].alnum != WideMacroResults[i].alnum )
|
||||
printf( "Mismatch at %d (alnum)\n", i );
|
||||
if( s1[i].alpha != s2[i].alpha )
|
||||
printf( "Mismatch at %d (alpha)\n", i );
|
||||
if( s1[i].blank != s2[i].blank )
|
||||
printf( "Mismatch at %d (blank)\n", i );
|
||||
if( s1[i].cntrl != s2[i].cntrl )
|
||||
printf( "Mismatch at %d (cntrl)\n", i );
|
||||
if( s1[i].digit != s2[i].digit )
|
||||
printf( "Mismatch at %d (digit)\n", i );
|
||||
if( s1[i].graph != s2[i].graph )
|
||||
printf( "Mismatch at %d (graph)\n", i );
|
||||
if( s1[i].lower != s2[i].lower )
|
||||
printf( "Mismatch at %d (lower)\n", i );
|
||||
if( s1[i].print != s2[i].print )
|
||||
printf( "Mismatch at %d (print)\n", i );
|
||||
if( s1[i].punct != s2[i].punct )
|
||||
printf( "Mismatch at %d (punct)\n", i );
|
||||
if( s1[i].space != s2[i].space )
|
||||
printf( "Mismatch at %d (space)\n", i );
|
||||
if( s1[i].upper != s2[i].upper )
|
||||
printf( "Mismatch at %d (upper)\n", i );
|
||||
if( s1[i].xdigit != s2[i].xdigit )
|
||||
printf( "Mismatch at %d (xdigit)\n", i );
|
||||
if( s1[i].ascii != s2[i].ascii )
|
||||
printf( "Mismatch at %d (ascii)\n", i );
|
||||
if( s1[i].csym != s2[i].csym )
|
||||
printf( "Mismatch at %d (csym)\n", i );
|
||||
if( s1[i].csymf != s2[i].csymf )
|
||||
printf( "Mismatch at %d (csymf)\n", i );
|
||||
}
|
||||
}
|
||||
|
||||
void TestResults( void )
|
||||
/**********************/
|
||||
{
|
||||
size_t len;
|
||||
size_t wide_len;
|
||||
|
||||
far_data++; // set ds outside DGROUP
|
||||
|
||||
len = sizeof( MacroResults );
|
||||
wide_len = sizeof( WideMacroResults );
|
||||
|
||||
CheckResults( MacroResults, FunctResults, TEST_ARRAY_SIZE );
|
||||
VERIFY( !memcmp( MacroResults, FunctResults, len ) );
|
||||
VERIFY( !memcmp( WideMacroResults, WideFunctResults, wide_len ) );
|
||||
VERIFY( !memcmp( MacroResults, WideMacroResults, len ) );
|
||||
VERIFY( !memcmp( MacroResults, WideFunctResults, len ) );
|
||||
}
|
||||
|
||||
void TestConversion( void )
|
||||
/*************************/
|
||||
{
|
||||
int c, c1, c2;
|
||||
|
||||
far_data++; // set ds outside DGROUP
|
||||
|
||||
for( c = 0; c < 256; c++ ) {
|
||||
c1 = tolower( c );
|
||||
c2 = toupper( c );
|
||||
if( isalpha( c ) ) {
|
||||
if( islower( c ) )
|
||||
VERIFY( (c1 == c) && (c2 != c) );
|
||||
if( isupper( c ) )
|
||||
VERIFY( (c1 != c) && (c2 == c) );
|
||||
} else {
|
||||
VERIFY( !isalpha( c1 ) && !isalpha( c2 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TestWideConversion( void )
|
||||
/*****************************/
|
||||
{
|
||||
wchar_t c, c1, c2;
|
||||
|
||||
far_data++; // set ds outside DGROUP
|
||||
|
||||
for( c = 0; c < 1024; c++ ) {
|
||||
c1 = towlower( c );
|
||||
c2 = towupper( c );
|
||||
if( iswalpha( c ) ) {
|
||||
if( iswlower( c ) )
|
||||
VERIFY( (c1 == c) && (c2 != c) );
|
||||
if( iswupper( c ) )
|
||||
VERIFY( (c1 != c) && (c2 == c) );
|
||||
} else {
|
||||
VERIFY( !iswalpha( c1 ) && !iswalpha( c2 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main( int argc, char *argv[] )
|
||||
/********************************/
|
||||
{
|
||||
far_data++; // set ds outside DGROUP
|
||||
|
||||
/*** Initialize ***/
|
||||
strcpy( ProgramName, strlwr(argv[0]) );
|
||||
|
||||
/*** Test stuff ***/
|
||||
TestClassifyMacro();
|
||||
TestClassifyFunct();
|
||||
TestClassifyWideMacro();
|
||||
TestClassifyWideFunct();
|
||||
TestResults();
|
||||
TestConversion();
|
||||
TestWideConversion();
|
||||
|
||||
/*** Print a pass/fail message and quit ***/
|
||||
if( NumErrors == 0 ) {
|
||||
printf( "%s: SUCCESS.\n", ProgramName );
|
||||
return( EXIT_SUCCESS );
|
||||
} else {
|
||||
printf( "%s: FAILURE (%d errors).\n", ProgramName, NumErrors );
|
||||
return( EXIT_FAILURE );
|
||||
}
|
||||
}
|
38
programs/develop/open watcom/trunk/clib/char/intwctrn.h
Normal file
38
programs/develop/open watcom/trunk/clib/char/intwctrn.h
Normal file
@ -0,0 +1,38 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Identifiers for internal use by wctrans() and towctrans().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#ifndef INTWCTRN_H
|
||||
#define INTWCTRN_H
|
||||
|
||||
#define WCTRANS_TOLOWER 128
|
||||
#define WCTRANS_TOUPPER 129
|
||||
|
||||
#endif
|
48
programs/develop/open watcom/trunk/clib/char/intwctyp.h
Normal file
48
programs/develop/open watcom/trunk/clib/char/intwctyp.h
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Identifiers for internal use by iswctype() and wctype().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#ifndef INTWCTYP_H
|
||||
#define INTWCTYP_H
|
||||
|
||||
#define WCTYPE_ALNUM 1
|
||||
#define WCTYPE_ALPHA 2
|
||||
#define WCTYPE_CNTRL 3
|
||||
#define WCTYPE_DIGIT 4
|
||||
#define WCTYPE_GRAPH 5
|
||||
#define WCTYPE_LOWER 6
|
||||
#define WCTYPE_PRINT 7
|
||||
#define WCTYPE_PUNCT 8
|
||||
#define WCTYPE_SPACE 9
|
||||
#define WCTYPE_UPPER 10
|
||||
#define WCTYPE_XDIGIT 11
|
||||
#define WCTYPE_BLANK 12
|
||||
|
||||
#endif
|
48
programs/develop/open watcom/trunk/clib/char/isalnum.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/isalnum.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of isalnum().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef isalnum
|
||||
|
||||
_WCRTLINK int __F_NAME(isalnum,iswalnum)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( IsWhat( c ) & (_LOWER|_UPPER|_DIGIT) );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
48
programs/develop/open watcom/trunk/clib/char/isalpha.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/isalpha.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of isalpha().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef isalpha
|
||||
|
||||
_WCRTLINK int __F_NAME(isalpha,iswalpha)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( IsWhat( c ) & (_LOWER|_UPPER) );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
43
programs/develop/open watcom/trunk/clib/char/isascii.c
Normal file
43
programs/develop/open watcom/trunk/clib/char/isascii.c
Normal file
@ -0,0 +1,43 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of isascii().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#undef isascii
|
||||
|
||||
_WCRTLINK int __F_NAME(isascii,iswascii)( INTCHAR_TYPE c )
|
||||
{
|
||||
return( (unsigned)(c) <= 0x7f );
|
||||
}
|
47
programs/develop/open watcom/trunk/clib/char/isblank.c
Normal file
47
programs/develop/open watcom/trunk/clib/char/isblank.c
Normal file
@ -0,0 +1,47 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation if isblank().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#undef isblank
|
||||
|
||||
_WCRTLINK int __F_NAME(isblank,iswblank)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( (c == ' ') || (c == '\t') );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
48
programs/develop/open watcom/trunk/clib/char/iscntrl.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/iscntrl.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of iscntrl().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef iscntrl
|
||||
|
||||
_WCRTLINK int __F_NAME(iscntrl,iswcntrl)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( IsWhat( c ) & _CNTRL );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
45
programs/develop/open watcom/trunk/clib/char/iscsym.c
Normal file
45
programs/develop/open watcom/trunk/clib/char/iscsym.c
Normal file
@ -0,0 +1,45 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of __iscsym().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <ctype.h>
|
||||
#include "widechar.h"
|
||||
#include "istable.h"
|
||||
#undef __iscsym
|
||||
|
||||
_WCRTLINK int (__iscsym)( int c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( (IsWhat( c ) & (_LOWER|_UPPER|_DIGIT)) || (c == '_') );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
45
programs/develop/open watcom/trunk/clib/char/iscsymf.c
Normal file
45
programs/develop/open watcom/trunk/clib/char/iscsymf.c
Normal file
@ -0,0 +1,45 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of __iscsymf().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <ctype.h>
|
||||
#include "widechar.h"
|
||||
#include "istable.h"
|
||||
#undef __iscsymf
|
||||
|
||||
_WCRTLINK int (__iscsymf)( int c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( (IsWhat( c ) & (_LOWER|_UPPER)) || (c == '_') );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
48
programs/develop/open watcom/trunk/clib/char/isdigit.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/isdigit.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of isdigit().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef isdigit
|
||||
|
||||
_WCRTLINK int __F_NAME(isdigit,iswdigit)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( IsWhat( c ) & _DIGIT );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
48
programs/develop/open watcom/trunk/clib/char/isgraph.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/isgraph.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation if isgraph().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef isgraph
|
||||
|
||||
_WCRTLINK int __F_NAME(isgraph,iswgraph)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII(c) ) {
|
||||
return( (IsWhat( c ) & (_PRINT|_SPACE)) == _PRINT );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
48
programs/develop/open watcom/trunk/clib/char/islower.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/islower.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of islower().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef islower
|
||||
|
||||
_WCRTLINK int __F_NAME(islower,iswlower)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( IsWhat( c ) & _LOWER );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
48
programs/develop/open watcom/trunk/clib/char/isprint.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/isprint.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation if isprint().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef isprint
|
||||
|
||||
_WCRTLINK int __F_NAME(isprint,iswprint)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( IsWhat( c ) & _PRINT );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
48
programs/develop/open watcom/trunk/clib/char/ispunct.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/ispunct.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of ispunct().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef ispunct
|
||||
|
||||
_WCRTLINK int __F_NAME(ispunct,iswpunct)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( IsWhat( c ) & _PUNCT );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
48
programs/develop/open watcom/trunk/clib/char/isspace.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/isspace.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation if isspace().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef isspace
|
||||
|
||||
_WCRTLINK int __F_NAME(isspace,iswspace)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( IsWhat( c ) & _SPACE );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
295
programs/develop/open watcom/trunk/clib/char/istable.c
Normal file
295
programs/develop/open watcom/trunk/clib/char/istable.c
Normal file
@ -0,0 +1,295 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Character classification table.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <ctype.h>
|
||||
|
||||
_WCRTLINKD const char _HUGEDATA _IsTable[257] = {
|
||||
|
||||
#define ___0__ 0
|
||||
|
||||
/* -1,EOF */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 00,NUL */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 01,SOH */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 02,STX */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 03,ETX */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 04,EOT */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 05,ENQ */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 06,NAK */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 07,BEL */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 08,BS */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 09,TAB */ ___0__|___0__|___0__|___0__|___0__|___0__|_SPACE|_CNTRL,
|
||||
/* 0A,LF */ ___0__|___0__|___0__|___0__|___0__|___0__|_SPACE|_CNTRL,
|
||||
/* 0B,VT */ ___0__|___0__|___0__|___0__|___0__|___0__|_SPACE|_CNTRL,
|
||||
/* 0C,FF */ ___0__|___0__|___0__|___0__|___0__|___0__|_SPACE|_CNTRL,
|
||||
/* 0D,CR */ ___0__|___0__|___0__|___0__|___0__|___0__|_SPACE|_CNTRL,
|
||||
/* 0E,SI */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 0F,SO */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 10, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 11, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 12, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 13, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 14, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 15, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 16, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 17, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 18, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 19, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 1A, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 1B, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 1C, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 1D, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 1E, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 1F, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 20, */ ___0__|___0__|___0__|___0__|_PRINT|___0__|_SPACE|___0__,
|
||||
/* 21, ! */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 22, " */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 23, # */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 24, $ */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 25, % */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 26, & */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 27, ' */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 28, ( */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 29, ) */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 2A, * */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 2B, + */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 2C, , */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 2D, - */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 2E, . */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 2F, / */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 30, 0 */ ___0__|___0__|_DIGIT|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 31, 1 */ ___0__|___0__|_DIGIT|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 32, 2 */ ___0__|___0__|_DIGIT|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 33, 3 */ ___0__|___0__|_DIGIT|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 34, 4 */ ___0__|___0__|_DIGIT|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 35, 5 */ ___0__|___0__|_DIGIT|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 36, 6 */ ___0__|___0__|_DIGIT|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 37, 7 */ ___0__|___0__|_DIGIT|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 38, 8 */ ___0__|___0__|_DIGIT|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 39, 9 */ ___0__|___0__|_DIGIT|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 3A, : */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 3B, ; */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 3C, < */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 3D, = */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 3E, > */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 3F, ? */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 40, @ */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 41, A */ ___0__|_UPPER|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 42, B */ ___0__|_UPPER|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 43, C */ ___0__|_UPPER|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 44, D */ ___0__|_UPPER|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 45, E */ ___0__|_UPPER|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 46, F */ ___0__|_UPPER|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 47, G */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 48, H */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 49, I */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 4A, J */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 4B, K */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 4C, L */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 4D, M */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 4E, N */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 4F, O */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 50, P */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 51, Q */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 52, R */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 53, S */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 54, T */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 55, U */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 56, V */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 57, W */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 58, X */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 59, Y */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 5A, Z */ ___0__|_UPPER|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 5B, [ */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 5C, \ */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 5D, ] */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 5E, ^ */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 5F, _ */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 60, ` */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 61, a */ _LOWER|___0__|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 62, b */ _LOWER|___0__|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 63, c */ _LOWER|___0__|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 64, d */ _LOWER|___0__|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 65, e */ _LOWER|___0__|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 66, f */ _LOWER|___0__|___0__|_XDIGT|_PRINT|___0__|___0__|___0__,
|
||||
/* 67, g */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 68, h */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 69, i */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 6A, j */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 6B, k */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 6C, l */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 6D, m */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 6E, n */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 6F, o */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 70, p */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 71, q */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 72, r */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 73, s */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 74, t */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 75, u */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 76, v */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 77, w */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 78, x */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 79, y */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 7A, z */ _LOWER|___0__|___0__|___0__|_PRINT|___0__|___0__|___0__,
|
||||
/* 7B, { */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 7C, | */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 7D, } */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 7E, ~ */ ___0__|___0__|___0__|___0__|_PRINT|_PUNCT|___0__|___0__,
|
||||
/* 7F,DEL */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|_CNTRL,
|
||||
/* 80, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 81, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 82, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 83, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 84, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 85, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 86, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 87, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 88, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 89, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 8A, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 8B, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 8C, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 8D, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 8E, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 8F, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 90, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 91, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 92, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 93, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 94, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 95, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 96, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 97, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 98, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 99, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 9A, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 9B, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 9C, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 9D, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 9E, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* 9F, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* A0, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* A1, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* A2, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* A3, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* A4, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* A5, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* A6, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* A7, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* A8, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* A9, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* AA, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* AB, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* AC, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* AD, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* AE, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* AF, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* B0, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* B1, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* B2, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* B3, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* B4, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* B5, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* B6, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* B7, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* B8, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* B9, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* BA, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* BB, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* BC, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* BD, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* BE, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* BF, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* C0, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* C1, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* C2, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* C3, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* C4, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* C5, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* C6, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* C7, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* C8, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* C9, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* CA, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* CB, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* CC, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* CD, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* CE, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* CF, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* D0, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* D1, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* D2, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* D3, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* D4, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* D5, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* D6, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* D7, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* D8, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* D9, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* DA, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* DB, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* DC, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* DD, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* DE, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* DF, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* E0, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* E1, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* E2, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* E3, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* E4, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* E5, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* E6, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* E7, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* E8, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* E9, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* EA, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* EB, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* EC, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* ED, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* EE, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* EF, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* F0, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* F1, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* F2, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* F3, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* F4, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* F5, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* F6, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* F7, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* F8, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* F9, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* FA, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* FB, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* FC, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* FD, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* FE, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__,
|
||||
/* FF, */ ___0__|___0__|___0__|___0__|___0__|___0__|___0__|___0__ };
|
68
programs/develop/open watcom/trunk/clib/char/istable.h
Normal file
68
programs/develop/open watcom/trunk/clib/char/istable.h
Normal file
@ -0,0 +1,68 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: _IsTable accessors (with x86 optimized versions).
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#ifndef _ISTABLE_H_INCLUDED
|
||||
#define _ISTABLE_H_INCLUDED
|
||||
|
||||
#if defined(__386__)
|
||||
extern int IsWhat( int );
|
||||
#pragma aux IsWhat = \
|
||||
"and eax,0xff" \
|
||||
"mov al,_IsTable+0x1[eax]" \
|
||||
parm loadds [eax]
|
||||
#elif defined(M_I86HM)
|
||||
extern int IsWhat( int );
|
||||
#pragma aux IsWhat = \
|
||||
"push bx" \
|
||||
"mov bx,seg _IsTable" \
|
||||
"mov ds,bx" \
|
||||
"and ax,0xff" \
|
||||
"mov bx,ax" \
|
||||
"mov al,_IsTable+0x1[bx]" \
|
||||
"pop bx" \
|
||||
parm [ax] modify [ds]
|
||||
#elif defined(__I86__)
|
||||
extern int IsWhat( int );
|
||||
#pragma aux IsWhat = \
|
||||
"push bx" \
|
||||
"and ax,0xff" \
|
||||
"mov bx,ax" \
|
||||
"mov al,_IsTable+0x1[bx]" \
|
||||
"pop bx" \
|
||||
parm loadds [ax]
|
||||
#else
|
||||
static int IsWhat( int c )
|
||||
{
|
||||
return( _IsTable[TO_ASCII( c )+1] );
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
48
programs/develop/open watcom/trunk/clib/char/isupper.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/isupper.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of isupper().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef isupper
|
||||
|
||||
_WCRTLINK int __F_NAME(isupper,iswupper)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( IsWhat( c ) & _UPPER );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
54
programs/develop/open watcom/trunk/clib/char/iswctype.c
Normal file
54
programs/develop/open watcom/trunk/clib/char/iswctype.c
Normal file
@ -0,0 +1,54 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation if iswctype().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <wctype.h>
|
||||
#include "intwctyp.h"
|
||||
|
||||
/* Determine if the given character is of the specified type. */
|
||||
_WCRTLINK int iswctype( wint_t wc, wctype_t desc )
|
||||
{
|
||||
switch( desc ) {
|
||||
case WCTYPE_ALNUM: return( iswalnum( wc ) );
|
||||
case WCTYPE_ALPHA: return( iswalpha( wc ) );
|
||||
case WCTYPE_BLANK: return( iswblank( wc ) );
|
||||
case WCTYPE_CNTRL: return( iswcntrl( wc ) );
|
||||
case WCTYPE_DIGIT: return( iswdigit( wc ) );
|
||||
case WCTYPE_GRAPH: return( iswgraph( wc ) );
|
||||
case WCTYPE_LOWER: return( iswlower( wc ) );
|
||||
case WCTYPE_PRINT: return( iswprint( wc ) );
|
||||
case WCTYPE_PUNCT: return( iswpunct( wc ) );
|
||||
case WCTYPE_SPACE: return( iswspace( wc ) );
|
||||
case WCTYPE_UPPER: return( iswupper( wc ) );
|
||||
case WCTYPE_XDIGIT: return( iswxdigit( wc ) );
|
||||
default: return( 0 );
|
||||
}
|
||||
}
|
48
programs/develop/open watcom/trunk/clib/char/isxdigit.c
Normal file
48
programs/develop/open watcom/trunk/clib/char/isxdigit.c
Normal file
@ -0,0 +1,48 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation if isxdigit().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <ctype.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#endif
|
||||
#include "istable.h"
|
||||
#undef isxdigit
|
||||
|
||||
_WCRTLINK int __F_NAME(isxdigit,iswxdigit)( INTCHAR_TYPE c )
|
||||
{
|
||||
if( IS_ASCII( c ) ) {
|
||||
return( IsWhat( c ) & _XDIGT );
|
||||
} else {
|
||||
return( 0 );
|
||||
}
|
||||
}
|
45
programs/develop/open watcom/trunk/clib/char/towctrns.c
Normal file
45
programs/develop/open watcom/trunk/clib/char/towctrns.c
Normal file
@ -0,0 +1,45 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of towctrans().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <wctype.h>
|
||||
#include "intwctrn.h"
|
||||
|
||||
|
||||
/* Transform character as specified by 'desc'. */
|
||||
_WCRTLINK wint_t towctrans( wint_t wc, wctrans_t desc )
|
||||
{
|
||||
switch( desc ) {
|
||||
case WCTRANS_TOLOWER: return( towlower( wc ) );
|
||||
case WCTRANS_TOUPPER: return( towupper( wc ) );
|
||||
default: return( wc );
|
||||
}
|
||||
}
|
61
programs/develop/open watcom/trunk/clib/convert/atol.c
Normal file
61
programs/develop/open watcom/trunk/clib/convert/atol.c
Normal file
@ -0,0 +1,61 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <stdio.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#else
|
||||
#include <ctype.h>
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
_WCRTLINK long int __F_NAME(atol,_wtol)( const CHAR_TYPE *p ) /* convert ASCII string to long integer */
|
||||
{
|
||||
register long int value;
|
||||
CHAR_TYPE sign;
|
||||
|
||||
__ptr_check( p, 0 );
|
||||
|
||||
while( __F_NAME(isspace,iswspace)( *p ) ) ++p;
|
||||
sign = *p;
|
||||
if( sign == '+' || sign == '-' ) ++p;
|
||||
value = 0;
|
||||
while( __F_NAME(isdigit,iswdigit)(*p) ) {
|
||||
value = value * 10 + *p - '0';
|
||||
++p;
|
||||
}
|
||||
if( sign == '-' ) value = - value;
|
||||
return( value );
|
||||
}
|
61
programs/develop/open watcom/trunk/clib/convert/atoll.c
Normal file
61
programs/develop/open watcom/trunk/clib/convert/atoll.c
Normal file
@ -0,0 +1,61 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: ASCII to long long conversion routine.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include "watcom.h"
|
||||
#include <stdio.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#else
|
||||
#include <ctype.h>
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
|
||||
_WCRTLINK long long int __F_NAME(atoll,_wtoll)( const CHAR_TYPE *p ) /* convert ASCII string to long long int */
|
||||
{
|
||||
unsigned long long int value = 0;
|
||||
CHAR_TYPE sign;
|
||||
|
||||
__ptr_check( p, 0 );
|
||||
|
||||
while( __F_NAME(isspace,iswspace)( *p ) )
|
||||
++p;
|
||||
sign = *p;
|
||||
if( sign == '+' || sign == '-' ) ++p;
|
||||
while( __F_NAME(isdigit,iswdigit)(*p) ) {
|
||||
value = value * 10 + *p - '0';
|
||||
++p;
|
||||
}
|
||||
if( sign == '-' )
|
||||
value = -value;
|
||||
return( value );
|
||||
}
|
118
programs/develop/open watcom/trunk/clib/convert/fdmd386.asm
Normal file
118
programs/develop/open watcom/trunk/clib/convert/fdmd386.asm
Normal file
@ -0,0 +1,118 @@
|
||||
;*****************************************************************************
|
||||
;*
|
||||
;* Open Watcom Project
|
||||
;*
|
||||
;* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* This file contains Original Code and/or Modifications of Original
|
||||
;* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
;* Public License version 1.0 (the 'License'). You may not use this file
|
||||
;* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
;* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
;* provided with the Original Code and Modifications, and is also
|
||||
;* available at www.sybase.com/developer/opensource.
|
||||
;*
|
||||
;* The Original Code and all software distributed under the License are
|
||||
;* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
;* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
;* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
;* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
;* governing rights and limitations under the License.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
;* DESCRIBE IT HERE!
|
||||
;*
|
||||
;*****************************************************************************
|
||||
|
||||
|
||||
include mdef.inc
|
||||
include struct.inc
|
||||
|
||||
modstart fdmd386
|
||||
|
||||
xdefp "C",_dieeetomsbin
|
||||
defpe _dieeetomsbin
|
||||
|
||||
ifdef __STACK__
|
||||
mov eax,dword ptr +4H[esp] ; load src double ptr
|
||||
mov edx,dword ptr +8H[esp] ; load dst double ptt
|
||||
else
|
||||
push ecx ; save register
|
||||
endif
|
||||
|
||||
; At this point:
|
||||
; eax - ptr to IEEE source double
|
||||
; edx - ptr to MBF dest double
|
||||
; ecx - spare register
|
||||
|
||||
; Check for IEEE Underflow first
|
||||
mov ecx,+4h[eax] ; load IEEE double (hi)
|
||||
rol ecx,1 ; rotate sign bit away for comparisons
|
||||
cmp ecx,6fe00000H ; exponent < 1023 - 128 ?
|
||||
jae IEEENoUnderflow ; yes, jump
|
||||
|
||||
; IEEE Underflow, store MBF 0.0
|
||||
xor eax,eax ; make 0
|
||||
mov [edx],eax ; store MBF 0.0 (lo)
|
||||
mov +4h[edx],eax ; store MBF 0.0 (hi)
|
||||
ifndef __STACK__
|
||||
pop ecx ; clean up
|
||||
endif
|
||||
ret ; return 0 (no overflow)
|
||||
|
||||
; Check for IEEE Overflow
|
||||
IEEENoUnderflow:
|
||||
cmp ecx,8fc00000H ; exponent >= 1023 + 127 ?
|
||||
jae IEEEOverflow ; yes, jump
|
||||
|
||||
; General IEEE case, load rest of double
|
||||
mov eax,[eax] ; load IEEE double (lo)
|
||||
ror ecx,1 ; rotate sign bit back into place
|
||||
|
||||
; At this point:
|
||||
; ecx:eax - IEEE source double
|
||||
; edx - ptr to MBF dest double
|
||||
|
||||
push ecx ; save sign bit
|
||||
|
||||
; shift exponent & mantissa into place
|
||||
shld ecx,eax,3 ; shift exponent and mantissa
|
||||
shl eax,3 ; :
|
||||
mov [edx],eax ; save mantissa
|
||||
rol ecx,9 ; convert IEEE exponent to MBF
|
||||
shr ecx,1 ; :
|
||||
adc cl,cl ; :
|
||||
add cl,82h ; correct MBF exponent
|
||||
pop eax ; restore sign bit
|
||||
add eax,eax ; shift sign bit into carry
|
||||
adc ecx,ecx ; add in sign bit
|
||||
ror ecx,9 ; MBF double (hi)
|
||||
mov +4h[edx],ecx ; store MBF double (hi)
|
||||
xor eax,eax ; 0
|
||||
ifndef __STACK__
|
||||
pop ecx ; clean up
|
||||
endif
|
||||
ret ; return 0 (no overflow)
|
||||
|
||||
; IEEE Overflow, store maximum MBF, preserving sign
|
||||
IEEEOverflow: or ecx,0FFFFFFFFEh ; set MBF exponent and mantissa to maximum
|
||||
mov eax,ecx ; :
|
||||
ror ecx,9 ; rotate sign bit into place for MBF
|
||||
sar eax,1 ; now -1
|
||||
mov +4h[edx],ecx ; store IEEE double (hi)
|
||||
mov [edx],eax ; store IEEE double (lo)
|
||||
neg eax ; 1
|
||||
ifndef __STACK__
|
||||
pop ecx ; clean up
|
||||
endif
|
||||
ret ; return 1 (overflow)
|
||||
|
||||
endproc _dieeetomsbin
|
||||
|
||||
endmod
|
||||
end
|
109
programs/develop/open watcom/trunk/clib/convert/fsms386.asm
Normal file
109
programs/develop/open watcom/trunk/clib/convert/fsms386.asm
Normal file
@ -0,0 +1,109 @@
|
||||
;*****************************************************************************
|
||||
;*
|
||||
;* Open Watcom Project
|
||||
;*
|
||||
;* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* This file contains Original Code and/or Modifications of Original
|
||||
;* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
;* Public License version 1.0 (the 'License'). You may not use this file
|
||||
;* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
;* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
;* provided with the Original Code and Modifications, and is also
|
||||
;* available at www.sybase.com/developer/opensource.
|
||||
;*
|
||||
;* The Original Code and all software distributed under the License are
|
||||
;* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
;* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
;* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
;* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
;* governing rights and limitations under the License.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
;* DESCRIBE IT HERE!
|
||||
;*
|
||||
;*****************************************************************************
|
||||
|
||||
|
||||
include mdef.inc
|
||||
include struct.inc
|
||||
|
||||
modstart fsms386
|
||||
|
||||
xdefp "C",_fieeetomsbin
|
||||
defpe _fieeetomsbin
|
||||
|
||||
ifdef __STACK__
|
||||
mov eax,dword ptr +4H[esp]
|
||||
mov edx,dword ptr +8H[esp]
|
||||
endif
|
||||
|
||||
; At this point:
|
||||
; eax - ptr to IEEE source float
|
||||
; edx - ptr to MBF dest float
|
||||
|
||||
mov eax,[eax] ; load IEEE float
|
||||
test eax,7fe00000h ; IEEE exponent != 0 or convertable
|
||||
; denormal ?
|
||||
jne IEEENonZero ; :
|
||||
|
||||
; IEEE Zero or IEEE unconvertable denormal, store MBF Zero
|
||||
xor eax,eax ; 0
|
||||
mov [edx],eax ; store MBF 0.0F
|
||||
ret ; return 0 (no overflow)
|
||||
|
||||
; At this point:
|
||||
; eax - IEEE source float
|
||||
; edx - ptr to MBF dest float
|
||||
|
||||
IEEENonZero: rol eax,9 ; rotate for exponent analysis
|
||||
test al,al ; IEEE convertable denormal ?
|
||||
je IEEEDenormal ; yes, jump
|
||||
add al,2 ; MBF exponent = IEEE exponent + 2
|
||||
jc IEEEOverflow ; jump if overflow
|
||||
shr eax,1 ; rotate sign bit and exponent
|
||||
adc al,al ; :
|
||||
adc eax,eax ; :
|
||||
ror eax,9 ; rotate so MBF float
|
||||
|
||||
MBFStore: mov [edx],eax ; store MBF float
|
||||
xor eax,eax ; 0
|
||||
ret ; return 0 (no overflow)
|
||||
|
||||
; One of leading 2 bits of mantissa is a 1
|
||||
IEEEDenormal:
|
||||
ifndef __STACK__
|
||||
push ecx ; save register
|
||||
endif
|
||||
mov ecx,eax ; save sign bit and exponent
|
||||
and ah,0FEh ; eliminate sign bit
|
||||
DenormalLoop: inc ecx ; increment count
|
||||
add eax,eax ; shift mantissa
|
||||
jnc DenormalLoop ; loop while no implied 1
|
||||
xor ecx,3h ; invert count (new exponent)
|
||||
shr ecx,1 ; rotate exponent and sign bit
|
||||
adc cl,cl ; :
|
||||
adc ecx,ecx ; :
|
||||
shrd eax,ecx,9 ; combine mantissa (eax) and
|
||||
; exponent& sign bit (ecx)
|
||||
ifndef __STACK__
|
||||
pop ecx ; restore register
|
||||
endif
|
||||
jmp MBFStore ; continue
|
||||
|
||||
IEEEOverflow: rol eax,15 ; rotate sign bit into place
|
||||
or eax,0FF7FFFFFh ; set MBF exponent and mantissa to
|
||||
; maximum but preserve MBF sign
|
||||
mov [edx],eax ; store MBF float
|
||||
and eax,1 ; 1
|
||||
ret ; return 1 (overflow)
|
||||
|
||||
endproc _fieeetomsbin
|
||||
|
||||
endmod
|
||||
end
|
105
programs/develop/open watcom/trunk/clib/convert/mdfd386.asm
Normal file
105
programs/develop/open watcom/trunk/clib/convert/mdfd386.asm
Normal file
@ -0,0 +1,105 @@
|
||||
;*****************************************************************************
|
||||
;*
|
||||
;* Open Watcom Project
|
||||
;*
|
||||
;* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* This file contains Original Code and/or Modifications of Original
|
||||
;* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
;* Public License version 1.0 (the 'License'). You may not use this file
|
||||
;* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
;* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
;* provided with the Original Code and Modifications, and is also
|
||||
;* available at www.sybase.com/developer/opensource.
|
||||
;*
|
||||
;* The Original Code and all software distributed under the License are
|
||||
;* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
;* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
;* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
;* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
;* governing rights and limitations under the License.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
;* DESCRIBE IT HERE!
|
||||
;*
|
||||
;*****************************************************************************
|
||||
|
||||
|
||||
include mdef.inc
|
||||
include struct.inc
|
||||
|
||||
modstart mdfd386
|
||||
|
||||
xdefp "C",_dmsbintoieee
|
||||
defpe _dmsbintoieee
|
||||
|
||||
ifdef __STACK__
|
||||
mov eax,dword ptr +4H[esp]
|
||||
mov edx,dword ptr +8H[esp]
|
||||
else
|
||||
push ecx
|
||||
endif
|
||||
|
||||
; At this point:
|
||||
; eax - ptr to MBF source double
|
||||
; edx - ptr to IEEE dest double
|
||||
; ecx - spare register
|
||||
|
||||
; Check for and process MBF 0.0 first
|
||||
mov ecx,+4h[eax] ; load MBF double (hi)
|
||||
test ecx,0ff000000h ; MBF exponent = 0 ?
|
||||
jne MBFNonZero ; no, jump
|
||||
|
||||
; MBF 0.0, store IEEE 0.0
|
||||
xor eax,eax ; make 0
|
||||
mov [edx],eax ; store IEEE 0.0 (lo)
|
||||
mov +4h[edx],eax ; store IEEE 0.0 (hi)
|
||||
ifndef __STACK__
|
||||
pop ecx ; clean up
|
||||
endif
|
||||
ret ; return 0 (no overflow)
|
||||
|
||||
MBFNonZero: mov eax,[eax] ; load MBF double (lo)
|
||||
|
||||
; At this point:
|
||||
; ecx:eax - MBF source double
|
||||
; edx - ptr to IEEE dest double
|
||||
|
||||
rol ecx,9 ; rotate exponent & sign bit low
|
||||
shr ecx,1 ; move sign bit before exponent
|
||||
rcr cl,1 ; :
|
||||
adc ecx,ecx ; :
|
||||
ror ecx,9 ; rotate exponent & sign bit back
|
||||
|
||||
; shift mantissa into place
|
||||
shrd eax,ecx,2 ; shift mantissa
|
||||
sar ecx,3 ; shift exponent & mantissa, save sign bit
|
||||
rcr eax,1 ; shift mantissa
|
||||
jc MBFRound ; jump if rounding up
|
||||
and ecx,8FFFFFFFh ; mask out surplus sign bits
|
||||
add ecx,37e00000h ; convert MBF to IEEE exponent
|
||||
|
||||
IEEEStore:
|
||||
mov [edx],eax ; store IEEE double (lo)
|
||||
mov +4h[edx],ecx ; store IEEE double (hi)
|
||||
xor eax,eax ; 0
|
||||
ifndef __STACK__
|
||||
pop ecx ; clean up
|
||||
endif
|
||||
ret ; return 0 (no overflow)
|
||||
|
||||
; add rounding bit
|
||||
MBFRound: and ecx,8FFFFFFFh ; mask out surplus sign bits
|
||||
add eax,1 ; add round bit
|
||||
adc ecx,37e00000h ; convert MBF to IEEE exponent
|
||||
jmp IEEEStore ; store result
|
||||
|
||||
endproc _dmsbintoieee
|
||||
|
||||
endmod
|
||||
end
|
93
programs/develop/open watcom/trunk/clib/convert/msfs386.asm
Normal file
93
programs/develop/open watcom/trunk/clib/convert/msfs386.asm
Normal file
@ -0,0 +1,93 @@
|
||||
;*****************************************************************************
|
||||
;*
|
||||
;* Open Watcom Project
|
||||
;*
|
||||
;* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* This file contains Original Code and/or Modifications of Original
|
||||
;* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
;* Public License version 1.0 (the 'License'). You may not use this file
|
||||
;* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
;* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
;* provided with the Original Code and Modifications, and is also
|
||||
;* available at www.sybase.com/developer/opensource.
|
||||
;*
|
||||
;* The Original Code and all software distributed under the License are
|
||||
;* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
;* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
;* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
;* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
;* governing rights and limitations under the License.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
;* DESCRIBE IT HERE!
|
||||
;*
|
||||
;*****************************************************************************
|
||||
|
||||
|
||||
include mdef.inc
|
||||
include struct.inc
|
||||
|
||||
modstart msfs386
|
||||
|
||||
xdefp "C",_fmsbintoieee
|
||||
defpe _fmsbintoieee
|
||||
|
||||
ifdef __STACK__
|
||||
mov eax,dword ptr +4H[esp]
|
||||
mov edx,dword ptr +8H[esp]
|
||||
endif
|
||||
|
||||
; At this point:
|
||||
; eax - ptr to MBF source float
|
||||
; edx - ptr to IEEE dest float
|
||||
|
||||
mov eax,[eax] ; load MBF float
|
||||
; MBF exponent = 0 ?
|
||||
test eax,0ff000000h
|
||||
jne MBFNonZero ; yes, jump
|
||||
|
||||
xor eax,eax ; IEEE 0.0
|
||||
mov [edx],eax ; store IEEE float
|
||||
ret ; return 0 (no overflow)
|
||||
|
||||
; At this point:
|
||||
; eax - MBF source float
|
||||
; edx - ptr to IEEE dest float
|
||||
|
||||
MBFNonZero: rol eax,9 ; rotate exponent for better analysis
|
||||
shr eax,1 ; shift out
|
||||
rcr al,1 ; move sign bit
|
||||
adc eax,eax ; shift back
|
||||
sub al,2 ; convert exponent
|
||||
jc MBFExp1 ; jump if MBF exponent 1
|
||||
je MBFExp2 ; jump if MBF exponent 2
|
||||
ror eax,9 ; rotate so IEEE float
|
||||
IEEEStore:
|
||||
mov [edx],eax ; store IEEE float
|
||||
xor eax,eax ; return 0 (no overflow)
|
||||
ret ; :
|
||||
|
||||
MBFExp1: and al,1 ; zero exponent except implied 1
|
||||
ror eax,9 ; rotate so IEEE float
|
||||
sar eax,2 ; convert to IEEE denormal
|
||||
adc eax,0 ; add in round bit
|
||||
and eax,80FFFFFFh ; zero surplus sign bits
|
||||
jmp short IEEEStore ; continue
|
||||
|
||||
MBFExp2: or al,1 ; set implied 1
|
||||
ror eax,9 ; rotate so IEEE float
|
||||
sar eax,1 ; convert to IEEE denormal
|
||||
adc eax,0 ; add in round bit
|
||||
and eax,80FFFFFFh ; zero surplus sign bit
|
||||
jmp short IEEEStore ; continue
|
||||
|
||||
endproc _fmsbintoieee
|
||||
|
||||
endmod
|
||||
end
|
148
programs/develop/open watcom/trunk/clib/convert/strtol.c
Normal file
148
programs/develop/open watcom/trunk/clib/convert/strtol.c
Normal file
@ -0,0 +1,148 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#else
|
||||
#include <ctype.h>
|
||||
#endif
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include "seterrno.h"
|
||||
|
||||
/*
|
||||
* this table is the largest value that can safely be multiplied
|
||||
* by the associated base without overflowing
|
||||
*/
|
||||
static unsigned long nearly_overflowing[] = {
|
||||
ULONG_MAX / 2, ULONG_MAX / 3, ULONG_MAX / 4, ULONG_MAX / 5,
|
||||
ULONG_MAX / 6, ULONG_MAX / 7, ULONG_MAX / 8, ULONG_MAX / 9,
|
||||
ULONG_MAX / 10, ULONG_MAX / 11, ULONG_MAX / 12, ULONG_MAX / 13,
|
||||
ULONG_MAX / 14, ULONG_MAX / 15, ULONG_MAX / 16, ULONG_MAX / 17,
|
||||
ULONG_MAX / 18, ULONG_MAX / 19, ULONG_MAX / 20, ULONG_MAX / 21,
|
||||
ULONG_MAX / 22, ULONG_MAX / 23, ULONG_MAX / 24, ULONG_MAX / 25,
|
||||
ULONG_MAX / 26, ULONG_MAX / 27, ULONG_MAX / 28, ULONG_MAX / 29,
|
||||
ULONG_MAX / 30, ULONG_MAX / 31, ULONG_MAX / 32, ULONG_MAX / 33,
|
||||
ULONG_MAX / 34, ULONG_MAX / 35, ULONG_MAX / 36
|
||||
};
|
||||
|
||||
#define hexstr(p) (p[0] == '0' && (p[1] == 'x' || p[1] == 'X'))
|
||||
|
||||
|
||||
static int radix_value( CHAR_TYPE c )
|
||||
{
|
||||
if( c >= '0' && c <= '9' ) return( c - '0' );
|
||||
c = __F_NAME(tolower,towlower)(c);
|
||||
if( c >= 'a' && c <= 'i' ) return( c - 'a' + 10 );
|
||||
if( c >= 'j' && c <= 'r' ) return( c - 'j' + 19 );
|
||||
if( c >= 's' && c <= 'z' ) return( c - 's' + 28 );
|
||||
return( 37 );
|
||||
}
|
||||
|
||||
|
||||
static unsigned long int _stol( const CHAR_TYPE *nptr,CHAR_TYPE **endptr,int base,int who)
|
||||
{
|
||||
const CHAR_TYPE *p;
|
||||
const CHAR_TYPE *startp;
|
||||
int digit;
|
||||
unsigned long int value;
|
||||
unsigned long int prev_value;
|
||||
CHAR_TYPE sign;
|
||||
char overflow; /*overflow is used as a flag so it does not
|
||||
*need to be of type CHAR_TYPE */
|
||||
|
||||
if( endptr != NULL ) *endptr = (CHAR_TYPE *)nptr;
|
||||
p = nptr;
|
||||
while( __F_NAME(isspace,iswspace)(*p) ) ++p;
|
||||
sign = *p;
|
||||
if( sign == '+' || sign == '-' ) ++p;
|
||||
if( base == 0 ) {
|
||||
if( hexstr(p) ) base = 16;
|
||||
else if( *p == '0' ) base = 8;
|
||||
else base = 10;
|
||||
}
|
||||
if( base < 2 || base > 36 ) {
|
||||
__set_errno( EDOM );
|
||||
return( 0 );
|
||||
}
|
||||
if( base == 16 ) {
|
||||
if( hexstr(p) ) p += 2; /* skip over '0x' */
|
||||
}
|
||||
startp = p;
|
||||
overflow = 0;
|
||||
value = 0;
|
||||
for(;;) {
|
||||
digit = radix_value( *p );
|
||||
if( digit >= base ) break;
|
||||
if( value > nearly_overflowing[base-2] ) overflow = 1;
|
||||
prev_value = value;
|
||||
value = value * base + digit;
|
||||
if( value < prev_value ) overflow = 1;
|
||||
++p;
|
||||
}
|
||||
if( p == startp ) p = nptr;
|
||||
if( endptr != NULL ) *endptr = (CHAR_TYPE *)p;
|
||||
if( who == 1 ) {
|
||||
if( value >= 0x80000000 ) {
|
||||
if( value == 0x80000000 && sign == '-' ) {
|
||||
; /* OK */
|
||||
} else {
|
||||
overflow = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( overflow ) {
|
||||
__set_errno( ERANGE );
|
||||
if( who == 0 ) return( ULONG_MAX );
|
||||
if( sign == '-' ) return( LONG_MIN );
|
||||
return( LONG_MAX );
|
||||
}
|
||||
if( sign == '-' ) value = - value;
|
||||
return( value );
|
||||
}
|
||||
|
||||
|
||||
_WCRTLINK unsigned long int __F_NAME(strtoul,wcstoul)( const CHAR_TYPE *nptr,
|
||||
CHAR_TYPE **endptr, int base )
|
||||
{
|
||||
return( _stol( nptr, endptr, base, 0 ) );
|
||||
}
|
||||
|
||||
|
||||
_WCRTLINK long int __F_NAME(strtol,wcstol)( const CHAR_TYPE *nptr, CHAR_TYPE **endptr, int base )
|
||||
{
|
||||
return( _stol( nptr, endptr, base, 1 ) );
|
||||
}
|
177
programs/develop/open watcom/trunk/clib/convert/strtoll.c
Normal file
177
programs/develop/open watcom/trunk/clib/convert/strtoll.c
Normal file
@ -0,0 +1,177 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: String to long long conversion routines.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "widechar.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <inttypes.h>
|
||||
#ifdef __WIDECHAR__
|
||||
#include <wctype.h>
|
||||
#else
|
||||
#include <ctype.h>
|
||||
#endif
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include "seterrno.h"
|
||||
|
||||
/* This is heavily based on strtol() implementation; however this code needs
|
||||
* to use 64-bit arithmetic and there is little need to drag in all the
|
||||
* supporting code for people who just need 16- or 32-bit string to integer
|
||||
* conversion.
|
||||
*/
|
||||
|
||||
/*
|
||||
* this table is the largest value that can safely be multiplied
|
||||
* by the associated base without overflowing
|
||||
*/
|
||||
static unsigned long long nearly_overflowing[] = {
|
||||
ULLONG_MAX / 2, ULLONG_MAX / 3, ULLONG_MAX / 4, ULLONG_MAX / 5,
|
||||
ULLONG_MAX / 6, ULLONG_MAX / 7, ULLONG_MAX / 8, ULLONG_MAX / 9,
|
||||
ULLONG_MAX / 10, ULLONG_MAX / 11, ULLONG_MAX / 12, ULLONG_MAX / 13,
|
||||
ULLONG_MAX / 14, ULLONG_MAX / 15, ULLONG_MAX / 16, ULLONG_MAX / 17,
|
||||
ULLONG_MAX / 18, ULLONG_MAX / 19, ULLONG_MAX / 20, ULLONG_MAX / 21,
|
||||
ULLONG_MAX / 22, ULLONG_MAX / 23, ULLONG_MAX / 24, ULLONG_MAX / 25,
|
||||
ULLONG_MAX / 26, ULLONG_MAX / 27, ULLONG_MAX / 28, ULLONG_MAX / 29,
|
||||
ULLONG_MAX / 30, ULLONG_MAX / 31, ULLONG_MAX / 32, ULLONG_MAX / 33,
|
||||
ULLONG_MAX / 34, ULLONG_MAX / 35, ULLONG_MAX / 36
|
||||
};
|
||||
|
||||
static int radix_value( CHAR_TYPE c )
|
||||
{
|
||||
if( c >= '0' && c <= '9' ) return( c - '0' );
|
||||
c = __F_NAME(tolower,towlower)(c);
|
||||
if( c >= 'a' && c <= 'i' ) return( c - 'a' + 10 );
|
||||
if( c >= 'j' && c <= 'r' ) return( c - 'j' + 19 );
|
||||
if( c >= 's' && c <= 'z' ) return( c - 's' + 28 );
|
||||
return( 37 );
|
||||
}
|
||||
|
||||
#define hexstr(p) (p[0] == '0' && (p[1] == 'x' || p[1] == 'X'))
|
||||
|
||||
static unsigned long long int _stoll( const CHAR_TYPE *nptr, CHAR_TYPE **endptr, int base, int who )
|
||||
{
|
||||
const CHAR_TYPE *p;
|
||||
const CHAR_TYPE *startp;
|
||||
int digit;
|
||||
unsigned long long int value;
|
||||
unsigned long long int prev_value;
|
||||
CHAR_TYPE sign;
|
||||
char overflow; /*overflow is used as a flag so it does not
|
||||
*need to be of type CHAR_TYPE */
|
||||
|
||||
if( endptr != NULL )
|
||||
*endptr = (CHAR_TYPE *)nptr;
|
||||
p = nptr;
|
||||
while( __F_NAME(isspace,iswspace)(*p) )
|
||||
++p;
|
||||
sign = *p;
|
||||
if( sign == '+' || sign == '-' )
|
||||
++p;
|
||||
if( base == 0 ) {
|
||||
if( hexstr(p) )
|
||||
base = 16;
|
||||
else if( *p == '0' )
|
||||
base = 8;
|
||||
else
|
||||
base = 10;
|
||||
}
|
||||
if( base < 2 || base > 36 ) {
|
||||
__set_errno( EDOM );
|
||||
return( 0 );
|
||||
}
|
||||
if( base == 16 ) {
|
||||
if( hexstr(p) )
|
||||
p += 2; /* skip over '0x' */
|
||||
}
|
||||
startp = p;
|
||||
overflow = 0;
|
||||
value = 0;
|
||||
for(;;) {
|
||||
digit = radix_value( *p );
|
||||
if( digit >= base )
|
||||
break;
|
||||
if( value > nearly_overflowing[base-2] )
|
||||
overflow = 1;
|
||||
prev_value = value;
|
||||
value = value * base + digit;
|
||||
if( value < prev_value )
|
||||
overflow = 1;
|
||||
++p;
|
||||
}
|
||||
if( p == startp )
|
||||
p = nptr;
|
||||
if( endptr != NULL )
|
||||
*endptr = (CHAR_TYPE *)p;
|
||||
if( who == 1 ) {
|
||||
if( value >= 0x8000000000000000 ) {
|
||||
if( value == 0x8000000000000000 && sign == '-' ) {
|
||||
; /* OK */
|
||||
} else {
|
||||
overflow = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( overflow ) {
|
||||
__set_errno( ERANGE );
|
||||
if( who == 0 )
|
||||
return( ULLONG_MAX );
|
||||
if( sign == '-' )
|
||||
return( LLONG_MIN );
|
||||
return( LLONG_MAX );
|
||||
}
|
||||
if( sign == '-' )
|
||||
value = - value;
|
||||
return( value );
|
||||
}
|
||||
|
||||
|
||||
_WCRTLINK unsigned long long int __F_NAME(strtoull,wcstoull)( const CHAR_TYPE *nptr, CHAR_TYPE **endptr, int base )
|
||||
{
|
||||
return( _stoll( nptr, endptr, base, 0 ) );
|
||||
}
|
||||
|
||||
|
||||
_WCRTLINK long long int __F_NAME(strtoll,wcstoll)( const CHAR_TYPE *nptr, CHAR_TYPE **endptr, int base )
|
||||
{
|
||||
return( _stoll( nptr, endptr, base, 1 ) );
|
||||
}
|
||||
|
||||
/* Assuming that intmax_t is equal to long long and uintmax_t to unsigned long long */
|
||||
_WCRTLINK uintmax_t __F_NAME(strtoumax,wcstoumax)( const CHAR_TYPE *nptr, CHAR_TYPE **endptr, int base )
|
||||
{
|
||||
return( _stoll( nptr, endptr, base, 0 ) );
|
||||
}
|
||||
|
||||
_WCRTLINK intmax_t __F_NAME(strtoimax,wcstoimax)( const CHAR_TYPE *nptr, CHAR_TYPE **endptr, int base )
|
||||
{
|
||||
return( _stoll( nptr, endptr, base, 1 ) );
|
||||
}
|
32
programs/develop/open watcom/trunk/clib/fpu/clearfpe.h
Normal file
32
programs/develop/open watcom/trunk/clib/fpu/clearfpe.h
Normal file
@ -0,0 +1,32 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: prototype for _ClearFPE clib internal function
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
extern void _ClearFPE( void );
|
149
programs/develop/open watcom/trunk/clib/fpu/cntrl87.c
Normal file
149
programs/develop/open watcom/trunk/clib/fpu/cntrl87.c
Normal file
@ -0,0 +1,149 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <math.h>
|
||||
#include <float.h>
|
||||
#include "rtdata.h"
|
||||
|
||||
extern void __fstcw();
|
||||
extern void __fldcw();
|
||||
|
||||
#if defined(__WINDOWS__) && !defined(__WINDOWS_386__)
|
||||
|
||||
extern void __far _fpmath();
|
||||
#pragma aux _fpmath "__fpmath";
|
||||
|
||||
void __win87em_fldcw(unsigned int);
|
||||
#pragma aux __win87em_fldcw = \
|
||||
"push bx" \
|
||||
"mov bx, 4h" \
|
||||
"call far ptr _fpmath" \
|
||||
"pop bx" \
|
||||
parm [ax]
|
||||
|
||||
unsigned int __win87em_fstcw(void);
|
||||
#pragma aux __win87em_fstcw = \
|
||||
"push bx" \
|
||||
"mov bx, 5h" \
|
||||
"call far ptr _fpmath" \
|
||||
"pop bx" \
|
||||
value [ax]
|
||||
|
||||
#elif defined( __DOS_086__ )
|
||||
|
||||
extern unsigned char __dos87real;
|
||||
#pragma aux __dos87real "*";
|
||||
|
||||
extern unsigned short __dos87emucall;
|
||||
#pragma aux __dos87emucall "*";
|
||||
|
||||
void _WCI86NEAR __dos_emu_fldcw( unsigned short * );
|
||||
#pragma aux __dos_emu_fldcw "*" = \
|
||||
"mov ax,3" \
|
||||
"call __dos87emucall" \
|
||||
parm [bx];
|
||||
|
||||
void _WCI86NEAR __dos_emu_fstcw( unsigned short * );
|
||||
#pragma aux __dos_emu_fstcw "*" = \
|
||||
"mov ax,4" \
|
||||
"call __dos87emucall" \
|
||||
parm [bx];
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(__386__)
|
||||
#pragma aux __fstcw = \
|
||||
"fstcw ss:[edi]" \
|
||||
"fwait" \
|
||||
parm caller [edi];
|
||||
#pragma aux __fldcw = \
|
||||
"fldcw ss:[edi]" \
|
||||
parm caller [edi];
|
||||
#else
|
||||
#pragma aux __fstcw = \
|
||||
"xchg ax,bp" \
|
||||
"fstcw [bp]" \
|
||||
"fwait" \
|
||||
"xchg ax,bp" \
|
||||
parm caller [ax];
|
||||
#pragma aux __fldcw = \
|
||||
"xchg ax,bp" \
|
||||
"fldcw [bp]" \
|
||||
"xchg ax,bp" \
|
||||
parm caller [ax];
|
||||
#endif
|
||||
|
||||
_WCRTLINK unsigned _control87( unsigned new, unsigned mask )
|
||||
/**********************************************************/
|
||||
{
|
||||
auto short unsigned int control_word;
|
||||
|
||||
control_word = 0;
|
||||
if( _RWD_8087 ) {
|
||||
#if defined(__WINDOWS__) && !defined(__WINDOWS_386__)
|
||||
__fstcw( &control_word );
|
||||
control_word = __win87em_fstcw();
|
||||
if( mask != 0 ) {
|
||||
control_word = (control_word & ~mask) | (new & mask);
|
||||
__fldcw( &control_word );
|
||||
__fstcw( &control_word ); /* 17-sep-91 */
|
||||
__win87em_fldcw(control_word);
|
||||
}
|
||||
#elif defined( __DOS_086__ )
|
||||
if( __dos87real ) {
|
||||
__fstcw( &control_word );
|
||||
if( mask != 0 ) {
|
||||
control_word = (control_word & ~mask) | (new & mask);
|
||||
__fldcw( &control_word );
|
||||
__fstcw( &control_word );
|
||||
}
|
||||
}
|
||||
if( __dos87emucall ) {
|
||||
__dos_emu_fstcw( &control_word );
|
||||
if( mask != 0 ) {
|
||||
control_word = (control_word & ~mask) | (new & mask);
|
||||
__dos_emu_fldcw( &control_word );
|
||||
__dos_emu_fstcw( &control_word );
|
||||
}
|
||||
}
|
||||
#else
|
||||
__fstcw( &control_word );
|
||||
if( mask != 0 ) {
|
||||
control_word = (control_word & ~mask) | (new & mask);
|
||||
__fldcw( &control_word );
|
||||
__fstcw( &control_word ); /* 17-sep-91 */
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return( control_word );
|
||||
}
|
132
programs/develop/open watcom/trunk/clib/fpu/cntrlfp.c
Normal file
132
programs/develop/open watcom/trunk/clib/fpu/cntrlfp.c
Normal file
@ -0,0 +1,132 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <math.h>
|
||||
#include <float.h>
|
||||
#include "rtdata.h"
|
||||
|
||||
#if defined(__AXP__)
|
||||
|
||||
/*
|
||||
* FPCR Trap Disable Flags
|
||||
*/
|
||||
#define FPCR_INEXACT 0x40000000
|
||||
#define FPCR_UNDERFLOW 0x20000000
|
||||
#define FPCR_OVERFLOW 0x00080000
|
||||
#define FPCR_ZERODIVIDE 0x00040000
|
||||
#define FPCR_INVALID 0x00020000
|
||||
|
||||
extern unsigned long _GetFPCR(void);
|
||||
extern void _SetFPCR(unsigned long);
|
||||
|
||||
static unsigned int MapToCW(unsigned long fpcr)
|
||||
{
|
||||
unsigned int cw;
|
||||
|
||||
/*
|
||||
* The rounding bits are identical but in the highword of the fpcr.
|
||||
*/
|
||||
cw = (fpcr >> 16) & ~(_MCW_RC);
|
||||
|
||||
if (fpcr & FPCR_INEXACT)
|
||||
cw &= ~_EM_INEXACT;
|
||||
|
||||
if (fpcr & FPCR_ZERODIVIDE)
|
||||
cw &= ~_EM_ZERODIVIDE;
|
||||
|
||||
if (fpcr & FPCR_OVERFLOW)
|
||||
cw &= ~_EM_OVERFLOW;
|
||||
|
||||
if (fpcr & FPCR_UNDERFLOW)
|
||||
cw &= ~_EM_UNDERFLOW;
|
||||
|
||||
if (fpcr & FPCR_INVALID)
|
||||
cw &= ~_EM_INVALID;
|
||||
|
||||
return cw;
|
||||
} /* MapToCW() */
|
||||
|
||||
|
||||
static unsigned long MapFromCW(unsigned int cw)
|
||||
{
|
||||
unsigned long fpcr = 0L;
|
||||
|
||||
/*
|
||||
* The rounding bits are identical but in the highword of the fpcr.
|
||||
*/
|
||||
fpcr = (cw & ~_MCW_RC) << 16;
|
||||
|
||||
if (!(cw & _EM_INEXACT))
|
||||
fpcr |= FPCR_INEXACT;
|
||||
|
||||
if (!(cw & _EM_INVALID))
|
||||
fpcr |= FPCR_INVALID;
|
||||
|
||||
if (!(cw & _EM_ZERODIVIDE))
|
||||
fpcr |= FPCR_ZERODIVIDE;
|
||||
|
||||
if (!(cw & _EM_OVERFLOW))
|
||||
fpcr |= FPCR_OVERFLOW;
|
||||
|
||||
if (!(cw & _EM_UNDERFLOW))
|
||||
fpcr |= FPCR_UNDERFLOW;
|
||||
|
||||
return fpcr;
|
||||
} /* MapFromCW() */
|
||||
#endif
|
||||
|
||||
|
||||
_WCRTLINK unsigned _controlfp(unsigned new, unsigned mask)
|
||||
{
|
||||
#if defined(_M_IX86)
|
||||
return _control87(new, mask); /* JBS 99/09/16 */
|
||||
#elif defined(__AXP__)
|
||||
unsigned int cw;
|
||||
|
||||
cw = MapToCW(_GetFPCR());
|
||||
|
||||
if (mask)
|
||||
{
|
||||
cw = (cw & ~mask) | (new & mask);
|
||||
_SetFPCR(MapFromCW(cw));
|
||||
}
|
||||
|
||||
return cw;
|
||||
#elif defined(__PPC__)
|
||||
// No idea yet
|
||||
return( 0 );
|
||||
#elif defined(__MIPS__)
|
||||
// No idea yet either
|
||||
return( 0 );
|
||||
#endif
|
||||
} /* _controlfp() */
|
43
programs/develop/open watcom/trunk/clib/fpu/fclex387.c
Normal file
43
programs/develop/open watcom/trunk/clib/fpu/fclex387.c
Normal file
@ -0,0 +1,43 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "rtdata.h"
|
||||
#include "variety.h"
|
||||
#include "clearfpe.h"
|
||||
|
||||
extern void __ClearFPE(void);
|
||||
#pragma aux __ClearFPE = "fnclex"
|
||||
|
||||
void _ClearFPE( void )
|
||||
{
|
||||
__ClearFPE();
|
||||
} /* _ClearFPE() */
|
68
programs/develop/open watcom/trunk/clib/fpu/ini87386.asm
Normal file
68
programs/develop/open watcom/trunk/clib/fpu/ini87386.asm
Normal file
@ -0,0 +1,68 @@
|
||||
;*****************************************************************************
|
||||
;*
|
||||
;* Open Watcom Project
|
||||
;*
|
||||
;* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* This file contains Original Code and/or Modifications of Original
|
||||
;* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
;* Public License version 1.0 (the 'License'). You may not use this file
|
||||
;* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
;* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
;* provided with the Original Code and Modifications, and is also
|
||||
;* available at www.sybase.com/developer/opensource.
|
||||
;*
|
||||
;* The Original Code and all software distributed under the License are
|
||||
;* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
;* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
;* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
;* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
;* governing rights and limitations under the License.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* Description: routine for checking FPU type
|
||||
;*
|
||||
;*****************************************************************************
|
||||
|
||||
|
||||
include mdef.inc
|
||||
|
||||
modstart init8087
|
||||
|
||||
xdefp __x87id
|
||||
|
||||
__x87id proc
|
||||
sub EAX,EAX
|
||||
push EAX ; allocate space for status word
|
||||
finit ; use default infinity mode
|
||||
fstcw word ptr [ESP] ; save control word
|
||||
fwait
|
||||
pop EAX
|
||||
mov AL,0
|
||||
cmp AH,3
|
||||
jnz nox87
|
||||
push EAX ; allocate space for status word
|
||||
fld1 ; generate infinity by
|
||||
fldz ; dividing 1 by 0
|
||||
fdiv ; ...
|
||||
fld st ; form negative infinity
|
||||
fchs ; ...
|
||||
fcompp ; compare +/- infinity
|
||||
fstsw word ptr [ESP] ; equal for 87/287
|
||||
fwait ; wait fstsw to complete
|
||||
pop EAX ; get NDP status word
|
||||
mov AL,2 ; assume 80287
|
||||
sahf ; store condition bits in flags
|
||||
jz not387 ; it's 287 if infinities equal
|
||||
mov AL,3 ; indicate 80387
|
||||
not387: finit ; re-initialize the 8087
|
||||
nox87: mov AH,0
|
||||
ret ; return
|
||||
__x87id endp
|
||||
|
||||
endmod
|
||||
end
|
@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "rtinit.h"
|
||||
#include <rtinit.h>
|
||||
#include "rtdata.h"
|
||||
|
||||
extern unsigned _WCNEAR __chipbug;
|
59
programs/develop/open watcom/trunk/clib/intel/grabfp87.c
Normal file
59
programs/develop/open watcom/trunk/clib/intel/grabfp87.c
Normal file
@ -0,0 +1,59 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
//#include <signal.h>
|
||||
#include "rtdata.h"
|
||||
|
||||
extern void __Init_FPE_handler();
|
||||
extern void __Fini_FPE_handler();
|
||||
#ifdef __DOS_386__
|
||||
extern int __FPEHandlerStart_;
|
||||
extern int __FPEHandlerEnd_;
|
||||
extern int __DPMI_hosted(void);
|
||||
#endif
|
||||
|
||||
void __GrabFP87( void )
|
||||
{
|
||||
#ifndef __WINDOWS__
|
||||
if( _RWD_FPE_handler_exit != __Fini_FPE_handler ) {
|
||||
#ifdef __DOS_386__
|
||||
if( !_IsPharLap() && ( __DPMI_hosted() == 1 )) {
|
||||
DPMILockLinearRegion((long)&__FPEHandlerStart_,
|
||||
((long)&__FPEHandlerEnd_ - (long)&__FPEHandlerStart_));
|
||||
}
|
||||
#endif
|
||||
__Init_FPE_handler();
|
||||
_RWD_FPE_handler_exit = __Fini_FPE_handler;
|
||||
}
|
||||
#endif
|
||||
}
|
265
programs/develop/open watcom/trunk/clib/intel/i64ts386.asm
Normal file
265
programs/develop/open watcom/trunk/clib/intel/i64ts386.asm
Normal file
@ -0,0 +1,265 @@
|
||||
;*****************************************************************************
|
||||
;*
|
||||
;* Open Watcom Project
|
||||
;*
|
||||
;* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* This file contains Original Code and/or Modifications of Original
|
||||
;* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
;* Public License version 1.0 (the 'License'). You may not use this file
|
||||
;* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
;* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
;* provided with the Original Code and Modifications, and is also
|
||||
;* available at www.sybase.com/developer/opensource.
|
||||
;*
|
||||
;* The Original Code and all software distributed under the License are
|
||||
;* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
;* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
;* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
;* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
;* governing rights and limitations under the License.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
;* DESCRIBE IT HERE!
|
||||
;*
|
||||
;*****************************************************************************
|
||||
|
||||
|
||||
include mdef.inc
|
||||
include struct.inc
|
||||
|
||||
modstart i64tos
|
||||
|
||||
;
|
||||
;
|
||||
; int _CmpBigInt( int sigdigits, int near *bigint )
|
||||
; EAX EDX
|
||||
;
|
||||
xdefp __CmpBigInt
|
||||
xdefp __Rnd2Int
|
||||
xdefp __Bin2String
|
||||
|
||||
defpe __CmpBigInt
|
||||
push EDI ; save EDI
|
||||
push ECX ; save ECX
|
||||
call getpow10 ; get address of Power of 10 table
|
||||
inc EAX ; ++sigdigits
|
||||
lea EDI,[EDI+EAX*8] ; point to Pow10Table[sigdigits+1]
|
||||
mov ECX,[EDX] ; get 64-bit integer
|
||||
mov EDX,4[EDX] ; ...(high part)
|
||||
sub EAX,EAX ; set adjustment to 0
|
||||
_loop ; loop
|
||||
cmp EDX,cs:[EDI] ; - check against 10**k
|
||||
_if e ; - if high parts equal
|
||||
cmp ECX,cs:4[EDI] ; - - compare low part
|
||||
_endif ; - endif
|
||||
_quif b ; - quit if num < 10**k
|
||||
add EDI,8 ; - set pointer to 10**(k+1)
|
||||
inc EAX ; - increment adjustment word
|
||||
_endloop ; endloop
|
||||
sub EDI,8 ; point at 10**(k-1)
|
||||
_loop ; loop
|
||||
cmp EDX,cs:[EDI] ; - check against 10**k
|
||||
_if e ; - if high parts equal
|
||||
cmp ECX,cs:4[EDI] ; - - compare low part
|
||||
_endif ; - endif
|
||||
_quif nb ; - quit if num >= 10**(k-1)
|
||||
sub EDI,8 ; - set pointer to 10**(k-2)
|
||||
dec EAX ; - increment adjustment word
|
||||
_endloop ; endloop
|
||||
pop ECX ; restore ECX
|
||||
pop EDI ; restore EDI
|
||||
ret ; return to caller
|
||||
endproc __CmpBigInt
|
||||
|
||||
;[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
|
||||
;[]
|
||||
;[] Rnd2int rounds the real pointed to by EAX to a 64 bit integer.
|
||||
;[]
|
||||
;[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
|
||||
; void _Rnd2Int( double near *realnum, int near *bigint )
|
||||
; EAX EDX
|
||||
;
|
||||
defpe __Rnd2Int
|
||||
push EBX ; save registers
|
||||
push ECX ; save ECX
|
||||
push EDX ; save EDX
|
||||
push EBP ; save EBP
|
||||
push ESI ; save ESI
|
||||
push EDX ; save address of bigint array
|
||||
mov EBP,EAX ; get address of realnum
|
||||
mov ECX,[EBP] ; load the number
|
||||
mov EBX,4[EBP] ; . . .
|
||||
mov EBP,EBX ; save high word
|
||||
and EBP,0FFF00000h ; isolate exponent in EBP
|
||||
xor EBX,EBP ; isolate mantissa in EDX
|
||||
xor EBX,00100000h ; turn on implied '1' bit in mantissa
|
||||
shr EBP,20 ; move exponent to bottom part of word
|
||||
sub EBP,0433h ; calculate difference from 2**53
|
||||
_if ne ; if not already the right size
|
||||
_if a ; - if too big
|
||||
_loop ; - - loop
|
||||
shl ECX,1 ; - - - shift real left by one
|
||||
rcl EBX,1 ; - - - . . .
|
||||
dec EBP ; - - - decrement count
|
||||
_until e ; - - until count = 0
|
||||
_else ; - else
|
||||
sub EAX,EAX ; - - clear remainder
|
||||
sub ESI,ESI ; - - clear remainder bit bucket
|
||||
_loop ; - - loop
|
||||
shr EBX,1 ; - - - shift real right by one
|
||||
rcr ECX,1 ; - - - . . .
|
||||
rcr EAX,1 ; - - - save remainder
|
||||
adc ESI,ESI ; - - - remember if any bits fell off end
|
||||
inc EBP ; - - - increment count
|
||||
_until e ; - - until e
|
||||
_guess rup ; - - do we have to round up?
|
||||
cmp EAX,80000000h;- - - compare remainder with .5000000
|
||||
_quif b,rup ; - - - kick out if less than .5
|
||||
_if e ; - - - magical stuff if looks like a .5
|
||||
or ESI,ESI ; - - - any bits dropped off the bottom
|
||||
_if e ; - - - if not
|
||||
test ECX,1 ; - - - - - is bottom digit even?
|
||||
_quif e,rup ; - - - - - kick out if it is
|
||||
_endif ; - - - - endif
|
||||
_endif ; - - - endif
|
||||
add ECX,01 ; - - - round up the number
|
||||
adc EBX,00 ; - - - . . .
|
||||
_endguess ; - - endguess
|
||||
_endif ; - endif
|
||||
_endif ; endif
|
||||
pop EBP ; get address of bigint array
|
||||
mov [EBP],ECX ; store 64-bit integer
|
||||
mov 4[EBP],EBX ; . . .
|
||||
pop ESI ; restore ESI
|
||||
pop EBP ; restore EBP
|
||||
pop EDX ; restore EDX
|
||||
pop ECX ; restore ECX
|
||||
pop EBX ; restore EBX
|
||||
ret ; return
|
||||
endproc __Rnd2Int
|
||||
|
||||
;[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
|
||||
;[]
|
||||
;[] Bin2string converts a binary integer into a string
|
||||
;[]
|
||||
;[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
|
||||
; void _Bin2String(
|
||||
; int near *bigint, /* EAX */
|
||||
; char near *bufptr, /* EDX */
|
||||
; int sigdigits ) /* EBX */
|
||||
;
|
||||
defpe __Bin2String
|
||||
push EBP ; save EBP
|
||||
push EDI ; save EDI
|
||||
push ECX ; save ECX
|
||||
push EBX ; save EBX
|
||||
mov EBP,EAX ; get address of bigint array
|
||||
mov ECX,[EBP] ; get 64-bit integer
|
||||
mov EAX,4[EBP] ; . . .
|
||||
mov EBP,EDX ; get buffer pointer
|
||||
add EBP,EBX ; point to end of buffer
|
||||
mov byte ptr [EBP],0; put in null character
|
||||
;
|
||||
; input:
|
||||
; EAX:ECX - 64-bit integer
|
||||
; EBP - pointer to buffer for digits
|
||||
; EBX - digit count
|
||||
|
||||
push EAX ; save high word of quotient
|
||||
_loop ; loop
|
||||
pop EAX ; - restore high word of quotient
|
||||
mov EDI,10000 ; - divisor is 10000
|
||||
sub EDX,EDX ; - zero high word
|
||||
or EAX,EAX ; - check high word
|
||||
jne div1 ; - do all divides
|
||||
or ECX,ECX ; - check low order word
|
||||
jne div2 ; - skip first divide
|
||||
push EAX ; - save high word of quotient
|
||||
jmp short div5 ; - result is 0
|
||||
div1: div EDI ; - divide EAX:ECX by 10000
|
||||
div2: xchg ECX,EAX ; - ...
|
||||
div EDI ; - ...
|
||||
|
||||
; quotient is in ECX:EAX
|
||||
; remainder is in EDX
|
||||
|
||||
xchg ECX,EAX ; - move quotient to EAX:ECX
|
||||
push EAX ; - save high word of quotient
|
||||
mov EAX,EDX ; - get remainder
|
||||
mov DL,100 ; - get divisor
|
||||
div DL ; - split remainder into 2 parts
|
||||
mov DL,AH ; - save low order part
|
||||
mov AH,0 ; - zero
|
||||
aam ; - split top part into 2 digits
|
||||
xchg EDX,EAX ; - DH, DL gets top 2 digits, AX gets low part
|
||||
mov AH,0 ; - zero
|
||||
aam ; - split low part into 2 digits
|
||||
div5: add AX,3030h ; - make ASCII digits
|
||||
add DX,3030h ; - ...
|
||||
sub EBP,4 ; - move back 4
|
||||
mov 3[EBP],AL ; - put low order digit in buffer
|
||||
dec EBX ; - decrement digit count
|
||||
_quif e ; - quit if done
|
||||
mov 2[EBP],AH ; - ...
|
||||
dec EBX ; - decrement digit count
|
||||
_quif e ; - quit if done
|
||||
mov 1[EBP],DL ; - ...
|
||||
dec EBX ; - decrement digit count
|
||||
_quif e ; - quit if done
|
||||
mov [EBP],DH ; - put high order digit in buffer
|
||||
dec EBX ; - decrement digit count
|
||||
_until e ; until done
|
||||
|
||||
pop EAX ; remove high word of quotient
|
||||
pop EBX ; restore EBX
|
||||
pop ECX ; restore ECX
|
||||
pop EDI ; restore EDI
|
||||
pop EBP ; restore EBP
|
||||
ret ; return
|
||||
endproc __Bin2String
|
||||
|
||||
;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||
;<> <>
|
||||
;<> 64-bit integer powers of 10 table <>
|
||||
;<> <>
|
||||
;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
|
||||
getpow10 proc near ; get address of powers of 10 table
|
||||
call pow10end ; call around the table
|
||||
pow10table: ; powers of 10 table
|
||||
dd 000000000h,000000000h ; 0
|
||||
dd 000000000h,000000001h ; 10**00
|
||||
dd 000000000h,00000000ah ; 10**01
|
||||
dd 000000000h,000000064h ; 10**02
|
||||
dd 000000000h,0000003e8h ; 10**03
|
||||
dd 000000000h,000002710h ; 10**04
|
||||
dd 000000000h,0000186a0h ; 10**05
|
||||
dd 000000000h,0000f4240h ; 10**06
|
||||
dd 000000000h,000989680h ; 10**07
|
||||
dd 000000000h,005f5e100h ; 10**08
|
||||
dd 000000000h,03b9aca00h ; 10**09
|
||||
dd 000000002h,0540be400h ; 10**10
|
||||
dd 000000017h,04876e800h ; 10**11
|
||||
dd 0000000e8h,0d4a51000h ; 10**12
|
||||
dd 000000918h,04e72a000h ; 10**13
|
||||
dd 000005af3h,0107a4000h ; 10**14
|
||||
dd 000038d7eh,0a4c68000h ; 10**15
|
||||
dd 0002386f2h,06fc10000h ; 10**16
|
||||
dd 001634578h,05d8a0000h ; 10**17
|
||||
dd 00de0b6b3h,0a7640000h ; 10**18
|
||||
dd 08ac72304h,089e80000h ; 10**19
|
||||
dd 0ffffffffh,0ffffffffh ; MAX
|
||||
|
||||
pow10end proc near
|
||||
pop EDI ; get address of table
|
||||
ret ; return
|
||||
endproc pow10end
|
||||
endproc getpow10
|
||||
|
||||
endmod
|
||||
end
|
40
programs/develop/open watcom/trunk/clib/intel/save8087.c
Normal file
40
programs/develop/open watcom/trunk/clib/intel/save8087.c
Normal file
@ -0,0 +1,40 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include "87state.h"
|
||||
#include "rtdata.h"
|
||||
|
||||
static void _do_nothing( _87state *st ) {}
|
||||
|
||||
void (*_RWD_Save8087)(_87state *) = _do_nothing;
|
||||
void (*_RWD_Rest8087)(_87state *) = _do_nothing;
|
60
programs/develop/open watcom/trunk/clib/intel/segread.c
Normal file
60
programs/develop/open watcom/trunk/clib/intel/segread.c
Normal file
@ -0,0 +1,60 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <i86.h>
|
||||
|
||||
extern unsigned short _CS(), _DS(), _ES(), _SS();
|
||||
|
||||
#pragma aux _CS = 0x8C 0xC8 /* mov ax,cs */ value [ax];
|
||||
#pragma aux _DS = 0x8C 0xD8 /* mov ax,ds */ value [ax];
|
||||
#pragma aux _ES = 0x8C 0xC0 /* mov ax,es */ value [ax];
|
||||
#pragma aux _SS = 0x8C 0xD0 /* mov ax,ss */ value [ax];
|
||||
#if defined(__386__)
|
||||
extern unsigned short _FS(), _GS();
|
||||
#pragma aux _FS = 0x8C 0xE0 /* mov ax,fs */ value [ax];
|
||||
#pragma aux _GS = 0x8C 0xE8 /* mov ax,gs */ value [ax];
|
||||
#endif
|
||||
|
||||
|
||||
_WCRTLINK void segread( struct SREGS *segregs )
|
||||
{
|
||||
__ptr_check( segregs, 0 );
|
||||
segregs->cs = _CS();
|
||||
segregs->ds = _DS();
|
||||
segregs->es = _ES();
|
||||
segregs->ss = _SS();
|
||||
#if defined(__386__)
|
||||
segregs->fs = _FS();
|
||||
segregs->gs = _GS();
|
||||
#endif
|
||||
}
|
34
programs/develop/open watcom/trunk/clib/math/hugeval.c
Normal file
34
programs/develop/open watcom/trunk/clib/math/hugeval.c
Normal file
@ -0,0 +1,34 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
_WCRTLINKD unsigned short const _HUGEDATA _HugeValue[] = { 0x0000, 0x0000, 0x0000, 0x7ff0 };
|
39
programs/develop/open watcom/trunk/clib/math/hvalptr.c
Normal file
39
programs/develop/open watcom/trunk/clib/math/hvalptr.c
Normal file
@ -0,0 +1,39 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <math.h>
|
||||
#include "rtdata.h"
|
||||
|
||||
_WCRTLINK const double (*__get_HugeValue_ptr()) {
|
||||
return &_HugeValue;
|
||||
}
|
42
programs/develop/open watcom/trunk/clib/math/imaxabs.c
Normal file
42
programs/develop/open watcom/trunk/clib/math/imaxabs.c
Normal file
@ -0,0 +1,42 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation if imaxabs().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <inttypes.h>
|
||||
|
||||
|
||||
_WCRTLINK intmax_t imaxabs( intmax_t j )
|
||||
/**************************************/
|
||||
{
|
||||
if( j < 0 )
|
||||
j = - j;
|
||||
return( j );
|
||||
}
|
44
programs/develop/open watcom/trunk/clib/math/imaxdiv.c
Normal file
44
programs/develop/open watcom/trunk/clib/math/imaxdiv.c
Normal file
@ -0,0 +1,44 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of imaxdiv().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <inttypes.h>
|
||||
|
||||
|
||||
_WCRTLINK imaxdiv_t imaxdiv( intmax_t numer, intmax_t denom )
|
||||
/*************************************************************/
|
||||
{
|
||||
imaxdiv_t result;
|
||||
|
||||
result.quot = numer / denom;
|
||||
result.rem = numer % denom;
|
||||
return( result );
|
||||
}
|
43
programs/develop/open watcom/trunk/clib/math/labs.c
Normal file
43
programs/develop/open watcom/trunk/clib/math/labs.c
Normal file
@ -0,0 +1,43 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of labs().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#undef __INLINE_FUNCTIONS__
|
||||
#include "variety.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
_WCRTLINK long int labs( long int i )
|
||||
/***********************************/
|
||||
{
|
||||
if( i < 0 )
|
||||
i = - i;
|
||||
return( i );
|
||||
}
|
42
programs/develop/open watcom/trunk/clib/math/llabs.c
Normal file
42
programs/develop/open watcom/trunk/clib/math/llabs.c
Normal file
@ -0,0 +1,42 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of llabs().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
_WCRTLINK long long int llabs( long long int i )
|
||||
/**********************************************/
|
||||
{
|
||||
if( i < 0 )
|
||||
i = - i;
|
||||
return( i );
|
||||
}
|
40
programs/develop/open watcom/trunk/clib/math/max.c
Normal file
40
programs/develop/open watcom/trunk/clib/math/max.c
Normal file
@ -0,0 +1,40 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of max().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#undef max
|
||||
|
||||
|
||||
_WCRTLINK int max( int a, int b )
|
||||
/*******************************/
|
||||
{
|
||||
return( ( a > b ) ? a : b );
|
||||
}
|
40
programs/develop/open watcom/trunk/clib/math/min.c
Normal file
40
programs/develop/open watcom/trunk/clib/math/min.c
Normal file
@ -0,0 +1,40 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of min().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#undef min
|
||||
|
||||
|
||||
_WCRTLINK int min( int a, int b )
|
||||
/*******************************/
|
||||
{
|
||||
return( ( a < b ) ? a : b );
|
||||
}
|
68
programs/develop/open watcom/trunk/clib/math/rand.c
Normal file
68
programs/develop/open watcom/trunk/clib/math/rand.c
Normal file
@ -0,0 +1,68 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: Implementation of rand() and srand().
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#include <stdlib.h>
|
||||
#include "randnext.h"
|
||||
#include "rtdata.h"
|
||||
|
||||
|
||||
static unsigned long *initrandnext( void )
|
||||
{
|
||||
_INITRANDNEXT( RETURN_ARG( unsigned long *, NULL ) );
|
||||
return( (unsigned long *)&_RWD_randnext );
|
||||
}
|
||||
|
||||
|
||||
_WCRTLINK int rand( void )
|
||||
/************************/
|
||||
{
|
||||
unsigned long *randptr;
|
||||
|
||||
randptr = initrandnext();
|
||||
if( randptr == NULL ) {
|
||||
return( 0 );
|
||||
}
|
||||
*randptr = *randptr * 1103515245 + 12345;
|
||||
return( (int)( (*randptr >> 16) & 0x7FFF ) );
|
||||
}
|
||||
|
||||
|
||||
_WCRTLINK void srand( unsigned int seed )
|
||||
/***************************************/
|
||||
{
|
||||
unsigned long *randptr;
|
||||
|
||||
randptr = initrandnext();
|
||||
if( randptr != NULL ) {
|
||||
*randptr = seed;
|
||||
}
|
||||
}
|
59
programs/develop/open watcom/trunk/clib/math/randnext.h
Normal file
59
programs/develop/open watcom/trunk/clib/math/randnext.h
Normal file
@ -0,0 +1,59 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
|
||||
* DESCRIBE IT HERE!
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "variety.h"
|
||||
#define _INITRANDNEXT(p)
|
||||
#if defined(__OS2__) || defined(__NT__) || defined(__NETWARE__)
|
||||
// OS/2, NT and NETWARE versions are identical
|
||||
// note that NETWARE is always multi-threaded
|
||||
#if defined(__SW_BM)
|
||||
|
||||
#include "thread.h"
|
||||
#if 0
|
||||
// who ever allocates the thread_data should initialize __randnext
|
||||
if( __THREADDATAPTR->__randnextinit == 0 ) { \
|
||||
__THREADDATAPTR->__randnextinit = 1; \
|
||||
__THREADDATAPTR->__randnext = 1; \
|
||||
}
|
||||
#endif
|
||||
#define _RANDNEXT (__THREADDATAPTR->__randnext)
|
||||
|
||||
#else
|
||||
|
||||
static unsigned long int next = 1;
|
||||
#define _RANDNEXT next
|
||||
|
||||
#endif
|
||||
#else
|
||||
static unsigned long int next = 1;
|
||||
#define _RANDNEXT next
|
||||
#endif
|
45
programs/develop/open watcom/trunk/clib/src/87state.h
Normal file
45
programs/develop/open watcom/trunk/clib/src/87state.h
Normal file
@ -0,0 +1,45 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Open Watcom Project
|
||||
*
|
||||
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original
|
||||
* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
* Public License version 1.0 (the 'License'). You may not use this file
|
||||
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
* provided with the Original Code and Modifications, and is also
|
||||
* available at www.sybase.com/developer/opensource.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
* governing rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Description: prototype for 8087 save/restore state functions and data
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#if defined(_M_IX86)
|
||||
|
||||
typedef struct _87state { /* 80x87 save area */
|
||||
#if defined( __386__ )
|
||||
char data[108]; /* 32-bit save area size */
|
||||
#else
|
||||
char data[94]; /* 16-bit save area size */
|
||||
#endif
|
||||
} _87state;
|
||||
|
||||
extern void (*__Save8087)(_87state *);
|
||||
extern void (*__Rest8087)(_87state *);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user