Salome HOME
Fix of 0021175: EDF 1692 VISU: Scalar bar range is not good.
[modules/visu.git] / src / CONVERTOR / VISU_TypeList.hxx
index 1a09efc3dff3438a122861c2adef421691e44ab3..1707d144da4d9479df3bd2de3f51de01ea103be4 100644 (file)
@@ -1,6 +1,6 @@
-//  VISU OBJECT : interactive object for VISU entities implementation
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
 //
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
 //  This library is free software; you can redistribute it and/or
 //  License along with this library; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-//  File   : VISU_ColoredPrs3dCache_i.hh
+
+//  VISU OBJECT : interactive object for VISU entities implementation
+//  File   : VISU_TypeList.hxx
 //  Author : Oleg UVAROV
 //  Module : VISU
-
+//
 #ifndef VISU_TypeList_HeaderFile
 #define VISU_TypeList_HeaderFile
 
+
+//----------------------------------------------------------------------------
 namespace VISU
 {
+  //----------------------------------------------------------------------------
   namespace TL
   {
     //----------------------------------------------------------------------------
-    template <class T, class U>
+    struct TNullType {};
+    
+
+    //----------------------------------------------------------------------------
+    template < class T, class U >
     struct TList
     {
       typedef T THead;
       typedef U TTail;
     };
     
-    template <int v>
+    template < int v >
     struct TInt2Type
     {
       enum { value = v };
     };
     
-    struct TNullType {};
-    
+
     //----------------------------------------------------------------------------
-    template <class TypeList, unsigned int index
+    template < class TypeList, unsigned int index 
     struct TTypeAt;
 
-    template <class THead, class TTail>
-    struct TTypeAt<TList<THead, TTail>, 0>
+    template < class THead, class TTail >
+    struct TTypeAt< TList< THead, TTail >, 0 >
     {
       typedef THead TResult;
     };
 
 
-    template <class THead, class TTail, unsigned int index>
-    struct TTypeAt<TList<THead, TTail>, index>
+    template < class THead, class TTail, unsigned int index >
+    struct TTypeAt< TList< THead, TTail >, index >
     {
-      typedef typename TTypeAt<TTail, index - 1>::TResult TResult;
+      typedef typename TTypeAt< TTail, index - 1 >::TResult TResult;
     };
 
+
     //----------------------------------------------------------------------------
-    template <class TypeList, class T
+    template < class TypeList, class T 
     struct TIndexOf;
 
-    template <class T>
-    struct TIndexOf<TNullType, T>
+    template < class T >
+    struct TIndexOf< TNullType, T >
     {
       enum { value = -1 };
     };
 
-    template <class T, class TTail>
-    struct TIndexOf<TList<T, TTail>, T>
+    template < class T, class TTail >
+    struct TIndexOf< TList< T, TTail >, T >
     {
       enum { value = 0 };
     };
 
-    template <class THead, class TTail, class T>
-    struct TIndexOf<TList<THead, TTail>, T>
+    template < class THead, class TTail, class T >
+    struct TIndexOf< TList< THead, TTail >, T >
     {
     private:
-      enum { temp = TIndexOf<TTail, T>::value };
+      enum { temp = TIndexOf< TTail, T >::value };
     public:
       enum { value = temp == -1? -1 : 1 + temp };
     };
     
+
+    //----------------------------------------------------------------------------
+    template
+    <
+      class T01 = TNullType, class T02 = TNullType, class T03 = TNullType, class T04 = TNullType, class T05 = TNullType,
+      class T06 = TNullType, class T07 = TNullType, class T08 = TNullType, class T09 = TNullType, class T10 = TNullType,
+      class T11 = TNullType, class T12 = TNullType, class T13 = TNullType, class T14 = TNullType, class T15 = TNullType,
+      class T16 = TNullType, class T17 = TNullType, class T18 = TNullType, class T19 = TNullType, class T20 = TNullType,
+      class T21 = TNullType, class T22 = TNullType, class T23 = TNullType, class T24 = TNullType, class T25 = TNullType,
+      class T26 = TNullType, class T27 = TNullType, class T28 = TNullType, class T29 = TNullType, class T30 = TNullType,
+      class T31 = TNullType, class T32 = TNullType, class T33 = TNullType, class T34 = TNullType, class T35 = TNullType,
+      class T36 = TNullType, class T37 = TNullType, class T38 = TNullType, class T39 = TNullType, class T40 = TNullType
+    >
+    struct TSequence
+    {
+    private:
+      typedef typename TSequence<      T02, T03, T04, T05, T06, T07, T08, T09, T10,
+                                  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20,
+                                  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+                                  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40
+                                       >::TResult 
+                       TailResult;
+    public:
+      typedef TList< T01, TailResult > TResult;
+    };
+        
+
+    //----------------------------------------------------------------------------
+    template<>
+    struct TSequence<>
+    {
+      typedef TNullType TResult;
+    };
+
+
     //----------------------------------------------------------------------------
   }
+
+  
+  //----------------------------------------------------------------------------
 }
 
 #endif