Whole document tree
    

Whole document tree

gen-num-limits.cc File Reference
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

gen-num-limits.cc File Reference

#include <config.h>
#include <limits.h>
#include <float.h>
#include <stdio.h>
#include <signal.h>
#include <setjmp.h>
#include <math.h>

Include dependency graph for gen-num-limits.cc:

Include dependency graph

Go to the source code of this file.

Compounds

struct  declarator
struct  division_by_zero
struct  overflow
struct  predicate
struct  type_name_trait
struct  underflow

Defines

#define sigjmp_buf   jmp_buf
#define sigsetjmp(buf, save)   setjmp (buf)
#define siglongjmp(env, ret)   longjmp (env, ret)
#define SPECIALIZE_TRAPPING(T)
#define DEFINED_TYPE_NAME(T)
#define SPECIALIZE_EXACTNESS(T)
#define SPECIALIZE_IEC559(T)
#define DEFINE_EXTREMA(T, m, M)   DO_DEFINE_EXTREMA(T, m, M)
#define DO_DEFINE_EXTREMA(T, m, M)
#define SPECIALIZE_DIGITS(T, D, D10)
#define SPECIALIZE_RADIX(T, R)
#define SPECIALIZE_EPSILON(T, E)   DO_SPECIALIZE_EPSILON(T, E)
#define DO_SPECIALIZE_EPSILON(T, E)
#define SPECIALIZE_ROUND_ERROR(T, R)
#define SPECIALIZE_EXPONENTS(T, m, m10, M, M10)
#define INSTANTIATIONS(TYPE)

Functions

template<typename signal_handler_type, typename signal_number_type> void(*)(int) signal_adapter (signal_handler_type(*signal_func)(signal_number_type, signal_handler_type), signal_number_type arg, void(*handler)(int))
void signal_handler (int sig)
template<typename Operation> bool trapping (const Operation &op)
void set_signals_handler ()
template<typename T> void traps ()
 SPECIALIZE_TRAPPING (unsigned char)
 DEFINED_TYPE_NAME (bool)
 DEFINED_TYPE_NAME (char)
 DEFINED_TYPE_NAME (signed char)
 DEFINED_TYPE_NAME (unsigned char)
 DEFINED_TYPE_NAME (wchar_t)
 DEFINED_TYPE_NAME (short)
 DEFINED_TYPE_NAME (int)
 DEFINED_TYPE_NAME (long)
 DEFINED_TYPE_NAME (float)
 DEFINED_TYPE_NAME (double)

Variables

const char tab [] = " "
const char tab2 [] = " "
const char * bool_alpha [] = { "false", "true" }
const double log10_of_two = .30102999566398119
const int bits_per_byte = CHAR_BIT
const int integer_base_rep = 2
sigjmp_buf env


Define Documentation

#define DEFINE_EXTREMA T,
m,
     DO_DEFINE_EXTREMA(T, m, M)
 

#define DEFINED_TYPE_NAME  
 

Value:

template<>                                                              \
const char type_name_trait< T >::type_name[] = #T;                      \
template<>                                                              \
const char type_name_trait< T >::trait_name[] = "numeric_limits<" #T ">";

Definition at line 208 of file gen-num-limits.cc.

#define DO_DEFINE_EXTREMA T,
m,
 
 

Value:

template<>                                                              \
const char value< T >::min[] = #m;                  \
template<>                                                              \
const char value< T >::max[] = #M

#define DO_SPECIALIZE_EPSILON T,
 
 

Value:

template<>                  \
const char value< T >::epsilon[] = #E

#define INSTANTIATIONS TYPE   
 

Value:

template struct predicate<TYPE>;        \
  template struct value<TYPE>

#define sigjmp_buf   jmp_buf
 

Definition at line 55 of file gen-num-limits.cc.

#define siglongjmp env,
ret       longjmp (env, ret)
 

Definition at line 57 of file gen-num-limits.cc.

Referenced by signal_handler().

#define sigsetjmp buf,
save       setjmp (buf)
 

Definition at line 56 of file gen-num-limits.cc.

Referenced by trapping().

#define SPECIALIZE_DIGITS T,
D,
D10   
 

Value:

template<>                  \
const int value< T >::digits = D;       \
template<>                  \
const int value< T >::digits10 = D10

#define SPECIALIZE_EPSILON T,
     DO_SPECIALIZE_EPSILON(T, E)
 

#define SPECIALIZE_EXACTNESS  
 

Value:

template<>                                                              \
const bool predicate< T >::is_integer = false;              \
template<>                                                              \
const bool predicate< T >::is_exact = false

#define SPECIALIZE_EXPONENTS T,
m,
m10,
M,
M10   
 

Value:

template<>                  \
const int value< T >::min_exponent = m;     \
template<>                  \
const int value< T >::min_exponent10 = m10; \
template<>                  \
const int value< T >::max_exponent = M;     \
template<>                  \
const int value< T >::max_exponent10 = M10

#define SPECIALIZE_IEC559  
 

Value:

template<>                                                              \
const bool predicate< T >::is_iec559 = true

#define SPECIALIZE_RADIX T,
 
 

Value:

template<>                  \
const int value< T >::radix = R

#define SPECIALIZE_ROUND_ERROR T,
 
 

Value:

template<>                  \
const char value< T >::round_error[] = #R

#define SPECIALIZE_TRAPPING  
 

Value:

template<> void traps< T >()                                            \
{                                       \
  fflush(NULL);                                                         \
  set_signals_handler();                                                \
  const char* p = bool_alpha[trapping(division_by_zero<T>())];          \
  printf("%s%s = %s;\n", tab2, "static const bool traps", p);           \
}

Definition at line 182 of file gen-num-limits.cc.


Function Documentation

DEFINED_TYPE_NAME double   
 

DEFINED_TYPE_NAME float   
 

DEFINED_TYPE_NAME long   
 

DEFINED_TYPE_NAME int   
 

DEFINED_TYPE_NAME short   
 

DEFINED_TYPE_NAME wchar_t   
 

DEFINED_TYPE_NAME unsigned    char
 

DEFINED_TYPE_NAME signed    char
 

DEFINED_TYPE_NAME char   
 

DEFINED_TYPE_NAME bool   
 

void set_signals_handler  
 

Definition at line 162 of file gen-num-limits.cc.

References signal_adapter(), and signal_handler().

Referenced by traps().

template<typename signal_handler_type, typename signal_number_type>
void(*)(int) signal_adapter   [inline]
 

Definition at line 97 of file gen-num-limits.cc.

References std::arg(), and signal_adapter().

Referenced by set_signals_handler(), signal_adapter(), and signal_handler().

void signal_handler int    sig
 

Definition at line 114 of file gen-num-limits.cc.

References env, siglongjmp, signal_adapter(), and signal_handler().

Referenced by set_signals_handler(), and signal_handler().

SPECIALIZE_TRAPPING unsigned    char
 

template<typename Operation>
bool trapping const Operation &    op
 

Definition at line 126 of file gen-num-limits.cc.

References env, and sigsetjmp.

Referenced by traps().

template<typename T>
void traps  
 

Definition at line 171 of file gen-num-limits.cc.

References bool_alpha, set_signals_handler(), tab2, and trapping().


Variable Documentation

const int bits_per_byte = CHAR_BIT
 

Definition at line 64 of file gen-num-limits.cc.

const char* bool_alpha[] = { "false", "true" }
 

Definition at line 62 of file gen-num-limits.cc.

Referenced by traps().

sigjmp_buf env
 

Definition at line 92 of file gen-num-limits.cc.

Referenced by signal_handler(), and trapping().

const int integer_base_rep = 2
 

Definition at line 65 of file gen-num-limits.cc.

const double log10_of_two = .30102999566398119
 

Definition at line 63 of file gen-num-limits.cc.

const char tab[] = " "
 

Definition at line 60 of file gen-num-limits.cc.

Referenced by declarator< T >::end(), and declarator< T >::start().

const char tab2[] = " "
 

Definition at line 61 of file gen-num-limits.cc.

Referenced by traps().


Generated on Mon Apr 8 03:12:54 2002 for libstdc++-v3 Source by doxygen1.2.15