HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
UT_ThreadedAlgorithm.h File Reference
#include "UT_API.h"
#include <SYS/SYS_AtomicInt.h>
#include "UT_Thread.h"
#include "UT_Lock.h"
#include "UT_Functor.h"
#include <hboost/tuple/tuple.hpp>
+ Include dependency graph for UT_ThreadedAlgorithm.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  UT_ThreadedAlgorithm
 
class  UT_JobInfo
 
class  UT_AutoJobInfoLock
 

Macros

#define FOR_INFOTASKS(info, i, n, blocksize)
 
#define FOR_INFOTASKS_BOSS(info, i, n, blocksize, boss)
 
#define THREADED_METHOD_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD)
 
#define THREADED_METHOD1_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1)
 
#define THREADED_METHOD2_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2)
 
#define THREADED_METHOD3_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)
 
#define THREADED_METHOD4_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4)
 
#define THREADED_METHOD5_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5)
 
#define THREADED_METHOD6_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6)
 
#define THREADED_METHOD7_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7)
 
#define THREADED_METHOD8_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8)
 
#define THREADED_METHOD9_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9)
 
#define THREADED_METHOD10_INTERNAL(ISCONST, CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9, PARMTYPE10, PARMNAME10)
 
#define THREADED_METHOD(CLASSNAME, DOMULTI, METHOD)   THREADED_METHOD_INTERNAL( , CLASSNAME, DOMULTI, METHOD)
 
#define THREADED_METHOD_CONST(CLASSNAME, DOMULTI, METHOD)   THREADED_METHOD_INTERNAL(const , CLASSNAME, DOMULTI, METHOD)
 
#define THREADED_METHOD1(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1)   THREADED_METHOD1_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1)
 
#define THREADED_METHOD1_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1)   THREADED_METHOD1_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1)
 
#define THREADED_METHOD2(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2)   THREADED_METHOD2_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2)
 
#define THREADED_METHOD2_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2)   THREADED_METHOD2_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2)
 
#define THREADED_METHOD3(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)   THREADED_METHOD3_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)
 
#define THREADED_METHOD3_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)   THREADED_METHOD3_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)
 
#define THREADED_METHOD4(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4)   THREADED_METHOD4_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4)
 
#define THREADED_METHOD4_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4)   THREADED_METHOD4_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4)
 
#define THREADED_METHOD5(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5)   THREADED_METHOD5_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5)
 
#define THREADED_METHOD5_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5)   THREADED_METHOD5_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5)
 
#define THREADED_METHOD6(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6)   THREADED_METHOD6_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6)
 
#define THREADED_METHOD6_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6)   THREADED_METHOD6_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6)
 
#define THREADED_METHOD7(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7)   THREADED_METHOD7_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7)
 
#define THREADED_METHOD7_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7)   THREADED_METHOD7_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7)
 
#define THREADED_METHOD8(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8)   THREADED_METHOD8_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8)
 
#define THREADED_METHOD8_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8)   THREADED_METHOD8_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8)
 
#define THREADED_METHOD9(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9)   THREADED_METHOD9_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9)
 
#define THREADED_METHOD9_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9)   THREADED_METHOD9_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9)
 
#define THREADED_METHOD10(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9, PARMTYPE10, PARMNAME10)   THREADED_METHOD10_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9, PARMTYPE10, PARMNAME10)
 
#define THREADED_METHOD10_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9, PARMTYPE10, PARMNAME10)   THREADED_METHOD10_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9, PARMTYPE10, PARMNAME10)
 

Detailed Description

This macro is equivalent to

for (i = 0; i < n; i++)

It will, however break it into BLOCK sized chunks for each thread, allowing for load balancing NB: Because it relies on the info.nextTask() starting at zero, you can only loop once in this manner. NB: This is a double loop, so break; does not work as you expect. NB: The iterator, i, does not have to be defined. An example of use:

FOR_INFOTASKS(info, i, n, 100)
{
// Process task i.
}

If you want opInterrupt() triggered for every block completed,

FOR_INFOTASKS_BOSS(info, i, n, 100, boss)
{
// Process task i.
}

These macros automatically create all the wrapper functions required to set up a multithreaded function call that can be invoked transparently.

An example of use:

class Foobar
{
...
THREADED_METHOD2(Foobar, gdp->points().entries() > 100,
translate,
GU_Detail *, gdp,
const UT_Vector3 &, delta)
void translatePartial(GU_Detail *gdp, const UT_Vector3 &delta,
const UT_JobInfo &info);
...
}
void
Foobar::translatePartial(GU_Detail *gdp, const UT_Vector3 &delta,
const UT_JobInfo &info)
{
int i, n;
for (info.divideWork(gdp->points().entries, i, n); i < n; i++)
{
gdp->points()(i).getPos() += delta;
}
}

The suffix number is the number of parameters the function should take - THREADED_METHOD#(). The parameters to the macro are:

THREADED_METHOD#(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, ...);

The DOMULTI is a boolean value (which may be a function returning such) which determines if multithreading should be performed. This lets you disable the multithreading for small batches. Note it executes inside of METHOD, so has access to the parameters in the CLASS. For threaded methods with parameters, you need to specify both the PARMTYPE and the PARMNAME for each parameter.

The user must both prototype & implement a

void functionPartial(parameterlist, const &UT_JobInfo)

which does all the real work (see above).

Automatically created by the THREADED_METHOD macro are:

void function(parameterlist) <- what users can invoke
void functionNoThread(parameterlist) <- unthreaded version
int functionInvokeParital(...) <- marshalling function.

Definition in file UT_ThreadedAlgorithm.h.

Macro Definition Documentation

#define FOR_INFOTASKS (   info,
  i,
  n,
  blocksize 
)
Value:
for (int task = info.nextTask() * blocksize; task < n; task = info.nextTask() * blocksize) \
for (int i = task, lcl_final = SYSmin(task+blocksize, (int)n); i < lcl_final; i++)
png_uint_32 i
Definition: png.h:2877
GLdouble n
Definition: glcorearb.h:2007
#define SYSmin(a, b)
Definition: SYS_Math.h:1366

Definition at line 193 of file UT_ThreadedAlgorithm.h.

#define FOR_INFOTASKS_BOSS (   info,
  i,
  n,
  blocksize,
  boss 
)
Value:
for (int task = info.nextTask() * blocksize; task < n && !boss->opInterrupt(); task = info.nextTask() * blocksize) \
for (int i = task, lcl_final = SYSmin(task+blocksize, (int)n); i < lcl_final; i++)
png_uint_32 i
Definition: png.h:2877
GLdouble n
Definition: glcorearb.h:2007
#define SYSmin(a, b)
Definition: SYS_Math.h:1366

Definition at line 197 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD (   CLASSNAME,
  DOMULTI,
  METHOD 
)    THREADED_METHOD_INTERNAL( , CLASSNAME, DOMULTI, METHOD)

Definition at line 683 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD1 (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1 
)    THREADED_METHOD1_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1)

Definition at line 688 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD10 (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7,
  PARMTYPE8,
  PARMNAME8,
  PARMTYPE9,
  PARMNAME9,
  PARMTYPE10,
  PARMNAME10 
)    THREADED_METHOD10_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9, PARMTYPE10, PARMNAME10)

Definition at line 733 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD10_CONST (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7,
  PARMTYPE8,
  PARMNAME8,
  PARMTYPE9,
  PARMNAME9,
  PARMTYPE10,
  PARMNAME10 
)    THREADED_METHOD10_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9, PARMTYPE10, PARMNAME10)

Definition at line 735 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD10_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7,
  PARMTYPE8,
  PARMNAME8,
  PARMTYPE9,
  PARMNAME9,
  PARMTYPE10,
  PARMNAME10 
)
Value:
void METHOD(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5, PARMTYPE6 PARMNAME6, PARMTYPE7 PARMNAME7, PARMTYPE8 PARMNAME8, PARMTYPE9 PARMNAME9, PARMTYPE10 PARMNAME10) ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7, PARMNAME8, PARMNAME9, PARMNAME10); \
return; \
} \
\
UT_Functor2<int, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5,PARMTYPE6,PARMTYPE7,PARMTYPE8,PARMTYPE9,PARMTYPE10 >, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(UT_BindFirst1(functor, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5,PARMTYPE6,PARMTYPE7,PARMTYPE8,PARMTYPE9,PARMTYPE10 >(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7, PARMNAME8, PARMNAME9, PARMNAME10))); \
\
} \
\
void METHOD ## NoThread(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5, PARMTYPE6 PARMNAME6, PARMTYPE7 PARMNAME7, PARMTYPE8 PARMNAME8, PARMTYPE9 PARMNAME9, PARMTYPE10 PARMNAME10) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7, PARMNAME8, PARMNAME9, PARMNAME10, UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(hboost::tuple<PARMTYPE1, PARMTYPE2, PARMTYPE3, PARMTYPE4, PARMTYPE5, PARMTYPE6, PARMTYPE7, PARMTYPE8, PARMTYPE9, PARMTYPE10 > tuple, const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(hboost::get<0>(tuple), hboost::get<1>(tuple), hboost::get<2>(tuple), hboost::get<3>(tuple), hboost::get<4>(tuple), hboost::get<5>(tuple), hboost::get<6>(tuple), hboost::get<7>(tuple), hboost::get<8>(tuple), hboost::get<9>(tuple), info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
UT_Functor1< typename Functor::ReturnType, typename Functor::Parm2Type > UT_BindFirst1(const Functor &functor, typename Functor::Parm1Type bound_argument)
Definition: UT_Functor.h:615
typedef int
Definition: png.h:1175

Definition at line 651 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD1_CONST (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1 
)    THREADED_METHOD1_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1)

Definition at line 690 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD1_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1 
)
Value:
void METHOD(PARMTYPE1 PARMNAME1) ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(PARMNAME1); \
return; \
} \
\
UT_Functor2<int, PARMTYPE1, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(UT_BindFirst1(functor, PARMNAME1)); \
\
} \
\
void METHOD ## NoThread(PARMTYPE1 PARMNAME1) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(PARMTYPE1 PARMNAME1, const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
UT_Functor1< typename Functor::ReturnType, typename Functor::Parm2Type > UT_BindFirst1(const Functor &functor, typename Functor::Parm1Type bound_argument)
Definition: UT_Functor.h:615
typedef int
Definition: png.h:1175

Definition at line 397 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD2 (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2 
)    THREADED_METHOD2_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2)

Definition at line 693 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD2_CONST (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2 
)    THREADED_METHOD2_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2)

Definition at line 695 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD2_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2 
)
Value:
void METHOD(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2) ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(PARMNAME1, PARMNAME2); \
return; \
} \
\
UT_Functor2<int, hboost::tuple<PARMTYPE1,PARMTYPE2 >, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(UT_BindFirst1(functor, hboost::tuple<PARMTYPE1, PARMTYPE2 >(PARMNAME1,PARMNAME2))); \
\
} \
\
void METHOD ## NoThread(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, PARMNAME2, UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(hboost::tuple<PARMTYPE1, PARMTYPE2 > tuple, const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(hboost::get<0>(tuple), hboost::get<1>(tuple), info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
UT_Functor1< typename Functor::ReturnType, typename Functor::Parm2Type > UT_BindFirst1(const Functor &functor, typename Functor::Parm1Type bound_argument)
Definition: UT_Functor.h:615
typedef int
Definition: png.h:1175

Definition at line 425 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD3 (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3 
)    THREADED_METHOD3_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)

Definition at line 698 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD3_CONST (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3 
)    THREADED_METHOD3_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)

Definition at line 700 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD3_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3 
)
Value:
void METHOD(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3) ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(PARMNAME1, PARMNAME2, PARMNAME3); \
return; \
} \
\
UT_Functor2<int, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3 >, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(UT_BindFirst1(functor, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3 >(PARMNAME1, PARMNAME2, PARMNAME3))); \
\
} \
\
void METHOD ## NoThread(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, PARMNAME2, PARMNAME3, UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(hboost::tuple<PARMTYPE1, PARMTYPE2, PARMTYPE3 > tuple, const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(hboost::get<0>(tuple), hboost::get<1>(tuple), hboost::get<2>(tuple), info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
UT_Functor1< typename Functor::ReturnType, typename Functor::Parm2Type > UT_BindFirst1(const Functor &functor, typename Functor::Parm1Type bound_argument)
Definition: UT_Functor.h:615
typedef int
Definition: png.h:1175

Definition at line 453 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD4 (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4 
)    THREADED_METHOD4_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4)

Definition at line 703 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD4_CONST (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4 
)    THREADED_METHOD4_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4)

Definition at line 705 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD4_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4 
)
Value:
void METHOD(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4) ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4); \
return; \
} \
\
UT_Functor2<int, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4 >, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(UT_BindFirst1(functor, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4 >(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4))); \
\
} \
\
void METHOD ## NoThread(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(hboost::tuple<PARMTYPE1, PARMTYPE2, PARMTYPE3, PARMTYPE4 > tuple, const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(hboost::get<0>(tuple), hboost::get<1>(tuple), hboost::get<2>(tuple), hboost::get<3>(tuple), info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
UT_Functor1< typename Functor::ReturnType, typename Functor::Parm2Type > UT_BindFirst1(const Functor &functor, typename Functor::Parm1Type bound_argument)
Definition: UT_Functor.h:615
typedef int
Definition: png.h:1175

Definition at line 481 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD5 (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5 
)    THREADED_METHOD5_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5)

Definition at line 708 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD5_CONST (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5 
)    THREADED_METHOD5_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5)

Definition at line 710 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD5_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5 
)
Value:
void METHOD(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5) ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5); \
return; \
} \
\
UT_Functor2<int, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5 >, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(UT_BindFirst1(functor, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5 >(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5))); \
\
} \
\
void METHOD ## NoThread(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(hboost::tuple<PARMTYPE1, PARMTYPE2, PARMTYPE3, PARMTYPE4, PARMTYPE5 > tuple, const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(hboost::get<0>(tuple), hboost::get<1>(tuple), hboost::get<2>(tuple), hboost::get<3>(tuple), hboost::get<4>(tuple), info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
UT_Functor1< typename Functor::ReturnType, typename Functor::Parm2Type > UT_BindFirst1(const Functor &functor, typename Functor::Parm1Type bound_argument)
Definition: UT_Functor.h:615
typedef int
Definition: png.h:1175

Definition at line 510 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD6 (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6 
)    THREADED_METHOD6_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6)

Definition at line 713 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD6_CONST (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6 
)    THREADED_METHOD6_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6)

Definition at line 715 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD6_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6 
)
Value:
void METHOD(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5, PARMTYPE6 PARMNAME6) ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6); \
return; \
} \
\
UT_Functor2<int, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5,PARMTYPE6 >, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(UT_BindFirst1(functor, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5,PARMTYPE6 >(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6))); \
\
} \
\
void METHOD ## NoThread(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5, PARMTYPE6 PARMNAME6) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(hboost::tuple<PARMTYPE1, PARMTYPE2, PARMTYPE3, PARMTYPE4, PARMTYPE5, PARMTYPE6 > tuple, const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(hboost::get<0>(tuple), hboost::get<1>(tuple), hboost::get<2>(tuple), hboost::get<3>(tuple), hboost::get<4>(tuple), hboost::get<5>(tuple), info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
UT_Functor1< typename Functor::ReturnType, typename Functor::Parm2Type > UT_BindFirst1(const Functor &functor, typename Functor::Parm1Type bound_argument)
Definition: UT_Functor.h:615
typedef int
Definition: png.h:1175

Definition at line 539 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD7 (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7 
)    THREADED_METHOD7_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7)

Definition at line 718 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD7_CONST (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7 
)    THREADED_METHOD7_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7)

Definition at line 720 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD7_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7 
)
Value:
void METHOD(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5, PARMTYPE6 PARMNAME6, PARMTYPE7 PARMNAME7) ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7); \
return; \
} \
\
UT_Functor2<int, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5,PARMTYPE6,PARMTYPE7 >, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(UT_BindFirst1(functor, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5,PARMTYPE6,PARMTYPE7 >(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7))); \
\
} \
\
void METHOD ## NoThread(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5, PARMTYPE6 PARMNAME6, PARMTYPE7 PARMNAME7) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7, UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(hboost::tuple<PARMTYPE1, PARMTYPE2, PARMTYPE3, PARMTYPE4, PARMTYPE5, PARMTYPE6, PARMTYPE7 > tuple, const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(hboost::get<0>(tuple), hboost::get<1>(tuple), hboost::get<2>(tuple), hboost::get<3>(tuple), hboost::get<4>(tuple), hboost::get<5>(tuple), hboost::get<6>(tuple), info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
UT_Functor1< typename Functor::ReturnType, typename Functor::Parm2Type > UT_BindFirst1(const Functor &functor, typename Functor::Parm1Type bound_argument)
Definition: UT_Functor.h:615
typedef int
Definition: png.h:1175

Definition at line 567 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD8 (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7,
  PARMTYPE8,
  PARMNAME8 
)    THREADED_METHOD8_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8)

Definition at line 723 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD8_CONST (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7,
  PARMTYPE8,
  PARMNAME8 
)    THREADED_METHOD8_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8)

Definition at line 725 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD8_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7,
  PARMTYPE8,
  PARMNAME8 
)
Value:
void METHOD(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5, PARMTYPE6 PARMNAME6, PARMTYPE7 PARMNAME7, PARMTYPE8 PARMNAME8) ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7, PARMNAME8); \
return; \
} \
\
UT_Functor2<int, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5,PARMTYPE6,PARMTYPE7,PARMTYPE8 >, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(UT_BindFirst1(functor, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5,PARMTYPE6,PARMTYPE7,PARMTYPE8 >(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7, PARMNAME8))); \
\
} \
\
void METHOD ## NoThread(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5, PARMTYPE6 PARMNAME6, PARMTYPE7 PARMNAME7, PARMTYPE8 PARMNAME8) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7, PARMNAME8, UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(hboost::tuple<PARMTYPE1, PARMTYPE2, PARMTYPE3, PARMTYPE4, PARMTYPE5, PARMTYPE6, PARMTYPE7, PARMTYPE8 > tuple, const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(hboost::get<0>(tuple), hboost::get<1>(tuple), hboost::get<2>(tuple), hboost::get<3>(tuple), hboost::get<4>(tuple), hboost::get<5>(tuple), hboost::get<6>(tuple), hboost::get<7>(tuple), info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
UT_Functor1< typename Functor::ReturnType, typename Functor::Parm2Type > UT_BindFirst1(const Functor &functor, typename Functor::Parm1Type bound_argument)
Definition: UT_Functor.h:615
typedef int
Definition: png.h:1175

Definition at line 595 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD9 (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7,
  PARMTYPE8,
  PARMNAME8,
  PARMTYPE9,
  PARMNAME9 
)    THREADED_METHOD9_INTERNAL( , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9)

Definition at line 728 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD9_CONST (   CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7,
  PARMTYPE8,
  PARMNAME8,
  PARMTYPE9,
  PARMNAME9 
)    THREADED_METHOD9_INTERNAL(const , CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8, PARMTYPE9, PARMNAME9)

Definition at line 730 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD9_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD,
  PARMTYPE1,
  PARMNAME1,
  PARMTYPE2,
  PARMNAME2,
  PARMTYPE3,
  PARMNAME3,
  PARMTYPE4,
  PARMNAME4,
  PARMTYPE5,
  PARMNAME5,
  PARMTYPE6,
  PARMNAME6,
  PARMTYPE7,
  PARMNAME7,
  PARMTYPE8,
  PARMNAME8,
  PARMTYPE9,
  PARMNAME9 
)
Value:
void METHOD(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5, PARMTYPE6 PARMNAME6, PARMTYPE7 PARMNAME7, PARMTYPE8 PARMNAME8, PARMTYPE9 PARMNAME9) ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7, PARMNAME8, PARMNAME9); \
return; \
} \
\
UT_Functor2<int, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5,PARMTYPE6,PARMTYPE7,PARMTYPE8,PARMTYPE9 >, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(UT_BindFirst1(functor, hboost::tuple<PARMTYPE1,PARMTYPE2,PARMTYPE3,PARMTYPE4,PARMTYPE5,PARMTYPE6,PARMTYPE7,PARMTYPE8,PARMTYPE9 >(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7, PARMNAME8, PARMNAME9))); \
\
} \
\
void METHOD ## NoThread(PARMTYPE1 PARMNAME1, PARMTYPE2 PARMNAME2, PARMTYPE3 PARMNAME3, PARMTYPE4 PARMNAME4, PARMTYPE5 PARMNAME5, PARMTYPE6 PARMNAME6, PARMTYPE7 PARMNAME7, PARMTYPE8 PARMNAME8, PARMTYPE9 PARMNAME9) ISCONST \
{ \
METHOD ## Partial(PARMNAME1, PARMNAME2, PARMNAME3, PARMNAME4, PARMNAME5, PARMNAME6, PARMNAME7, PARMNAME8, PARMNAME9, UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(hboost::tuple<PARMTYPE1, PARMTYPE2, PARMTYPE3, PARMTYPE4, PARMTYPE5, PARMTYPE6, PARMTYPE7, PARMTYPE8, PARMTYPE9 > tuple, const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(hboost::get<0>(tuple), hboost::get<1>(tuple), hboost::get<2>(tuple), hboost::get<3>(tuple), hboost::get<4>(tuple), hboost::get<5>(tuple), hboost::get<6>(tuple), hboost::get<7>(tuple), hboost::get<8>(tuple), info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
UT_Functor1< typename Functor::ReturnType, typename Functor::Parm2Type > UT_BindFirst1(const Functor &functor, typename Functor::Parm1Type bound_argument)
Definition: UT_Functor.h:615
typedef int
Definition: png.h:1175

Definition at line 623 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD_CONST (   CLASSNAME,
  DOMULTI,
  METHOD 
)    THREADED_METHOD_INTERNAL(const , CLASSNAME, DOMULTI, METHOD)

Definition at line 685 of file UT_ThreadedAlgorithm.h.

#define THREADED_METHOD_INTERNAL (   ISCONST,
  CLASSNAME,
  DOMULTI,
  METHOD 
)
Value:
void METHOD() ISCONST \
{ \
if (!(DOMULTI)) \
{ \
METHOD ## NoThread(); \
return; \
} \
\
UT_Functor1<int, const UT_JobInfo &> functor( \
this, &CLASSNAME::METHOD ## InvokePartial); \
UT_ThreadedAlgorithm alg; \
\
alg.run(functor); \
\
} \
\
void METHOD ## NoThread() ISCONST \
{ \
METHOD ## Partial(UT_JobInfo(0, 1, 0)); \
} \
\
int METHOD ## InvokePartial(const UT_JobInfo &info) ISCONST \
{ \
METHOD ## Partial(info); \
return 0; \
}
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
typedef int
Definition: png.h:1175

Definition at line 369 of file UT_ThreadedAlgorithm.h.