## modules/up/src/rpsl/gnu/builtin.h

/* [<][>][^][v][top][bottom][index][help] */

## FUNCTIONS

This source file includes following functions.

1. __attribute__
2. abs
3. sign
4. sign
5. sqr
6. sqr
7. even
8. odd
9. lcm
10. clearbit
11. testbit

       1 // This may look like C code, but it is really -*- C++ -*-
       2
       3 /*
       4 Copyright (C) 1988, 1992 Free Software Foundation
       5     written by Doug Lea (dl@rocky.oswego.edu)
       6
       7 This file is part of the GNU C++ Library.  This library is free
       8 software; you can redistribute it and/or modify it under the terms of
       9 the GNU Library General Public License as published by the Free
      10 Software Foundation; either version 2 of the License, or (at your
      11 option) any later version.  This library is distributed in the hope
      12 that it will be useful, but WITHOUT ANY WARRANTY; without even the
      13 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
      14 PURPOSE.  See the GNU Library General Public License for more details.
      15 You should have received a copy of the GNU Library General Public
      16 License along with this library; if not, write to the Free Software
      17 Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
      18 */
      19
      20 /*
      21   arithmetic, etc. functions on built in types
      22 */
      23
      24
      25 #ifndef _builtin_h
      26 #ifdef __GNUG__
      27 #pragma interface
      28 #endif
      29 #define _builtin_h 1
      30
      31 #include <stddef.h>
      32 #include "gnu/std.h"
      33 #include <cmath>
      34
      35 #ifndef __GNUC__
      36 #define __attribute__(x)
         /* [<][>][^][v][top][bottom][index][help] */
      37 #endif
      38
      39 typedef void (*one_arg_error_handler_t)(const char*);
      40 typedef void (*two_arg_error_handler_t)(const char*, const char*);
      41
      42 long         gcd(long, long);
      43 long         lg(unsigned long);
      44 double       pow(double, long);
      45 long         pow(long, long);
      46
      47 extern "C" double       start_timer();
      48 extern "C" double       return_elapsed_time(double last_time = 0.0);
      49
      50 char*        dtoa(double x, char cvt = 'g', int width = 0, int prec = 6);
      51
      52 unsigned int hashpjw(const char*);
      53 unsigned int multiplicativehash(int);
      54 unsigned int foldhash(double);
      55
      56 extern void default_one_arg_error_handler(const char*) __attribute__ ((noreturn));
      57 extern void default_two_arg_error_handler(const char*, const char*) __attribute__ ((noreturn));
      58
      59 extern two_arg_error_handler_t lib_error_handler;
      60
      61 extern two_arg_error_handler_t
      62        set_lib_error_handler(two_arg_error_handler_t f);
      63
      64
      65 #if !defined(IV)
      66
      67 inline short abs(short arg)
         /* [<][>][^][v][top][bottom][index][help] */
      68 {
      69   return (arg < 0)? -arg : arg;
      70 }
      71
      72 inline int sign(long arg)
         /* [<][>][^][v][top][bottom][index][help] */
      73 {
      74   return (arg == 0) ? 0 : ( (arg > 0) ? 1 : -1 );
      75 }
      76
      77 inline int sign(double arg)
         /* [<][>][^][v][top][bottom][index][help] */
      78 {
      79   return (arg == 0.0) ? 0 : ( (arg > 0.0) ? 1 : -1 );
      80 }
      81
      82 inline long sqr(long arg)
         /* [<][>][^][v][top][bottom][index][help] */
      83 {
      84   return arg * arg;
      85 }
      86
      87 #if ! _G_MATH_H_INLINES /* hpux and SCO define this in math.h */
      88 inline double sqr(double arg)
         /* [<][>][^][v][top][bottom][index][help] */
      89 {
      90   return arg * arg;
      91 }
      92 #endif
      93
      94 inline int even(long arg)
         /* [<][>][^][v][top][bottom][index][help] */
      95 {
      96   return !(arg & 1);
      97 }
      98
      99 inline int odd(long arg)
         /* [<][>][^][v][top][bottom][index][help] */
     100 {
     101   return (arg & 1);
     102 }
     103
     104 inline long lcm(long x, long y)
         /* [<][>][^][v][top][bottom][index][help] */
     105 {
     106   return x / gcd(x, y) * y;
     107 }
     108
     109 inline void (setbit)(long& x, long b)
     110 {
     111   x |= (1 << b);
     112 }
     113
     114 inline void clearbit(long& x, long b)
         /* [<][>][^][v][top][bottom][index][help] */
     115 {
     116   x &= ~(1 << b);
     117 }
     118
     119 inline int testbit(long x, long b)
         /* [<][>][^][v][top][bottom][index][help] */
     120 {
     121   return ((x & (1 << b)) != 0);
     122 }
     123
     124 #endif
     125 #endif

/* [<][>][^][v][top][bottom][index][help] */