HDK
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
UT_Variadic.h
Go to the documentation of this file.
1
/*
2
* PROPRIETARY INFORMATION. This software is proprietary to
3
* Side Effects Software Inc., and is not to be reproduced,
4
* transmitted, or disclosed in any way without written permission.
5
*
6
* NAME: UT_Variadic.h (UT Library, C++)
7
*
8
* COMMENTS:
9
*/
10
11
#ifndef __UT_Variadic__
12
#define __UT_Variadic__
13
14
#include "
UT_Array.h
"
15
16
/// Build a list of variadic arguments of the given template type
17
///
18
/// C-Style variadic arguments are error prone for various reasons:
19
/// - No type checking
20
/// - NULL termination issues
21
///
22
/// This class provides type-safety and a cleaner interface. For example, to
23
/// accept a variable length array of strings: @code
24
/// typedef UT_VariadicT<const char *> VariadicStrings;
25
/// void
26
/// function(const VariadicStrings &strings)
27
/// {
28
/// for (exint i = 0; i < strings.entries(); ++i)
29
/// cerr << i << " " << strings.item(i) << " " strlen(strings.item(i));
30
/// }
31
///
32
/// // Which can be called using
33
/// function(VariadicStrings() << "hello" << "world");
34
/// @endcode
35
template
<
typename
T>
36
class
UT_VariadicT
37
{
38
public
:
39
40
UT_VariadicT<T>
&
operator<<
(
const
T
&
val
)
41
{
42
myItems
.
append
(&val);
43
return
*
this
;
44
}
45
46
exint
entries
()
const
{
return
myItems
.
entries
(); }
47
const
T
&
item
(
exint
arg
)
const
{
return
*
myItems
(arg); }
48
49
void
append
(
const
T
&
v
) {
myItems
.
append
(&v); }
50
51
protected
:
52
UT_Array<const T *>
myItems
;
53
};
54
55
#endif
UT_VariadicT::item
const T & item(exint arg) const
Definition:
UT_Variadic.h:47
v
const GLdouble * v
Definition:
glcorearb.h:837
exint
int64 exint
Definition:
SYS_Types.h:125
UT_Array.h
arg
auto arg(const Char *name, const T &arg) -> detail::named_arg< Char, T >
Definition:
core.h:1859
UT_Array< const T * >
UT_VariadicT::myItems
UT_Array< const T * > myItems
Definition:
UT_Variadic.h:52
UT_VariadicT
Definition:
UT_Variadic.h:36
UT_VariadicT::operator<<
UT_VariadicT< T > & operator<<(const T &val)
Definition:
UT_Variadic.h:40
OBJ_MatchTransform::T
UT_Array::append
exint append()
Definition:
UT_Array.h:142
UT_Array::entries
exint entries() const
Alias of size(). size() is preferred.
Definition:
UT_Array.h:669
UT_VariadicT::entries
exint entries() const
Definition:
UT_Variadic.h:46
UT_VariadicT::append
void append(const T &v)
Definition:
UT_Variadic.h:49
val
GLuint GLfloat * val
Definition:
glcorearb.h:1608
UT
UT_Variadic.h
Generated on Mon Aug 3 2026 02:20:38 for HDK by
1.8.6