initial
This commit is contained in:
79
vnproglib/cpp/include/vn/compiler.h
Normal file
79
vnproglib/cpp/include/vn/compiler.h
Normal file
@ -0,0 +1,79 @@
|
||||
#ifndef _VN_UTIL_COMPILER_H
|
||||
#define _VN_UTIL_COMPILER_H
|
||||
|
||||
// This header provides some simple checks for various features supported by the
|
||||
// current compiler.
|
||||
|
||||
// The VN_HAS_RANGE_LOOP define indicates if the compiler supports range based
|
||||
// loops.
|
||||
//
|
||||
// for (auto i : _items)
|
||||
// cout << i << endl;
|
||||
//
|
||||
// HACK: Currently not checking the compiler and defaulting to no range loop support.
|
||||
#define VN_HAS_RANGE_LOOP 0
|
||||
|
||||
// The VN_SUPPORTS_SWAP define indicates if the compiler supports the swap
|
||||
// operation for STL items.
|
||||
//
|
||||
// [Example]
|
||||
//
|
||||
// #if VN_SUPPORTS_SWAP
|
||||
// queue<Packet> empty;
|
||||
// _receivedResponses.swap(empty);
|
||||
// #else
|
||||
// while (!_receivedResponses.empty()) _receivedResponses.pop();
|
||||
// #endif
|
||||
//
|
||||
#if (defined(_MSC_VER) && _MSC_VER > 1500) || (__cplusplus >= 201103L)
|
||||
#define VN_SUPPORTS_SWAP 1
|
||||
#else
|
||||
#define VN_SUPPORTS_SWAP 0
|
||||
#endif
|
||||
|
||||
// The VN_SUPPORTS_INITIALIZER_LIST define indicates if the compiler supports
|
||||
// using an initialization list to initialize STL containers.
|
||||
//
|
||||
// [Example]
|
||||
//
|
||||
// #if VN_SUPPORTS_INITIALIZER_LIST
|
||||
// vector<CompositeData*> d({ &ez->_persistentData, &nd });
|
||||
// #else
|
||||
// vector<CompositeData*> d(2);
|
||||
// d[0] = &ez->_persistentData;
|
||||
// d[1] = &nd;
|
||||
// #endif
|
||||
//
|
||||
#if (defined(_MSC_VER) && _MSC_VER <= 1600) || (__cplusplus < 201103L)
|
||||
#define VN_SUPPORTS_INITIALIZER_LIST 0
|
||||
#else
|
||||
#define VN_SUPPORTS_INITIALIZER_LIST 1
|
||||
#endif
|
||||
|
||||
// The VN_SUPPORTS_CSTR_STRING_CONCATENATE define indictes if the compiler supports
|
||||
// concatenating a C-style string with std::string using the '+' operator.
|
||||
//
|
||||
// [Example]
|
||||
//
|
||||
// #if VN_SUPPORTS_CSTR_STRING_CONCATENATE
|
||||
// explicit permission_denied(std::string itemName) : runtime_error(std::string("Permission denied for item '" + itemName + "'.").c_str()) { }
|
||||
// #else
|
||||
// explicit permission_denied(std::string itemName) : runtime_error("Permission denied for item.") { }
|
||||
// #endif
|
||||
//
|
||||
#if (defined(_MSC_VER) && _MSC_VER <= 1600)
|
||||
#define VN_SUPPORTS_CSTR_STRING_CONCATENATE 0
|
||||
#else
|
||||
#define VN_SUPPORTS_CSTR_STRING_CONCATENATE 1
|
||||
#endif
|
||||
|
||||
// Determine if the secure CRT and SCL are available.
|
||||
#if defined(_MSC_VER)
|
||||
#define VN_HAVE_SECURE_CRT 1
|
||||
#define VN_HAVE_SECURE_SCL 1
|
||||
#else
|
||||
#define VN_HAVE_SECURE_CRT 0
|
||||
#define VN_HAVE_SECURE_SCL 0
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user