00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkIdType.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm 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 =========================================================================*/ 00043 #ifndef __vtkIdType_h 00044 #define __vtkIdType_h 00045 00046 #ifndef __VTK_SYSTEM_INCLUDES__INSIDE 00047 Do_not_include_vtkIdType_directly__vtkSystemIncludes_includes_it; 00048 #endif 00049 00050 // Choose an implementation for vtkIdType. 00051 #define VTK_HAS_ID_TYPE 00052 #ifdef VTK_USE_64BIT_IDS 00053 # define VTK_ID_TYPE_IS_NOT_BASIC_TYPE 00054 # define VTK_SIZEOF_ID_TYPE 8 00055 # ifdef _WIN32 00056 typedef __int64 vtkIdType; 00057 # define VTK_NEED_ID_TYPE_STREAM_OPERATORS 00058 # else // _WIN32 00059 typedef long long vtkIdType; 00060 # define VTK_NEED_ID_TYPE_STREAM_OPERATORS 00061 # endif // _WIN32 00062 #else // VTK_USE_64BIT_IDS 00063 # define VTK_SIZEOF_ID_TYPE VTK_SIZEOF_INT 00064 typedef int vtkIdType; 00065 #endif // VTK_USE_64BIT_IDS 00066 00067 // Define a wrapper class so that we can define streaming operators 00068 // for vtkIdType without conflicting with other libraries' 00069 // implementations. 00070 class VTK_COMMON_EXPORT vtkIdTypeHolder 00071 { 00072 public: 00073 vtkIdTypeHolder(vtkIdType& v): Value(v) {} 00074 vtkIdType& Value; 00075 private: 00076 vtkIdTypeHolder& operator=(const vtkIdTypeHolder&); // Not Implemented. 00077 }; 00078 VTK_COMMON_EXPORT ostream& operator << (ostream& os, vtkIdTypeHolder idh); 00079 VTK_COMMON_EXPORT istream& operator >> (istream& is, vtkIdTypeHolder idh); 00080 00081 #endif