17 #    pragma warning(disable : 4127) 
   33 #define OIIO_TYPEDESC_VECTOR2 1 
  135                         int arraylen=0) noexcept
 
  136         : basetype(static_cast<
unsigned char>(btype)),
 
  137           aggregate(static_cast<
unsigned char>(agg)),
 
  138           vecsemantics(static_cast<
unsigned char>(semantics)), reserved(0),
 
  149         : 
TypeDesc(btype, agg, NOSEMANTICS, arraylen) {}
 
  172     const char *
c_str() 
const;
 
  175         o << t.
c_str();  
return o;
 
  182                           "of array with unspecified length (%d)", arraylen);
 
  183         return (arraylen >= 1 ? arraylen : 1);
 
  190         return numelements() * aggregate;
 
  207                           "of array with unspecified length (%d)", arraylen);
 
  208         size_t a = (size_t) (arraylen > 0 ? arraylen : 1);
 
  209         if (
sizeof(
size_t) > 
sizeof(
int)) {
 
  211             return a * elementsize();
 
  214             unsigned long long s = (
unsigned long long) a * elementsize();
 
  216             return s < toobig ? (size_t)s : toobig;
 
  236     size_t basesize () const noexcept;
 
  246     OIIO_HOSTDEVICE constexpr 
bool is_unknown () const noexcept { 
return (basetype == UNKNOWN); }
 
  260         return basetype == 
t.basetype && aggregate == 
t.aggregate &&
 
  261             vecsemantics == 
t.vecsemantics && arraylen == 
t.arraylen;
 
  289         return a.basetype == 
b.basetype && 
a.aggregate == 
b.aggregate &&
 
  290                (
a.arraylen == 
b.arraylen || (
a.is_unsized_array() && 
b.is_sized_array())
 
  291                                          || (
a.is_sized_array()   && 
b.is_unsized_array()));
 
  295         return this->basetype == 
b.basetype && this->aggregate == 
b.aggregate &&
 
  296                (this->arraylen == 
b.arraylen || (this->is_unsized_array() && 
b.is_sized_array())
 
  297                                              || (this->is_sized_array()   && 
b.is_unsized_array()));
 
  302         return this->aggregate == VEC2 && this->basetype == 
b && !is_array();
 
  307         return this->aggregate == VEC3 && this->basetype == 
b && !is_array();
 
  312         return this->aggregate == VEC4 && this->basetype == 
b && !is_array();
 
  317         return this->aggregate == VEC2 && this->basetype == 
b && arraylen == 2
 
  318                 && this->vecsemantics == BOX;
 
  323         return this->aggregate == VEC3 && this->basetype == 
b && arraylen == 2
 
  324                 && this->vecsemantics == BOX;
 
  366 static_assert(std::is_default_constructible<TypeDesc>(), 
"TypeDesc is not default constructable.");
 
  367 static_assert(std::is_trivially_copyable<TypeDesc>(), 
"TypeDesc is not trivially copyable.");
 
  368 static_assert(std::is_trivially_destructible<TypeDesc>(), 
"TypeDesc is not trivially destructible.");
 
  369 static_assert(std::is_trivially_move_constructible<TypeDesc>(), 
"TypeDesc is not move constructible.");
 
  370 static_assert(std::is_trivially_copy_constructible<TypeDesc>(), 
"TypeDesc is not copy constructible.");
 
  371 static_assert(std::is_trivially_move_assignable<TypeDesc>(), 
"TypeDesc is not move assignable.");
 
  417                       const char *float_fmt,                
 
  418                       const char *string_fmt = 
"%s",        
 
  419                       const char aggregate_delim[2] = 
"()", 
 
  420                       const char *aggregate_sep = 
",",      
 
  421                       const char array_delim[2] = 
"{}",     
 
  422                       const char *array_sep = 
",");         
 
  437 #if defined(_HALF_H_) || defined(IMATH_HALF_H_) 
  463 #if defined(_HALF_H_) || defined(IMATH_HALF_H_) 
  469 #ifdef INCLUDED_IMATHVEC_H 
  475 #ifdef INCLUDED_IMATHCOLOR_H 
  478 #ifdef INCLUDED_IMATHMATRIX_H 
  484 #ifdef INCLUDED_IMATHBOX_H 
  507 #if defined(_HALF_H_) || defined(IMATH_HALF_H_) 
  522     const char *int_fmt = 
"%d";
 
  523     const char *float_fmt = 
"%g";
 
  524     const char *string_fmt = 
"\"%s\"";
 
  525     const char *ptr_fmt = 
"%p";
 
  528     const char *aggregate_begin = 
"(";
 
  529     const char *aggregate_end = 
")";
 
  530     const char *aggregate_sep = 
",";
 
  533     const char *array_begin = 
"{";
 
  534     const char *array_end = 
"}";
 
  535     const char *array_sep = 
",";
 
  537     enum Flags { 
None=0, escape_strings=1, quote_single_string=2 };
 
  540     const char *uint_fmt = 
"%u";
 
  541     const char *reserved2 = 
"";
 
  542     const char *reserved3 = 
"";
 
  543     bool use_sprintf = 
true;
 
  549         const char *string_fmt = 
"\"%s\"", 
const char *ptr_fmt = 
"%p",
 
  550         const char *aggregate_begin = 
"(", 
const char *aggregate_end = 
")",
 
  551         const char *aggregate_sep = 
",", 
const char *array_begin = 
"{",
 
  552         const char *array_end = 
"}", 
const char *array_sep = 
",",
 
  553         int flags = escape_strings,
 
  554         const char *uint_fmt = 
"%u");
 
  559         const char *int_fmt = 
"{}", 
const char *uint_fmt = 
"{}",
 
  560         const char *float_fmt = 
"{}",
 
  561         const char *string_fmt = 
"\"{}\"", 
const char *ptr_fmt = 
"{}",
 
  562         const char *aggregate_begin = 
"(", 
const char *aggregate_end = 
")",
 
  563         const char *aggregate_sep = 
",", 
const char *array_begin = 
"{",
 
  564         const char *array_end = 
"}", 
const char *array_sep = 
",",
 
  565         int flags = escape_strings);
 
  602 #if FMT_VERSION >= 100000 
  615         auto it = ctx.begin(), 
end = ctx.end();
 
  616         if (it != 
end && (*it == 
's')) ++it;
 
  618         if (it != 
end && *it != 
'}')
 
  624     template <
typename FormatContext>
 
static const constexpr TypeDesc value()
 
OIIO_HOSTDEVICE constexpr bool is_box3(BASETYPE b=FLOAT) const noexcept
Is this an array of aggregates that represents a 3D bounding box? 
 
32-bit IEEE floating point values, (C/C++ float). 
 
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
 
unsigned char reserved
Reserved for future expansion. 
 
static const TypeDesc TypeTimeCode
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeMatrix44(TypeDesc::FLOAT, TypeDesc::MATRIX44)
 
64-bit IEEE floating point values, (C/C++ double). 
 
16-bit IEEE floating point values (OpenEXR half). 
 
static const TypeDesc TypeString
 
OIIO_HOSTDEVICE constexpr bool is_vec4(BASETYPE b=FLOAT) const noexcept
Is this a 4-vector aggregate (of the given type, float by default)? 
 
static const TypeDesc TypeFloat4
 
OIIO_HOSTDEVICE constexpr bool equivalent(const TypeDesc &b) const noexcept
Member version of equivalent. 
 
unsigned char aggregate
What kind of AGGREGATE is it? 
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeUstringhash(TypeDesc::USTRINGHASH)
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeMatrix
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeUInt64(TypeDesc::UINT64)
 
imath_half_bits_t half
if we're in a C-only context, alias the half bits type to half 
 
static const constexpr TypeDesc value()
 
GLsizei const GLchar *const * string
 
GLsizei const GLfloat * value
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeInt32(TypeDesc::INT)
 
OIIO_HOSTDEVICE constexpr TypeDesc(BASETYPE btype=UNKNOWN, AGGREGATE agg=SCALAR, VECSEMANTICS semantics=NOSEMANTICS, int arraylen=0) noexcept
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeUInt32(TypeDesc::UINT)
 
OIIO_HOSTDEVICE constexpr TypeDesc scalartype() const 
 
Vector: a spatial direction. 
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeVector2i(TypeDesc::INT, TypeDesc::VEC2)
 
GLboolean GLboolean GLboolean GLboolean a
 
bool_constant< std::is_floating_point< T >::value||is_float128< T >::value > is_floating_point
 
static const constexpr TypeDesc value()
 
9 values representing a 3x3 matrix. 
 
static const TypeDesc TypePoint
 
const char * c_str() const 
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeMatrix33(TypeDesc::FLOAT, TypeDesc::MATRIX33)
 
OIIO_UTIL_API std::string tostring(TypeDesc type, const void *data, const char *float_fmt, const char *string_fmt="%s", const char aggregate_delim[2]="()", const char *aggregate_sep=",", const char array_delim[2]="{}", const char *array_sep=",")
 
int arraylen
Array length, 0 = not array, -1 = unsized. 
 
String-related utilities, all in namespace Strutil. 
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeBox2(TypeDesc::FLOAT, TypeDesc::VEC2, TypeDesc::BOX, 2)
 
A VEC2 representing a rational number val[0] / val[1] 
 
#define FMT_END_NAMESPACE
 
OIIO_INLINE_CONSTEXPR TypeDesc TypePoint(TypeDesc::FLOAT, TypeDesc::VEC3, TypeDesc::POINT)
 
OIIO_HOSTDEVICE friend constexpr bool equivalent(const TypeDesc &a, const TypeDesc &b) noexcept
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeRational(TypeDesc::INT, TypeDesc::VEC2, TypeDesc::RATIONAL)
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeInt(TypeDesc::INT)
 
OIIO_HOSTDEVICE OIIO_CONSTEXPR14 size_t numelements() const noexcept
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeUnknown(TypeDesc::UNKNOWN)
 
std::ostream & operator<<(std::ostream &ostr, const DataType &a)
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeUInt(TypeDesc::UINT)
 
static const TypeDesc TypeHalf
 
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
 
static const TypeDesc TypeKeyCode
 
OIIO_HOSTDEVICE constexpr bool is_vec2(BASETYPE b=FLOAT) const noexcept
Is this a 2-vector aggregate (of the given type, float by default)? 
 
OIIO_HOSTDEVICE OIIO_CONSTEXPR14 size_t basevalues() const noexcept
 
16 values representing a 4x4 matrix. 
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeInt8(TypeDesc::INT8)
 
GLint GLint GLsizei GLint GLenum GLenum type
 
OIIO_HOSTDEVICE void unarray(void) noexcept
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeFloat4(TypeDesc::FLOAT, TypeDesc::VEC4)
 
static const TypeDesc TypeNormal
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeInt16(TypeDesc::INT16)
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeFloat(TypeDesc::FLOAT)
 
static const TypeDesc TypeMatrix44
 
OIIO_HOSTDEVICE constexpr bool is_sized_array() const noexcept
Does this TypeDesc describe an array, whose length is specified? 
 
static const constexpr TypeDesc value()
 
signed 32-bit int values (C/C++ int). 
 
static const TypeDesc TypeFloat
 
2 values representing a 2D vector. 
 
static const constexpr TypeDesc value()
 
3 values representing a 3D vector. 
 
OIIO_HOSTDEVICE constexpr bool is_vec3(BASETYPE b=FLOAT) const noexcept
Is this a 3-vector aggregate (of the given type, float by default)? 
 
bool operator<(const GU_TetrahedronFacet &a, const GU_TetrahedronFacet &b)
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeTimeCode(TypeDesc::UINT, TypeDesc::SCALAR, TypeDesc::TIMECODE, 2)
 
OIIO_HOSTDEVICE constexpr bool is_unsized_array() const noexcept
 
OIIO_HOSTDEVICE size_t size() const noexcept
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeString(TypeDesc::STRING)
 
GLboolean GLboolean GLboolean b
 
OIIO_UTIL_API bool convert_type(TypeDesc srctype, const void *src, TypeDesc dsttype, void *dst, int n=1)
 
4 values representing a 4D vector. 
 
static const TypeDesc TypeVector
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeBox2i(TypeDesc::INT, TypeDesc::VEC2, TypeDesc::BOX, 2)
 
Normal: a surface normal. 
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeVector(TypeDesc::FLOAT, TypeDesc::VEC3, TypeDesc::VECTOR)
 
std::integral_constant< bool, std::numeric_limits< T >::is_signed||std::is_same< T, int128_opt >::value > is_signed
 
#define SCALAR(T)
Simplify checking for scalar types. 
 
IMATH_NAMESPACE::V2f IMATH_NAMESPACE::Box2i std::string this attribute is obsolete as of OpenEXR v3 float
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeColor(TypeDesc::FLOAT, TypeDesc::VEC3, TypeDesc::COLOR)
 
static const TypeDesc TypeMatrix
 
static const TypeDesc TypeColor
 
#define OIIO_FMT_CUSTOM_FORMATTER_CONST
 
static const TypeDesc TypeMatrix33
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeBox3(TypeDesc::FLOAT, TypeDesc::VEC3, TypeDesc::BOX, 2)
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeHalf(TypeDesc::HALF)
 
Point: a spatial location. 
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeUInt8(TypeDesc::UINT8)
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeNormal(TypeDesc::FLOAT, TypeDesc::VEC3, TypeDesc::NORMAL)
 
unsigned char basetype
C data type at the heart of our type. 
 
static const constexpr TypeDesc value()
 
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
 
static const constexpr TypeDesc value()
 
FMT_INLINE auto format_to(OutputIt out, format_string< T...> fmt, T &&...args) -> OutputIt
 
static const constexpr TypeDesc value()
 
static const constexpr TypeDesc value()
 
unsigned char vecsemantics
Hint: What does the aggregate represent? 
 
OIIO_UTIL_API const char * c_str(string_view str)
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeInt64(TypeDesc::INT64)
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeVector4
 
OIIO_HOSTDEVICE constexpr TypeDesc(BASETYPE btype, AGGREGATE agg, int arraylen) noexcept
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeBox3i(TypeDesc::INT, TypeDesc::VEC3, TypeDesc::BOX, 2)
 
#define FMT_BEGIN_NAMESPACE
 
bool operator!=(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
 
#define OIIO_NAMESPACE_END
 
OIIO_HOSTDEVICE constexpr TypeDesc(BASETYPE btype, int arraylen) noexcept
Construct an array of a non-aggregate BASETYPE. 
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeVector2(TypeDesc::FLOAT, TypeDesc::VEC2, TypeDesc::VECTOR)
 
OIIO_HOSTDEVICE OIIO_CONSTEXPR14 TypeDesc elementtype() const noexcept
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeKeyCode(TypeDesc::INT, TypeDesc::SCALAR, TypeDesc::KEYCODE, 7)
 
A VEC2[2] or VEC3[2] that represents a 2D or 3D bounds (min/max) 
 
static const TypeDesc TypeInt
 
OIIO_HOSTDEVICE constexpr bool is_array() const noexcept
Does this TypeDesc describe an array? 
 
OIIO_HOSTDEVICE size_t elementsize() const noexcept
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeFloat2(TypeDesc::FLOAT, TypeDesc::VEC2)
 
static const constexpr TypeDesc value()
 
static const TypeDesc TypeRational
 
OIIO_INLINE_CONSTEXPR TypeDesc TypePointer(TypeDesc::PTR)
 
OIIO_HOSTDEVICE constexpr bool is_box2(BASETYPE b=FLOAT) const noexcept
Is this an array of aggregates that represents a 2D bounding box? 
 
32-bit unsigned int values (C/C++ unsigned int). 
 
OIIO_INLINE_CONSTEXPR TypeDesc TypeUInt16(TypeDesc::UINT16)
 
static const constexpr TypeDesc value()
 
#define OIIO_NAMESPACE_BEGIN