Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

vtkExtensionsTypes.h

Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- 00002 * 00003 * $Id: vtkExtensionsTypes.h,v 1.4 2004/08/10 07:37:21 xpxqx Exp $ 00004 * 00005 * Copyright (c) 2004 Sean McInerney 00006 * All rights reserved. 00007 * 00008 * See Copyright.txt or http://vtkextensions.sourceforge.net/Copyright.html 00009 * for details. 00010 * 00011 * This software is distributed WITHOUT ANY WARRANTY; without even 00012 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 * PURPOSE. See the above copyright notice for more information. 00014 * 00015 */ 00016 #ifndef VTK_EXTENSIONS_TYPES_H_ 00017 # define VTK_EXTENSIONS_TYPES_H_ 00018 /* First include the local configuration for this machine. */ 00019 # include "vtkExtensionsConfigure.h" // vtkExtensions configuration 00020 # ifdef __cplusplus 00021 /* Forwarded ANSI C. */ 00022 # include <cstddef> /* size_t, ptrdiff_t, and NULL */ 00023 # else 00024 # include <stddef.h> /* size_t, ptrdiff_t, and NULL */ 00025 # endif /* __cplusplus */ 00026 00038 VTK_EXTENSIONS_BEGIN_EXTERN_C 00039 00042 # if defined(__BORLANDC__) /* Borland/Turbo C++: */ 00043 # include <sys/types.h> /* for size_t and ssize_t */ 00044 # include <limits.h> /* for MAX of size_t and ssize_t */ 00045 # if (__BORLANDC__ < 0x540) 00046 typedef unsigned short vtkXMLChType; 00047 # else 00048 typedef wchar_t vtkXMLChType; /* 2-byte wide char */ 00049 # endif 00050 # elif defined(__MWERKS__) /* Metrowerks CodeWarrior: */ 00051 # if defined(VTK_EXTENSIONS_WIN32) 00052 # include <wchar.h> 00053 # include <wctype.h> 00054 # endif 00055 # if defined(VTK_EXTENSIONS_APPLE) 00056 typedef unsigned short vtkXMLChType; 00057 # elif defined(VTK_EXTENSIONS_WIN32) 00058 typedef wchar_t vtkXMLChType; /* 2-byte wide char */ 00059 # endif 00060 # elif defined(_MSC_VER) && (_MSC_VER>=1100) /* VC++ 5.0 and greater */ 00061 typedef wchar_t vtkXMLChType; /* 2-byte wide char */ 00062 # else /* UNIX */ 00063 # include <sys/types.h> /* for size_t and ssize_t */ 00064 # include <limits.h> /* for MAX of size_t and ssize_t */ 00065 typedef unsigned short vtkXMLChType; 00066 # endif 00067 00071 # if defined(_SIZE_T)&&defined(SIZE_MAX)&&defined(_SSIZE_T)&&defined(SSIZE_MAX) 00072 typedef size_t vtkSizeType; 00073 typedef ssize_t vtkSSizeType; 00074 # define VTK_EXTENSIONS_SIZE_MAX SIZE_MAX 00075 # define VTK_EXTENSIONS_SSIZE_MAX SSIZE_MAX 00076 # else 00077 typedef unsigned long vtkSizeType; 00078 typedef long vtkSSizeType; 00079 # define VTK_EXTENSIONS_SIZE_MAX ULONG_MAX 00080 # define VTK_EXTENSIONS_SSIZE_MAX LONG_MAX 00081 # endif 00082 00086 # if VTK_SIZEOF_CHAR == 1 00087 typedef unsigned char vtkByteType; 00088 typedef unsigned char vtkUint8Type; 00089 /* 00090 * Some cfront-based C++ compilers do not like 'signed char' and 00091 * issue the warning message: 00092 * warning: "signed" not implemented (ignored) 00093 * For these compilers, we have to define vtkInt8Type as plain 'char'. 00094 * Make sure that plain 'char' is indeed signed under these compilers. 00095 */ 00096 # if (defined(HPUX) && defined(__cplusplus) \ 00097 && !defined(__GNUC__) && __cplusplus < 199707L) || \ 00098 (defined(SCO) && defined(__cplusplus) \ 00099 && !defined(__GNUC__) && __cplusplus == 1L) 00100 typedef char vtkInt8Type; 00101 # else 00102 typedef signed char vtkInt8Type; 00103 # endif 00104 # else 00105 # error "No suitable type for vtkInt8Type/vtkUint8Type." 00106 # endif 00107 00111 # define VTK_EXTENSIONS_INT8_MAX 127 00112 # define VTK_EXTENSIONS_INT8_MIN (-128) 00113 # define VTK_EXTENSIONS_UINT8_MAX 255U 00114 00118 # if VTK_SIZEOF_SHORT == 2 00119 typedef unsigned short vtkUint16Type; 00120 typedef short vtkInt16Type; 00121 # else 00122 # error "No suitable type for vtkInt16Type/vtkUint16Type." 00123 # endif 00124 00128 # define VTK_EXTENSIONS_INT16_MAX 32767 00129 # define VTK_EXTENSIONS_INT16_MIN (-32768) 00130 # define VTK_EXTENSIONS_UINT16_MAX 65535U 00131 00135 # if VTK_SIZEOF_INT == 4 00136 typedef unsigned int vtkUint32Type; 00137 typedef int vtkInt32Type; 00138 # define VTK_EXTENSIONS_INT32(x) x 00139 # define VTK_EXTENSIONS_UINT32(x) x ## U 00140 # elif VTK_SIZEOF_LONG == 4 00141 typedef unsigned long vtkUint32Type; 00142 typedef long vtkInt32Type; 00143 # define VTK_EXTENSIONS_INT32(x) x ## L 00144 # define VTK_EXTENSIONS_UINT32(x) x ## UL 00145 # else 00146 # error "No suitable type for vtkInt32Type/vtkUint32Type." 00147 # endif 00148 00152 # define VTK_EXTENSIONS_INT32_MAX VTK_EXTENSIONS_INT32(2147483647) 00153 # define VTK_EXTENSIONS_INT32_MIN (-VTK_EXTENSIONS_INT32_MAX - 1) 00154 # define VTK_EXTENSIONS_UINT32_MAX VTK_EXTENSIONS_UINT32(4294967295) 00155 00160 # define VTK_EXTENSIONS_BIT(_n) ((vtkUint32Type)1 << (_n)) 00161 # define VTK_EXTENSIONS_BITMASK(_n) (VTK_EXTENSIONS_BIT(_n) - 1) 00162 00173 # ifdef VTK_EXTENSIONS_HAVE_LONG_LONG 00174 # if VTK_SIZEOF_LONG == 8 00175 typedef long vtkInt64Type; 00176 typedef unsigned long vtkUint64Type; 00177 # elif defined(VTK_EXTENSIONS_WIN32) && !defined(__GNUC__) 00178 typedef __int64 vtkInt64Type; 00179 typedef unsigned __int64 vtkUint64Type; 00180 # else 00181 typedef long long vtkInt64Type; 00182 typedef unsigned long long vtkUint64Type; 00183 # endif 00184 # else 00185 typedef struct { 00186 # ifdef VTK_EXTENSIONS_IS_LITTLE_ENDIAN 00187 vtkUint32Type lo, hi; 00188 # else 00189 vtkUint32Type hi, lo; 00190 # endif 00191 } vtkInt64Type; 00192 typedef vtkInt64Type vtkUint64Type; 00193 # endif 00194 00202 # if VTK_SIZEOF_INT >= 2 00203 typedef int vtkIntnType; 00204 typedef unsigned int vtkUintnType; 00205 # else 00206 # error 'sizeof(int)' not sufficient for platform use 00207 # endif /* VTK_SIZEOF_INT >= 2 */ 00208 00212 # if VTK_SIZEOF_FLOAT == 4 00213 typedef float vtkFloat32Type; 00214 # elif VTK_SIZEOF_DOUBLE == 4 00215 typedef double vtkFloat32Type; 00216 # else 00217 # error "No suitable type for vtkFloat32Type." 00218 # endif 00219 00220 # if VTK_SIZEOF_DOUBLE == 8 00221 typedef double vtkFloat64Type; 00222 # elif defined(VTK_SIZEOF_LONG_DOUBLE) && VTK_SIZEOF_LONG_DOUBLE == 8 00223 typedef long double vtkFloat64Type; 00224 # else 00225 # error "No suitable type for vtkFloat64Type." 00226 # endif 00227 00231 typedef vtkInt32Type vtkOffset32Type; 00232 typedef vtkInt64Type vtkOffset64Type; 00240 typedef ptrdiff_t vtkPtrdiffType; 00241 typedef unsigned long vtkUptrdiffType; 00251 typedef vtkIntnType vtkBoolType; 00252 # ifndef VTK_TRUE 00253 # define VTK_TRUE 1 00254 # define VTK_FALSE 0 00255 # endif 00256 00262 typedef vtkUint8Type vtkPackedBoolType; 00263 00264 00269 # ifdef VTK_COMPILER_HAS_BOOL 00270 typedef bool vtkstd_bool; 00271 # else 00272 typedef int vtkstd_bool; 00273 # endif /* VTK_COMPILER_HAS_BOOL */ 00274 00278 typedef enum 00279 { 00280 VTK_EXTENSIONS_FAILURE = -1, 00281 VTK_EXTENSIONS_SUCCESS = 0 00282 } vtkStatusType; 00283 00287 typedef vtkUint32Type vtkResultType; 00288 00305 typedef vtkInt8Type vtkChar; /* Latin-1 character type. */ 00306 typedef vtkUint8Type vtkUTF8ChType; /* UTF-8 8 bit character type. */ 00307 typedef vtkUint16Type vtkUTF16ChType; /* UTF-16 16 bit character type. */ 00308 typedef vtkXMLChType vtkDOMChar; /* DOM (16 bit) character type. */ 00309 typedef vtkUint16Type vtkUCS2ChType; /* UCS-2 16 bit character type. */ 00310 typedef vtkUint32Type vtkUTF32ChType; /* UTF-32 32 bit character type. */ 00311 typedef vtkUint32Type vtkUCS4ChType; /* UCS-4 32 bit character type. */ 00317 # define VTK_EXTENSIONS_BIT(_n) ((vtkUint32Type)1 << (_n)) 00318 # define VTK_EXTENSIONS_BITMASK(_n) (VTK_EXTENSIONS_BIT(_n) - 1) 00319 00321 typedef unsigned long vtkBitmapType; 00322 00323 # define VTK_EXTENSIONS_TEST_BIT(_map,_bit) \ 00324 ((_map)[(_bit)>>VTK_EXTENSIONS_BITS_PER_LONG_LOG2] & (1L << ((_bit) & (VTK_EXTENSIONS_BITS_PER_LONG-1)))) 00325 # define VTK_EXTENSIONS_SET_BIT(_map,_bit) \ 00326 ((_map)[(_bit)>>VTK_EXTENSIONS_BITS_PER_LONG_LOG2] |= (1L << ((_bit) & (VTK_EXTENSIONS_BITS_PER_LONG-1)))) 00327 # define VTK_EXTENSIONS_CLEAR_BIT(_map,_bit) \ 00328 ((_map)[(_bit)>>VTK_EXTENSIONS_BITS_PER_LONG_LOG2] &= ~(1L << ((_bit) & (VTK_EXTENSIONS_BITS_PER_LONG-1)))) 00329 00334 # define VTK_EXTENSIONS_CEILING_LOG2(_log2,_n) \ 00335 VTK_EXTENSIONS_BEGIN_MACRO \ 00336 vtkUint32Type j_ = (vtkUint32Type)(_n); \ 00337 (_log2) = 0; \ 00338 if ((j_) & ((j_)-1)) \ 00339 (_log2) += 1; \ 00340 if ((j_) >> 16) \ 00341 (_log2) += 16, (j_) >>= 16; \ 00342 if ((j_) >> 8) \ 00343 (_log2) += 8, (j_) >>= 8; \ 00344 if ((j_) >> 4) \ 00345 (_log2) += 4, (j_) >>= 4; \ 00346 if ((j_) >> 2) \ 00347 (_log2) += 2, (j_) >>= 2; \ 00348 if ((j_) >> 1) \ 00349 (_log2) += 1; \ 00350 VTK_EXTENSIONS_END_MACRO 00351 00358 # define VTK_EXTENSIONS_FLOOR_LOG2(_log2,_n) \ 00359 VTK_EXTENSIONS_BEGIN_MACRO \ 00360 vtkUint32Type j_ = (vtkUint32Type)(_n); \ 00361 (_log2) = 0; \ 00362 if ((j_) >> 16) \ 00363 (_log2) += 16, (j_) >>= 16; \ 00364 if ((j_) >> 8) \ 00365 (_log2) += 8, (j_) >>= 8; \ 00366 if ((j_) >> 4) \ 00367 (_log2) += 4, (j_) >>= 4; \ 00368 if ((j_) >> 2) \ 00369 (_log2) += 2, (j_) >>= 2; \ 00370 if ((j_) >> 1) \ 00371 (_log2) += 1; \ 00372 VTK_EXTENSIONS_END_MACRO 00373 00376 # define VTK_EXTENSIONS_PTR_TO_INT32(_x) ((char *)(_x) - (char *)0) 00377 # define VTK_EXTENSIONS_INT32_TO_PTR(_x) ((void *)((char *)0 + (_x))) 00378 00383 typedef vtkUint32Type vtkColorWord; 00385 typedef vtkUint8Type vtkColorByte; 00386 00387 typedef vtkColorWord vtkPackedColor; 00388 00389 typedef struct 00390 { 00391 vtkFloat32Type Ka[3]; /* [00..11] (scaled) */ 00392 vtkFloat32Type Kd[4]; /* [12..27] (scaled) */ 00393 vtkFloat32Type Ks[3]; /* [28..39] (scaled) */ 00394 vtkFloat32Type Se; /* [40..43] */ 00395 } vtkMaterial; /* 44 bytes */ 00396 00397 typedef struct 00398 { 00399 vtkPackedColor Ka; /* [00..03] (4th component of Ka undefined) */ 00400 vtkPackedColor Kd; /* [04..07] (store alpha as 4th comp. of Kd) */ 00401 vtkPackedColor Ks; /* [08..11] (store Se as 4th component of Ks) */ 00402 } vtkPackedMaterial; /* 12 bytes */ 00407 # define VTK_EXTENSIONS_RGB_MAX VTK_EXTENSIONS_UINT8_MAX 00408 00410 # define VTK_EXTENSIONS_MAKE_RGBA(_r, _g, _b, _a) \ 00411 ((vtkColorWord)(((_r) << 24) | ((_g) << 16) | ((_b) << 8) | (_a))) 00412 00413 # define VTK_EXTENSIONS_MAKE_RGB(_r, _g, _b) \ 00414 VTK_EXTENSIONS_MAKE_RGBA((_r), (_g), (_b), VTK_EXTENSIONS_RGB_MAX) 00415 00417 # define VTK_EXTENSIONS_MAKE_ABGR(_a, _b, _g, _r) \ 00418 ((vtkColorWord)(((_a) << 24) | ((_b) << 16) | ((_g) << 8) | (_r))) 00419 00420 # define VTK_EXTENSIONS_MAKE_BGR(_b, _g, _r) \ 00421 VTK_EXTENSIONS_MAKE_ABGR(VTK_EXTENSIONS_RGB_MAX, (_b), (_g), (_r)) 00422 00425 # define VTK_EXTENSIONS_GET_RGBA_R(_rgba) \ 00426 ((vtkColorByte)(((_rgba) >> 24) & 0xff)) 00427 # define VTK_EXTENSIONS_GET_RGBA_G(_rgba) \ 00428 ((vtkColorByte)(((_rgba) >> 16) & 0xff)) 00429 # define VTK_EXTENSIONS_GET_RGBA_B(_rgba) \ 00430 ((vtkColorByte)(((_rgba) >> 8) & 0xff)) 00431 # define VTK_EXTENSIONS_GET_RGBA_A(_rgba) \ 00432 ((vtkColorByte)((_rgba) & 0xff)) 00433 00437 # define VTK_EXTENSIONS_GET_ABGR_R(_abgr) \ 00438 ((vtkColorByte)((_abgr) & 0xff)) 00439 # define VTK_EXTENSIONS_GET_ABGR_G(_abgr) \ 00440 ((vtkColorByte)(((_abgr) >> 8) & 0xff)) 00441 # define VTK_EXTENSIONS_GET_ABGR_B(_abgr) \ 00442 ((vtkColorByte)(((_abgr) >> 16) & 0xff)) 00443 # define VTK_EXTENSIONS_GET_ABGR_A(_abgr) \ 00444 ((vtkColorByte)(((_abgr) >> 24) & 0xff)) 00445 00448 # define VTK_EXTENSIONS_RGBONLY(_rgba) \ 00449 ((_rgba) & 0xffffff00) 00450 00452 # define VTK_EXTENSIONS_BGRONLY(_abgr) \ 00453 ((_abgr) & 0x00ffffff) 00454 00455 # define VTK_EXTENSIONS_GET_COLORBYTE(_word, _n) \ 00456 ((vtkColorByte)(((_word) >> ((3-(_n))<<3)) & 0xff)) 00457 00459 # define VTK_EXTENSIONS_COLORBYTE_REF(_word, _n) \ 00460 (((vtkColorByte *)(&(_word)))[(_n)]) 00461 00463 # define VTK_EXTENSIONS_COLORBYTE_PTR(_word, _n) \ 00464 (&(VTK_EXTENSIONS_COLORBYTE_REF((_word), (_n)))) 00465 00466 # define VTK_EXTENSIONS_CLAMP_COLORBYTE(_c) \ 00467 ( (_c) <= 0.0 ? 0 : \ 00468 ( (_c) > (vtkRealType)(VTK_EXTENSIONS_RGB_MAX) ? \ 00469 VTK_EXTENSIONS_RGB_MAX : (vtkColorByte)(_c) ) ) 00470 00471 VTK_EXTENSIONS_END_EXTERN_C 00472 00479 # define VTK_EXTENSIONS_ENSURE_TRUE(_x, _ret) \ 00480 VTK_EXTENSIONS_BEGIN_MACRO \ 00481 if (!(_x)) { \ 00482 vtkGenericWarningMacro("ENSURE_TRUE(" #_x ") failed"); \ 00483 return _ret; \ 00484 } \ 00485 VTK_EXTENSIONS_END_MACRO 00486 00487 # define VTK_EXTENSIONS_ENSURE_FALSE(_x, _ret) \ 00488 VTK_EXTENSIONS_ENSURE_TRUE(!(_x), _ret) 00489 00494 # define VTK_EXTENSIONS_ENSURE_ARG(_a) \ 00495 VTK_EXTENSIONS_ENSURE_TRUE(_a, VTK_ERROR) 00496 00497 # define VTK_EXTENSIONS_ENSURE_ARG_POINTER(_a) \ 00498 VTK_EXTENSIONS_ENSURE_TRUE(_a, VTK_ERROR) 00499 00500 # define VTK_EXTENSIONS_ENSURE_ARG_MIN(_a, _min) \ 00501 VTK_EXTENSIONS_ENSURE_TRUE((_a) >= _min, VTK_ERROR) 00502 00503 # define VTK_EXTENSIONS_ENSURE_ARG_MAX(_a, _max) \ 00504 VTK_EXTENSIONS_ENSURE_TRUE((_a) <= _max, VTK_ERROR) 00505 00506 # define VTK_EXTENSIONS_ENSURE_ARG_RANGE(_a, _min, _max) \ 00507 VTK_EXTENSIONS_ENSURE_TRUE(((_a) >= _min) && ((_a) <= _max), VTK_ERROR) 00508 00509 # define VTK_EXTENSIONS_ENSURE_STATE(_state) \ 00510 VTK_EXTENSIONS_ENSURE_TRUE(_state, VTK_ERROR) 00511 00513 #endif /* VTK_EXTENSIONS_TYPES_H_ */ 00514 /* 00515 * End of: $Id: vtkExtensionsTypes.h,v 1.4 2004/08/10 07:37:21 xpxqx Exp $. 00516 * 00517 */

Generated on Tue Aug 10 03:37:39 2004 for vtkExtensions by doxygen 1.3.7