mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
118 lines
4.6 KiB
C++
118 lines
4.6 KiB
C++
//##################################################################################################
|
|
//
|
|
// Custom Visualization Core library
|
|
// Copyright (C) 2011-2013 Ceetron AS
|
|
//
|
|
// This library may be used under the terms of either the GNU General Public License or
|
|
// the GNU Lesser General Public License as follows:
|
|
//
|
|
// GNU General Public License Usage
|
|
// This library is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This library is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
|
//
|
|
// See the GNU General Public License at <<http://www.gnu.org/licenses/gpl.html>>
|
|
// for more details.
|
|
//
|
|
// GNU Lesser General Public License Usage
|
|
// This library is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU Lesser General Public License as published by
|
|
// the Free Software Foundation; either version 2.1 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This library is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
|
//
|
|
// See the GNU Lesser General Public License at <<http://www.gnu.org/licenses/lgpl-2.1.html>>
|
|
// for more details.
|
|
//
|
|
//##################################################################################################
|
|
|
|
|
|
#pragma once
|
|
|
|
#if !defined(WIN32) && !defined(CVF_LINUX) && !defined(CVF_IOS) && !defined(CVF_OSX) && !defined(CVF_ANDROID)
|
|
#error No platform defined
|
|
#endif
|
|
|
|
// Global include file with definitions useful for all library files
|
|
|
|
// Disable some annoying warnings so we can compile with warning level Wall
|
|
#ifdef WIN32
|
|
// 4512 'class' : assignment operator could not be generated : Due to problems with classes with reference member variables (e.g. VertexCompactor)
|
|
// 4514 unreferenced inline/local function has been removed
|
|
// 4625 copy constructor could not be generated because a base class copy constructor is inaccessible
|
|
// 4626 assignment operator could not be generated because a base class assignment operator is inaccessible
|
|
// 4640 'staticInstance' : construction of local static object is not thread-safe -> used by singletons. To be revisited.
|
|
// 4710 function 'func_name' not inlined
|
|
// 4711 function 'func_name' selected for automatic inline expansion
|
|
// 4738 storing 32-bit float result in memory, possible loss of performance
|
|
// 4820 'bytes' bytes padding added after construct 'member_name'
|
|
// 4986 'operator new[]': exception specification does not match previous declaration
|
|
#pragma warning (disable: 4512 4514 4625 4626 4640 4710 4711 4738 4820 4986)
|
|
#endif
|
|
|
|
// Helper macro to disable (ignore) compiler warnings on GCC
|
|
// The needed pragma is only available in GCC for versions 4.2.x and above
|
|
#if defined __GNUC__ && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 402)
|
|
#define CVF_DO_PRAGMA(x) _Pragma(#x)
|
|
#define CVF_GCC_DIAGNOSTIC_IGNORE(OPTION_STRING) CVF_DO_PRAGMA(GCC diagnostic ignored OPTION_STRING)
|
|
#else
|
|
#define CVF_GCC_DIAGNOSTIC_IGNORE(OPTION_STRING)
|
|
#endif
|
|
|
|
|
|
#if defined(CVF_LINUX) || defined(CVF_IOS) || defined(CVF_OSX) || defined(CVF_ANDROID)
|
|
// Used by int64_t on *nix below
|
|
#include <stdint.h>
|
|
#endif
|
|
|
|
// Brings in size_t and definition of NULL
|
|
#include <cstddef>
|
|
|
|
// Added due to conflict between std::min/max and define in Windows.h
|
|
#define CVF_MIN(X, Y) ((X) < (Y) ? (X) : (Y))
|
|
#define CVF_MAX(X, Y) ((X) > (Y) ? (X) : (Y))
|
|
|
|
// Macro for avoiding "unused parameter" warnings
|
|
// The bottom one is the best alternative, but unfortunately doesn't work on VS2010
|
|
#ifdef WIN32
|
|
#define CVF_UNUSED(EXPR) (void)(EXPR);
|
|
#else
|
|
#define CVF_UNUSED(EXPR) (void)sizeof(EXPR);
|
|
#endif
|
|
|
|
|
|
// Macro to disable the copy constructor and assignment operator
|
|
// Should be used in the private section of a class
|
|
#define CVF_DISABLE_COPY_AND_ASSIGN(CLASS_NAME) \
|
|
CLASS_NAME(const CLASS_NAME&); \
|
|
void operator=(const CLASS_NAME&)
|
|
|
|
|
|
/// Ceetron Visualization Framework namespace
|
|
namespace cvf {
|
|
|
|
typedef unsigned char ubyte;
|
|
typedef unsigned short ushort;
|
|
typedef unsigned int uint;
|
|
|
|
// 64bit integer support via the int64 type
|
|
#ifdef WIN32
|
|
typedef __int64 int64;
|
|
#elif defined(CVF_LINUX) || defined(CVF_IOS) || defined(CVF_OSX) || defined(CVF_ANDROID)
|
|
typedef int64_t int64;
|
|
#endif
|
|
|
|
}
|
|
|
|
#include "cvfConfigCore.h"
|
|
#include "cvfVersion.h"
|
|
#include "cvfAssert.h"
|