Coin Logo http://www.sim.no/
http://www.coin3d.org/

basic.h
00001 /* include/Inventor/C/basic.h.  Generated from basic.h.in by configure.  */
00002 /**************************************************************************\
00003  *
00004  *  This file is part of the Coin 3D visualization library.
00005  *  Copyright (C) by Kongsberg Oil & Gas Technologies.
00006  *
00007  *  This library is free software; you can redistribute it and/or
00008  *  modify it under the terms of the GNU General Public License
00009  *  ("GPL") version 2 as published by the Free Software Foundation.
00010  *  See the file LICENSE.GPL at the root directory of this source
00011  *  distribution for additional information about the GNU GPL.
00012  *
00013  *  For using Coin with software that can not be combined with the GNU
00014  *  GPL, and for taking advantage of the additional benefits of our
00015  *  support services, please contact Kongsberg Oil & Gas Technologies
00016  *  about acquiring a Coin Professional Edition License.
00017  *
00018  *  See http://www.coin3d.org/ for more information.
00019  *
00020  *  Kongsberg Oil & Gas Technologies, Bygdoy Alle 5, 0257 Oslo, NORWAY.
00021  *  http://www.sim.no/  sales@sim.no  coin-support@coin3d.org
00022  *
00023 \**************************************************************************/
00024 
00025 #ifndef COIN_BASIC_H
00026 #define COIN_BASIC_H
00027 
00028 /*
00029   NOTE: basic.h is automatically generated from basic.h.in, so don't
00030   edit basic.h directly.
00031 */
00032 
00033 /* *********************************************************************** */
00034 
00035 /* Documented for Doxygen in SoDB.cpp. */
00036 typedef int SbBool;
00037 
00038 #ifdef DOXYGEN_SKIP_THIS
00039 #ifndef USE_STATIC_CONSTS
00040 /*
00041   Using static consts might have some problems with merging on older
00042   compilers, so lie for doxygen for now, this is tested and found
00043   working on GCC 4.(1-3)
00044 */
00045 #define USE_STATIC_CONSTS
00046 #endif //USE_STATIC_CONSTS
00047 #endif //DOXYGEN_SKIP_THIS
00048 
00049 #ifndef FALSE
00050 #ifdef USE_STATIC_CONSTS
00051 static const SbBool FALSE = 0;
00052 #else
00053 #define FALSE 0
00054 #endif //USE_STATIC_CONSTS
00055 #endif /* !FALSE */
00056 
00057 #ifndef TRUE
00058 #ifdef USE_STATIC_CONSTS
00059 static const SbBool TRUE = 1;
00060 #else
00061 #define TRUE 1
00062 #endif //USE_STATIC_CONSTS
00063 #endif /* !TRUE */
00064 
00065 /* *********************************************************************** */
00066 
00067 /* Ye good olde min/max macros. No library would be complete without them. */
00068 
00069 #define cc_min(x, y) (((x) < (y)) ? (x) : (y))
00070 #define cc_max(x, y) (((x) > (y)) ? (x) : (y))
00071 
00072 /* *********************************************************************** */
00073 
00074 /* Include this to 1) be compatible with Open Inventor's SbBasic.h, 2)
00075  * provide a way for application programmers to get hold of the type
00076  * definitions without explicitly including inttypes.h.
00077  *
00078  * The latter point is important because the inttypes.h file in SGI
00079  * and TGS Open Inventor is placed _below_ the Inventor/ directory in
00080  * the header files hierarchy. This is a stupid thing to do because it
00081  * could easily conflict with the inttypes.h file installed as part of
00082  * the C library on many systems (like GNU/Linux's glibc, for
00083  * instance).
00084  */
00085 #include <Inventor/system/inttypes.h>
00086 
00087 /* Internal note for Coin developers: in other sourcefiles in Coin, we
00088  * depend on math.h being included through SbBasic.h. It is done this
00089  * way to always make sure we have the M_* symbols available under
00090  * MSWin (see below). So don't remove the following line unless you
00091  * know very well what you are doing.
00092  */
00093 #include <math.h>
00094 
00095 /* Define misc values if they are not available from math.h. UNIX
00096  * systems typically have these defines, and MSWindows systems don't.
00097  */
00098 #ifndef M_E
00099 #define M_E 2.7182818284590452354
00100 #endif /* !M_E */
00101 #ifndef M_LOG2E
00102 #define M_LOG2E 1.4426950408889634074
00103 #endif /* !M_LOG2E */
00104 #ifndef M_LOG10E
00105 #define M_LOG10E 0.43429448190325182765
00106 #endif /* !M_LOG10E */
00107 #ifndef M_LN2
00108 #define M_LN2 0.69314718055994530942
00109 #endif /* !M_LN2 */
00110 #ifndef M_LN10
00111 #define M_LN10 2.30258509299404568402
00112 #endif /* !M_LN10 */
00113 #ifndef M_PI
00114 #define M_PI 3.14159265358979323846
00115 #endif /* !M_PI */
00116 #ifndef M_TWOPI
00117 #define M_TWOPI (M_PI * 2.0)
00118 #endif /* !M_TWOPI */
00119 #ifndef M_PI_2
00120 #define M_PI_2 1.57079632679489661923
00121 #endif /* !M_PI_2 */
00122 #ifndef M_PI_4
00123 #define M_PI_4 0.78539816339744830962
00124 #endif /* !M_PI_4 */
00125 #ifndef M_3PI_4
00126 #define M_3PI_4 2.3561944901923448370E0
00127 #endif /* !M_3PI_4 */
00128 #ifndef M_SQRTPI
00129 #define M_SQRTPI 1.77245385090551602792981
00130 #endif /* !M_SQRTPI */
00131 #ifndef M_1_PI
00132 #define M_1_PI 0.31830988618379067154
00133 #endif /* !M_1_PI */
00134 #ifndef M_2_PI
00135 #define M_2_PI 0.63661977236758134308
00136 #endif /* !M_2_PI */
00137 #ifndef M_2_SQRTPI
00138 #define M_2_SQRTPI 1.12837916709551257390
00139 #endif /* !M_2_SQRTPI */
00140 #ifndef M_SQRT2
00141 #define M_SQRT2 1.41421356237309504880
00142 #endif /* !M_SQRT2 */
00143 #ifndef M_SQRT1_2
00144 #define M_SQRT1_2 0.70710678118654752440
00145 #endif /* !M_SQRT1_2 */
00146 #ifndef M_LN2LO
00147 #define M_LN2LO 1.9082149292705877000E-10
00148 #endif /* !M_LN2LO */
00149 #ifndef M_LN2HI
00150 #define M_LN2HI 6.9314718036912381649E-1
00151 #endif /* !M_LN2HI */
00152 #ifndef M_SQRT3
00153 #define M_SQRT3 1.73205080756887719000
00154 #endif /* !M_SQRT3 */
00155 #ifndef M_IVLN10
00156 #define M_IVLN10 0.43429448190325182765 /* 1 / log(10) */
00157 #endif /* !M_IVLN10 */
00158 #ifndef M_LOG2_E
00159 #define M_LOG2_E 0.693147180559945309417
00160 #endif /* !M_LOG2_E */
00161 #ifndef M_INVLN2
00162 #define M_INVLN2 1.4426950408889633870E0 /* 1 / log(2) */
00163 #endif /* !M_INVLN2 */
00164 
00165 /* *********************************************************************** */
00166 
00167 /* A unique identifier to recognize whether or not we're running under
00168  * Kongsberg Oil & Gas Technologies Coin library.
00169  */
00170 #define __COIN__
00171 
00172 /* The following #undef'ed defines are automatically defined and
00173  * synchronized with the settings in configure.in when ``configure''
00174  * is executed.
00175  *
00176  * The #ifndef wrapper is necessary because during development, these
00177  * are also defined in the config.h file generated by ``configure''.
00178  */
00179 #ifndef COIN_VERSION
00180 
00181 /* These are available for adding or omitting features based on Coin
00182  * version numbers in client application sources. */
00183 #define COIN_MAJOR_VERSION 3
00184 #define COIN_MINOR_VERSION 1
00185 #define COIN_MICRO_VERSION 3
00186 /* #undef COIN_BETA_VERSION */
00187 #define COIN_VERSION "3.1.3"
00188 
00189 /* This define is set by the configure script if singleprecision math
00190    functions are available from the C library API headers. */
00191 /* #undef HAVE_SINGLEPRECISION_MATH */
00192 
00193 /* Most compilers should have "hash quoting", as it is part of the
00194    ANSI standard. */
00195 #define HAVE_HASH_QUOTING 1
00196 /* #undef HAVE_APOSTROPHES_QUOTING */
00197 
00198 /* IN_PATH define in HPUX's sys/unistd.h conflicts with SoAction::IN_PATH */
00199 /* #undef COIN_UNDEF_IN_PATH_HACK */
00200 
00201 #endif /* !COIN_VERSION */ /* Ends configure-generated defines. */
00202 
00203 /* *********************************************************************** */
00204 
00205 /* The float-version of the math functions below did not come about
00206    until C99, so we don't want to use them internally, for portability
00207    reasons. */
00208 #ifdef COIN_INTERNAL
00209 #include <Inventor/C/base/math-undefs.h>
00210 #endif /* COIN_INTERNAL */
00211 
00212 /* *********************************************************************** */
00213 
00214 /* SO__QUOTE(str)        - use the preprocessor to quote a string.
00215  * SO__CONCAT(str1,str2) - use the preprocessor to concatenate two strings.
00216  */
00217 
00218 #ifdef HAVE_HASH_QUOTING
00219 #define SO__QUOTE(str)           #str
00220 #define SO__CONCAT(str1, str2)   str1##str2
00221 #elif defined(HAVE_APOSTROPHES_QUOTING)
00222 #define SO__QUOTE(str)           "str"
00223 #define SO__CONCAT(str1, str2)   str1str2
00224 #else
00225 #error No valid way to do macro quoting!
00226 #endif
00227 
00228 /* *********************************************************************** */
00229 
00230 /* Precaution to avoid an some errors easily made by the application
00231    programmer. */
00232 #ifdef COIN_DLL_API
00233 # error Leave the internal COIN_DLL_API define alone.
00234 #endif /* COIN_DLL_API */
00235 #ifdef COIN_INTERNAL
00236 # ifdef COIN_NOT_DLL
00237 #  error The COIN_NOT_DLL define is not supposed to be used when building the library, only when building Win32 applications.
00238 # endif /* COIN_INTERNAL && COIN_NOT_DLL */
00239 # ifdef COIN_DLL
00240 #  error The COIN_DLL define is not supposed to be used when building the library, only when building Win32 applications.
00241 # endif /* COIN_INTERNAL && COIN_DLL */
00242 #endif /* COIN_INTERNAL */
00243 
00244 /*
00245   On MSWindows platforms, one of these defines must always be set when
00246   building application programs:
00247 
00248    - "COIN_DLL", when the application programmer is using the library
00249      in the form of a dynamic link library (DLL)
00250 
00251    - "COIN_NOT_DLL", when the application programmer is using the
00252      library in the form of a static object library (LIB)
00253 
00254   Note that either COIN_DLL or COIN_NOT_DLL _must_ be defined by the
00255   application programmer on MSWindows platforms, or else the #error
00256   statement will hit. Set up one or the other of these two defines in
00257   your compiler environment according to how the library was built --
00258   as a DLL (use "COIN_DLL") or as a LIB (use "COIN_NOT_DLL").
00259 
00260   (Setting up defines for the compiler is typically done by either
00261   adding something like "/DCOIN_DLL" to the compiler's argument line
00262   (for command-line build processes), or by adding the define to the
00263   list of preprocessor symbols in your IDE GUI (in the MSVC IDE, this
00264   is done from the "Project"->"Settings" menu, choose the "C/C++" tab,
00265   then "Preprocessor" from the dropdown box and add the appropriate
00266   define)).
00267 
00268   It is extremely important that the application programmer uses the
00269   correct define, as using "COIN_NOT_DLL" when "COIN_DLL" is correct
00270   will cause mysterious crashes.
00271  */
00272 /* FIXME: use a feature check to see if this is a platform which can
00273    recognize the __declspec keyword instead of the crap #if below.
00274    20011201 mortene. */
00275 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
00276 # ifdef COIN_INTERNAL
00277 #  ifdef COIN_MAKE_DLL
00278 #   define COIN_DLL_API __declspec(dllexport)
00279 #  endif /* COIN_MAKE_DLL */
00280 # else /* !COIN_INTERNAL */
00281 #  ifdef COIN_DLL
00282 #   ifdef COIN_NOT_DLL
00283 #     error Define _either_ COIN_DLL _or_ COIN_NOT_DLL as appropriate for your linkage -- not both at the same time! See Inventor/C/basic.h for further instructions.
00284 #   endif /* COIN_NOT_DLL */
00285 #   define COIN_DLL_API __declspec(dllimport)
00286 #  else /* !COIN_DLL */
00287 #   ifndef COIN_NOT_DLL
00288 #    error Define either COIN_DLL or COIN_NOT_DLL as appropriate for your linkage! See Inventor/C/basic.h for further instructions.
00289 #   endif /* !COIN_NOT_DLL */
00290 #  endif /* !COIN_DLL */
00291 # endif /* !COIN_INTERNAL */
00292 #endif /* Microsoft Windows */
00293 
00294 /* Empty define to avoid errors when _not_ compiling an MSWindows DLL. */
00295 #ifndef COIN_DLL_API
00296 # define COIN_DLL_API
00297 #endif /* !COIN_DLL_API */
00298 
00299 #endif /* !COIN_BASIC_H */

Copyright © 1998-2010 by Kongsberg Oil & Gas Technologies. All rights reserved.

Generated on Fri Dec 11 2015 03:24:52 for Coin by Doxygen 1.7.6.1.