switch to git no-history version

This commit is contained in:
AndreaRigoni
2018-04-17 15:39:10 +02:00
commit b14311ce09
274 changed files with 27340 additions and 0 deletions

133
src/Core/Macros.h Normal file
View File

@@ -0,0 +1,133 @@
/*//////////////////////////////////////////////////////////////////////////////
// CMT Cosmic Muon Tomography project //////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
Copyright (c) 2014, Universita' degli Studi di Padova, INFN sez. di Padova
All rights reserved
Authors: Andrea Rigoni Garola < andrea.rigoni@pd.infn.it >
------------------------------------------------------------------
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 3.0 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 for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library.
//////////////////////////////////////////////////////////////////////////////*/
#ifndef U_CORE_MACROS_H
#define U_CORE_MACROS_H
//#ifndef HAVE_CONFIG_H
// #include "config.h"
//#endif
#include <assert.h>
#define uLibAssert(condition) assert(condition)
// Symbols visibility attribute, see: http://gcc.gnu.org/wiki/Visibility //
// http://stackoverflow.com/questions/5116333/dynamic-cast-failed-when-hidding-symbol //
#if defined _WIN32 || defined __CYGWIN__
#ifdef BUILDING_DLL
#ifdef __GNUC__
#define DLL_PUBLIC __attribute__ ((dllexport))
#else
#define DLL_PUBLIC __declspec(dllexport) // Note: actually gcc seems to also supports this syntax.
#endif
#else
#ifdef __GNUC__
#define DLL_PUBLIC __attribute__ ((dllimport))
#else
#define DLL_PUBLIC __declspec(dllimport) // Note: actually gcc seems to also supports this syntax.
#endif
#endif
#define DLL_LOCAL
#else
#if __GNUC__ >= 4
#define DLL_PUBLIC __attribute__ ((visibility ("default")))
#define DLL_LOCAL __attribute__ ((visibility ("hidden")))
#else
#define DLL_PUBLIC
#define DLL_LOCAL
#endif
#endif
// foreach Qt style
#ifndef foreach
#include "boost/foreach.hpp"
#define foreach(ref, list) BOOST_FOREACH(ref,list)
#endif
#define uLibVGetMacro(name,type) \
virtual inline const type Get##name() const = 0;
#define uLibVSetMacro(name,type) \
virtual inline void Set##name(const type name) = 0;
#define uLibVGetSetMacro(name,type) \
uLibVGet(name,type); \
uLibVSet(name,type);
#define uLibVRefMacro(name,type) \
virtual inline type & name() = 0;
#define uLibGetMacro(name,type) \
inline type Get##name() const { return this->m_##name; }
#define uLibConstRefMacro(name,type) \
inline const type & name() const { return this->m_##name; }
// verificare necessita' di typecast //
#define uLibSetMacro(name,type) \
inline void Set##name(type name) { this->m_##name = name; }
#define uLibGetSetMacro(name,type) \
inline type Get##name() const { return this->m_##name; } \
uLibSetMacro(name,type);
#define uLibRefMacro(name,type) \
inline type & name() { return this->m_##name; }
/* Following macros override usual branch prediction of compiler
* These are to be used in conditional statement whose result might
* be Bayesian biased:
*
* // previous_line
* if (likely(a>1)) { // block_1 }
* else { block_2 }
*
* will write the block_1 code right after previous line, without using
* compiler branch prediction for results. Otherwise
*
* // previous_line
* if (unlikely(a>1)) { // block_1 }
* else { block_2 }
*
* will write block_2 after previous_line, leaving block_1 after
* (usually after the end of the whole function! Use with care!)
*/
#define unlikely(expr) __builtin_expect(!!(expr), 0)
#define likely(expr) __builtin_expect(!!(expr), 1)
#endif // MACROS_H