macros.hh

00001 // Copyright (C) 2001, 2002, 2003, 2004  EPITA Research and Development Laboratory
00002 //
00003 // This file is part of the Olena Library.  This library is free
00004 // software; you can redistribute it and/or modify it under the terms
00005 // of the GNU General Public License version 2 as published by the
00006 // Free Software Foundation.
00007 //
00008 // This library is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011 // General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU General Public License
00014 // along with this library; see the file COPYING.  If not, write to
00015 // the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
00016 // MA 02111-1307, USA.
00017 //
00018 // As a special exception, you may use this file as part of a free
00019 // software library without restriction.  Specifically, if other files
00020 // instantiate templates or use macros or inline functions from this
00021 // file, or you compile this file and link it with other files to
00022 // produce an executable, this file does not by itself cause the
00023 // resulting executable to be covered by the GNU General Public
00024 // License.  This exception does not however invalidate any other
00025 // reasons why the executable file might be covered by the GNU General
00026 // Public License.
00027 
00028 #ifndef NTG_CORE_INTERNAL_MACROS_HH
00029 # define NTG_CORE_INTERNAL_MACROS_HH
00030 
00031 /*
00032   All internal macros starts have an ntgi prefix.
00033 */
00034 
00035 /*----------------.
00036 | types accessors |
00037 `----------------*/
00038 
00039 /*
00040   In come internal code, it is not always possible to use
00041   type_traits<T>, especially within the code of the T class itself.
00042   That's why ntgi_* macros exists.
00043 */
00044 
00045 # define ntgi_storage_type(T) \
00046 typename ntg::internal::typetraits< T >::storage_type
00047 
00048 # define ntgi_abstract_type(T) \
00049 typename ntg::internal::typetraits< T >::abstract_type
00050 
00051 # define ntgi_optraits_type(T) \
00052 typename ntg::internal::typetraits< T >::optraits_type
00053 
00054 # define ntgi_behavior_type(T) \
00055 typename ntg::internal::typetraits< T >::behavior_type
00056 
00057 # define ntgi_base_type(T) \
00058 typename ntg::internal::typetraits< T >::base_type
00059 
00060 # define ntgi_signed_type(T) \
00061 typename ntg::internal::typetraits< T >::signed_type
00062 
00063 # define ntgi_unsigned_type(T) \
00064 typename ntg::internal::typetraits< T >::unsigned_type
00065 
00066 # define ntgi_cumul_type(T) \
00067 typename ntg::internal::typetraits< T >::cumul_type
00068 
00069 # define ntgi_largest_type(T) \
00070 typename ntg::internal::typetraits< T >::largest_type
00071 
00072 # define ntgi_signed_largest_type(T) \
00073 typename ntg::internal::typetraits< T >::signed_largest_type
00074 
00075 # define ntgi_signed_cumul_type(T) \
00076 typename ntg::internal::typetraits< T >::signed_cumul_type
00077 
00078 # define ntgi_unsigned_largest_type(T) \
00079 typename ntg::internal::typetraits< T >::unsigned_largest_type
00080 
00081 # define ntgi_unsigned_cumul_type(T) \
00082 typename ntg::internal::typetraits< T >::unsigned_cumul_type
00083 
00084 # define ntgi_integer_type(T) \
00085 typename ntg::internal::typetraits< T >::integer_type
00086 
00087 #endif // !NTG_CORE_INTERNAL_MACROS_HH

Generated on Thu Apr 15 20:13:13 2004 for Olena by doxygen 1.3.6-20040222