Clib char & math functions

git-svn-id: svn://kolibrios.org@554 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge) 2007-06-26 11:19:49 +00:00
parent 836c97f0ac
commit 43bd1e645f
64 changed files with 3847 additions and 1 deletions

View 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 );
}
}

View 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

View 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

View 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 );
}
}

View 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 );
}
}

View 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 );
}

View 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 );
}
}

View 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 );
}
}

View 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 );
}
}

View 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 );
}
}

View 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 );
}
}

View 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 );
}
}

View 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 );
}
}

View 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 );
}
}

View 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 );
}
}

View 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 );
}
}

View 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__ };

View 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

View 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 );
}
}

View 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 );
}
}

View 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 );
}
}

View 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 );
}
}

View 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 );
}

View 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 );
}

View 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

View 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

View 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

View 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

View 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 ) );
}

View 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 ) );
}

View 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 );

View 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 );
}

View 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() */

View 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() */

View 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

View File

@ -30,7 +30,7 @@
#include "variety.h"
#include "rtinit.h"
#include <rtinit.h>
#include "rtdata.h"
extern unsigned _WCNEAR __chipbug;

View 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
}

View 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

View 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;

View 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
}

View 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 };

View 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;
}

View 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 );
}

View 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 );
}

View 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 );
}

View 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 );
}

View 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 );
}

View 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 );
}

View 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;
}
}

View 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

View 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