/*------------------------------------------------------------------------------ | |
* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team | |
* | |
* Distributable under the terms of either the Apache License (Version 2.0) or | |
* the GNU Lesser General Public License, as specified in the COPYING file. | |
* | |
* Changes are Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). | |
------------------------------------------------------------------------------*/ | |
#if !defined(_lucene_COMPILER_MSVC) | |
#define _lucene_COMPILER_MSVC | |
// It is internal CLucene header - DO NOT include it directly | |
#include "CLucene/config/define_std.h" | |
#if (_MSC_VER >= 1300) | |
//>= 7.0 | |
#if defined(_BUILD_FOR_QT_) | |
# pragma warning(disable: 4100) // disable unreferenced formal parameter | |
# pragma warning(disable: 4189) // disable local variable is initialized but not referenced | |
#endif | |
# pragma warning(disable: 4512) // This would be very annoying | |
# pragma warning(disable: 4290) // Ignore exception specification warning | |
# pragma warning(disable: 4250) // Ignore 'class1' : inherits 'class2::member' via dominance (e.g. in MultiReader) | |
#if (_MSC_VER < 1310) | |
#define CL_NS_HASHING(func) std::func //the namespace is different on VC 7.0 | |
#else | |
#define CL_NS_HASHING(func) stdext::func | |
#endif | |
#define LUCENE_STATIC_CONSTANT_SYNTAX 1 | |
#if _MSC_FULL_VER >= 140050320 | |
#define _CL_DEPRECATE_TEXT(_Text) __declspec(deprecated(_Text)) | |
#else | |
#define _CL_DEPRECATE_TEXT(_Text) __declspec(deprecated) | |
#endif | |
#elif (_MSC_VER >= 1200) | |
//6.0 | |
#ifdef LUCENE_ENABLE_MEMLEAKTRACKING | |
#define _CLDELETE_CARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((void*)x,__FILE__,__LINE__);delete[] __CONST_CAST(TCHAR*,x); x=NULL;} | |
#define _CLDELETE_CaARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((void*)x,__FILE__,__LINE__);delete[] __CONST_CAST(char*,x); x=NULL;} | |
#define _CLDELETE_LCARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((void*)x,__FILE__,__LINE__);delete[] __CONST_CAST(TCHAR*,x);} | |
#define _CLDELETE_LCaARRAY(x) if (x!=NULL){CL_NS(debug)::LuceneBase::__cl_voidpremove((void*)x,__FILE__,__LINE__);delete[] __CONST_CAST(char*,x);} | |
#else | |
#define _CLDELETE_CARRAY(x) if (x!=NULL){delete[] __CONST_CAST(TCHAR*,x); x=NULL;} | |
#define _CLDELETE_CaARRAY(x) if (x!=NULL){delete[] __CONST_CAST(char*,x); x=NULL;} | |
#define _CLDELETE_LCARRAY(x) if (x!=NULL){delete[] __CONST_CAST(TCHAR*,x);} | |
#define _CLDELETE_LCaARRAY(x) if (x!=NULL){delete[] __CONST_CAST(char*,x);} | |
#endif | |
#define LUCENE_STATIC_CONSTANT_SYNTAX 2 | |
# pragma warning(disable: 4786) // This would be very annoying | |
namespace std{ | |
# undef min // just in case | |
# undef max // just in case | |
#define min(a,b) (a>b?b:a) | |
#define max(a,b) (a>b?a:b) | |
} | |
//only 7.0+ has these function | |
#undef _CL_HAVE_LLTOA | |
#undef _CL_HAVE_LLTOAW | |
#undef _CL_HAVE_INTPTR_T | |
#undef _CL_HAVE_WCSTOLL | |
#undef _CL_HAVE_STRTOLL | |
#undef _CL_HAVE_HASH_MAP | |
#undef _CL_HAVE_HASH_SET | |
#else | |
# error "This version of MSVC has not been tested. Please uncomment this line to try anyway. Please send a report to the Clucene's administration if successful" | |
#endif | |
#if _MSC_VER >= 1020 | |
#define _LUCENE_PRAGMA_ONCE | |
#endif | |
#define _LUCENE_PRAGMA_WARNINGS //tell lucene to display warnings using pragmas instead of #warning | |
//if we are compiling using single-threaded libraries, we can disable multi-threading stuff | |
#if !defined(_MT) && !defined(_CL_DISABLE_MULTITHREADING) | |
#define _CL_DISABLE_MULTITHREADING | |
#endif | |
//msvc supports large files | |
#ifdef _LARGE_FILES | |
# define fileSize _filelengthi64 | |
# define fileSeek _lseeki64 | |
# define fileTell _telli64 | |
# define fileStat _stati64 | |
# define fileHandleStat _fstati64 | |
#else | |
# define fileSize _filelength | |
# define fileSeek _lseek | |
# define fileTell _tell | |
# define fileStat _stat | |
# define fileHandleStat _fstat | |
#endif | |
//_rename is not defined??? | |
#define _rename rename | |
#define CL_MAX_PATH 260 //give the windef.h value for this... | |
#define _realpath(rel,abs) _fullpath(abs,rel,CL_MAX_PATH) | |
//java long type | |
typedef __int64 int64_t; | |
typedef unsigned __int64 uint64_t; | |
//java int type | |
typedef int int32_t; | |
typedef unsigned int uint32_t; | |
//java byte type | |
typedef unsigned char uint8_t; | |
//floating point type | |
//we are going to use qreal now | |
//typedef double float_t; | |
#define _CL_ILONG(x) x ## L | |
#define _ILONGLONG(x) x ## i64 | |
#elif !defined(_lucene_COMPILER_MSVC2) | |
#define _lucene_COMPILER_MSVC2 | |
//second inclusion | |
#elif !defined(_lucene_COMPILER_MSVC3) | |
#define _lucene_COMPILER_MSVC3 | |
//third inclusion | |
#endif |