VTK  9.1.0
vtkTypeList.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkTypeList.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
15
17// The Loki Library
18// Copyright (c) 2001 by Andrei Alexandrescu
19// This code accompanies the book:
20// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design
21// Patterns Applied". Copyright (c) 2001. Addison-Wesley.
22// Permission to use, copy, modify, distribute and sell this software for any
23// purpose is hereby granted without fee, provided that the above copyright
24// notice appear in all copies and that both that copyright notice and this
25// permission notice appear in supporting documentation.
26// The author or Addison-Wesley Longman make no representations about the
27// suitability of this software for any purpose. It is provided "as is"
28// without express or implied warranty.
30
50#ifndef vtkTypeList_h
51#define vtkTypeList_h
52
53#ifndef __VTK_WRAP__
54
55#include "vtkTypeListMacros.h"
56
57namespace vtkTypeList
58{
59
60//------------------------------------------------------------------------------
65{
66};
67
68//------------------------------------------------------------------------------
70
73template <typename T, typename U>
75{
76 typedef T Head;
77 typedef U Tail;
78};
80
81//------------------------------------------------------------------------------
85template <bool Exp, typename T, typename F>
86struct Select;
87
88//------------------------------------------------------------------------------
93template <typename From, typename To>
95
96//------------------------------------------------------------------------------
101template <typename TList, typename T>
102struct IndexOf;
103
104//------------------------------------------------------------------------------
109template <typename TList, typename T>
110struct Erase;
111
112//------------------------------------------------------------------------------
116template <typename TList, typename T>
117struct EraseAll;
118
119//------------------------------------------------------------------------------
124template <typename TList>
125struct Unique;
126
127//------------------------------------------------------------------------------
132template <typename TList, typename Bad, typename Good>
133struct Replace;
134
135//------------------------------------------------------------------------------
140template <typename TList, typename Bad, typename Good>
142
143//------------------------------------------------------------------------------
149template <typename TList, typename T>
151
152//------------------------------------------------------------------------------
158template <typename TList>
160
161//------------------------------------------------------------------------------
165template <typename TList, typename T>
166struct Append;
167
168} // end namespace vtkTypeList
169
170#include "vtkTypeList.txx"
171
172namespace vtkTypeList
173{
174
175template <typename... Ts>
176using Create = typename vtkTypeList::detail::CreateImpl<Ts...>::type;
177
178} // end namespace vtkTypeList
179
180#endif // __VTK_WRAP__
181
182#endif // vtkTypeList_h
183// VTK-HeaderTest-Exclude: vtkTypeList.h
typename vtkTypeList::detail::CreateImpl< Ts... >::type Create
Definition: vtkTypeList.h:176
Appends type T to TypeList TList and stores the result in Result.
Definition: vtkTypeList.h:166
Sets member Result to true if a conversion exists to convert type From to type To.
Definition: vtkTypeList.h:94
Sort the TypeList from most-derived to least-derived type, storing the sorted TypeList in Result.
Definition: vtkTypeList.h:159
Erase all type T from TypeList TList, storing the new list in Result.
Definition: vtkTypeList.h:117
Erase the first element of type T from TypeList TList, storing the new list in Result.
Definition: vtkTypeList.h:110
Sets the enum value Result to the index of type T in the TypeList TList.
Definition: vtkTypeList.h:102
Given a type T and a TypeList TList, store the most derived type of T in TList as Result.
Definition: vtkTypeList.h:150
Used to terminate a TypeList.
Definition: vtkTypeList.h:65
Replace all instances of Bad with Good in the TypeList TList, storing the new list in Result.
Definition: vtkTypeList.h:141
Replace the first instance of Bad with Good in the TypeList TList, storing the new list in Result.
Definition: vtkTypeList.h:133
Sets Result to T if Exp is true, or F if Exp is false.
Definition: vtkTypeList.h:86
Generic implementation of TypeList.
Definition: vtkTypeList.h:75
Remove all duplicate types from TypeList TList, storing the new list in Result.
Definition: vtkTypeList.h:125