VTK  9.2.6
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
52
53#ifndef vtkTypeList_h
54#define vtkTypeList_h
55
56#include "vtkTypeListMacros.h"
57
58namespace vtkTypeList
59{
60
61//------------------------------------------------------------------------------
66{
67};
68
69//------------------------------------------------------------------------------
71
74template <typename T, typename U>
76{
77 typedef T Head;
78 typedef U Tail;
79};
80
81
82//------------------------------------------------------------------------------
86template <bool Exp, typename T, typename F>
87struct Select;
88
89//------------------------------------------------------------------------------
94template <typename From, typename To>
96
97//------------------------------------------------------------------------------
102template <typename TList, typename T>
103struct IndexOf;
104
105//------------------------------------------------------------------------------
110template <typename TList, typename T>
111struct Erase;
112
113//------------------------------------------------------------------------------
117template <typename TList, typename T>
118struct EraseAll;
119
120//------------------------------------------------------------------------------
125template <typename TList>
126struct Unique;
127
128//------------------------------------------------------------------------------
133template <typename TList, typename Bad, typename Good>
134struct Replace;
135
136//------------------------------------------------------------------------------
141template <typename TList, typename Bad, typename Good>
143
144//------------------------------------------------------------------------------
150template <typename TList, typename T>
152
153//------------------------------------------------------------------------------
159template <typename TList>
161
162//------------------------------------------------------------------------------
166template <typename TList, typename T>
167struct Append;
168
169} // end namespace vtkTypeList
170
171#include "vtkTypeList.txx"
172
173namespace vtkTypeList
174{
175
176template <typename... Ts>
177using Create = typename vtkTypeList::detail::CreateImpl<Ts...>::type;
178
179} // end namespace vtkTypeList
180
181#endif // vtkTypeList_h
182// VTK-HeaderTest-Exclude: vtkTypeList.h
typename vtkTypeList::detail::CreateImpl< Ts... >::type Create
Appends type T to TypeList TList and stores the result in Result.
Sets member Result to true if a conversion exists to convert type From to type To.
Definition vtkTypeList.h:95
Sort the TypeList from most-derived to least-derived type, storing the sorted TypeList in Result.
Erase all type T from TypeList TList, storing the new list in Result.
Erase the first element of type T from TypeList TList, storing the new list in Result.
Sets the enum value Result to the index of type T in the TypeList TList.
Given a type T and a TypeList TList, store the most derived type of T in TList as Result.
Used to terminate a TypeList.
Definition vtkTypeList.h:66
Replace all instances of Bad with Good in the TypeList TList, storing the new list in Result.
Replace the first instance of Bad with Good in the TypeList TList, storing the new list in Result.
Sets Result to T if Exp is true, or F if Exp is false.
Definition vtkTypeList.h:87
Generic implementation of TypeList.
Definition vtkTypeList.h:76
Remove all duplicate types from TypeList TList, storing the new list in Result.