Category : OS/2 Files
Archive   : GPPDEV8F.ZIP
Filename : BUILTIN.H

 
Output of file : BUILTIN.H contained in archive : GPPDEV8F.ZIP
// This may look like C code, but it is really -*- C++ -*-

/*
Copyright (C) 1988, 1992 Free Software Foundation
written by Doug Lea ([email protected])

This file is part of the GNU C++ Library. This library is free
software; you can redistribute it and/or modify it under the terms of
the GNU Library General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your
option) any later version. This library is distributed in the hope
that it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/*
arithmetic, etc. functions on built in types
*/


#ifndef _builtin_h
#ifdef __GNUG__
#pragma interface
#endif
#define _builtin_h 1

#include
#include
#include

#ifdef __GNUG__
#define _VOLATILE_VOID volatile void
#else
#define _VOLATILE_VOID void
#endif

typedef void (*one_arg_error_handler_t)(const char*);
typedef void (*two_arg_error_handler_t)(const char*, const char*);

long gcd(long, long);
long lg(unsigned long);
double pow(double, long);
long pow(long, long);

double start_timer();
double return_elapsed_time(double last_time = 0.0);

char* dtoa(double x, char cvt = 'g', int width = 0, int prec = 6);

char* chr(char ch, int width = 0);
char* str(const char* s, int width = 0);

unsigned int hashpjw(const char*);
unsigned int multiplicativehash(int);
unsigned int foldhash(double);

extern _VOLATILE_VOID default_one_arg_error_handler(const char*);
extern _VOLATILE_VOID default_two_arg_error_handler(const char*, const char*);

extern two_arg_error_handler_t lib_error_handler;

extern two_arg_error_handler_t
set_lib_error_handler(two_arg_error_handler_t f);


double abs(double arg);
float abs(float arg);
short abs(short arg);
long abs(long arg);
int sign(long arg);
int sign(double arg);
long sqr(long arg);
double sqr(double arg);
int even(long arg);
int odd(long arg);
long lcm(long x, long y);
void (setbit)(long& x, long b);
void clearbit(long& x, long b);
int testbit(long x, long b);

#if !defined(IV)

#ifndef hpux /* hpux defines this in math.h */
inline double abs(double arg)
{
return (arg < 0.0)? -arg : arg;
}
#endif

inline float abs(float arg)
{
return (arg < 0.0)? -arg : arg;
}

inline short abs(short arg)
{
return (arg < 0)? -arg : arg;
}

inline long abs(long arg)
{
return (arg < 0)? -arg : arg;
}

inline int sign(long arg)
{
return (arg == 0) ? 0 : ( (arg > 0) ? 1 : -1 );
}

inline int sign(double arg)
{
return (arg == 0.0) ? 0 : ( (arg > 0.0) ? 1 : -1 );
}

inline long sqr(long arg)
{
return arg * arg;
}


#ifndef hpux /* hpux defines this in math.h */
inline double sqr(double arg)
{
return arg * arg;
}
#endif

inline int even(long arg)
{
return !(arg & 1);
}

inline int odd(long arg)
{
return (arg & 1);
}

inline long lcm(long x, long y)
{
return x / gcd(x, y) * y;
}

inline void (setbit)(long& x, long b)
{
x |= (1 << b);
}

inline void clearbit(long& x, long b)
{
x &= ~(1 << b);
}

inline int testbit(long x, long b)
{
return ((x & (1 << b)) != 0);
}

#endif
#endif


  3 Responses to “Category : OS/2 Files
Archive   : GPPDEV8F.ZIP
Filename : BUILTIN.H

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/