![]() |
![]() |
#include "classlib/utils/XTypeInfo.h"
#include "classlib/utils/PODVector.h"
#include "classlib/utils/Macros.h"
Go to the source code of this file.
Namespaces | |
namespace | lat |
Classes | |
class | lat::MultiMethod |
Base class for multi-methods. More... | |
struct | lat::MultiMethod::Definition |
Actual data structure defining the multi-method. More... | |
struct | lat::MultiMethod::Entry |
A record of information chained into extended type information. More... | |
struct | lat::MultiMethod::EntryHunk |
A hunk of Entry objects. More... | |
struct | lat::MultiMethod::Member |
Description of a member belonging to the multi-method. More... | |
struct | lat::MultiMethod::Score |
Method scoring information. More... | |
struct | lat::MultiMethod::ScoreHunk |
A hunk of Score objects. More... | |
class | lat::MultiMethod_1_0< R, V1 > |
class | lat::MultiMethod_1_1< R, V1, T1 > |
class | lat::MultiMethod_1_2< R, V1, T1, T2 > |
class | lat::MultiMethod_2_0< R, V1, V2 > |
class | lat::MultiMethod_2_1< R, V1, V2, T1 > |
class | lat::MultiMethod_2_2< R, V1, V2, T1, T2 > |
class | lat::MultiMethod_3_0< R, V1, V2, V3 > |
class | lat::MultiMethod_3_1< R, V1, V2, V3, T1 > |
class | lat::MultiMethod_3_2< R, V1, V2, V3, T1, T2 > |
class | lat::MultiMethodCarrier< NV, NNV, M, R, P > |
Magic class that carries information in its template arguments through MultiMethodStub into the MultiMethodMemberStub_x_y classes. More... | |
struct | lat::MultiMethodMember< M, P, F, D > |
Class that manages the registration of a multi-method member. More... | |
struct | lat::MultiMethodMemberStub_1_0< M, V1 > |
struct | lat::MultiMethodMemberStub_1_1< M, V1 > |
struct | lat::MultiMethodMemberStub_1_2< M, V1 > |
struct | lat::MultiMethodMemberStub_2_0< M, V1, V2 > |
struct | lat::MultiMethodMemberStub_2_1< M, V1, V2 > |
struct | lat::MultiMethodMemberStub_2_2< M, V1, V2 > |
struct | lat::MultiMethodMemberStub_3_0< M, V1, V2, V3 > |
struct | lat::MultiMethodMemberStub_3_1< M, V1, V2, V3 > |
struct | lat::MultiMethodMemberStub_3_2< M, V1, V2, V3 > |
Defines | |
#define | MMM_DECLARE(ret, name, proto) ret mmm_##name proto |
#define | MMM_DECLARE_STUB(mscope, scope, name, proto, regsym) |
#define | MMM_DEFUN_FUNC(ret, mscope, name, proto) |
#define | MMM_DEFUN_METHOD(ret, mscope, scope, name, proto) |
#define | MMM_SYM(pre, line, post) CLASSLIB_name3(pre,line,post) |
#define | MULTIMETHOD_ARGS_1_0(V1) V1 |
#define | MULTIMETHOD_ARGS_1_1(V1, A1) V1, A1 |
#define | MULTIMETHOD_ARGS_1_2(V1, A1, A2) V1, A1, A2 |
#define | MULTIMETHOD_ARGS_2_0(V1, V2) V1, V2 |
#define | MULTIMETHOD_ARGS_2_1(V1, V2, A1) V1, V2, A1 |
#define | MULTIMETHOD_ARGS_2_2(V1, V2, A1, A2) V1, V2, A1, A2 |
#define | MULTIMETHOD_ARGS_3_0(V1, V2, V3) V1, V2, V3 |
#define | MULTIMETHOD_ARGS_3_1(V1, V2, V3, A1) V1, V2, V3, A1 |
#define | MULTIMETHOD_ARGS_3_2(V1, V2, V3, A1, A2) V1, V2, V3, A1, A2 |
#define | MULTIMETHOD_DECLARE(ext, rettype, name, nvirt, nnonvirt, args) |
#define | MULTIMETHOD_DEFINE(scope, name) |
Functions | |
template<class M, class R, class V1, class V2, class V3, class A1, class A2> | |
MultiMethodMemberStub_3_2< M, V1, V2, V3 > * | lat::MultiMethodStub (MultiMethodCarrier< 3, 2, M, R, R(*)(V1 *, V2 *, V3 *, A1, A2)> *) |
template<class M, class R, class V1, class V2, class V3, class A1> | |
MultiMethodMemberStub_3_1< M, V1, V2, V3 > * | lat::MultiMethodStub (MultiMethodCarrier< 3, 1, M, R, R(*)(V1 *, V2 *, V3 *, A1)> *) |
template<class M, class R, class V1, class V2, class V3> | |
MultiMethodMemberStub_3_0< M, V1, V2, V3 > * | lat::MultiMethodStub (MultiMethodCarrier< 3, 0, M, R, R(*)(V1 *, V2 *, V3 *)> *) |
template<class M, class R, class V1, class V2, class A1, class A2> | |
MultiMethodMemberStub_2_2< M, V1, V2 > * | lat::MultiMethodStub (MultiMethodCarrier< 2, 2, M, R, R(*)(V1 *, V2 *, A1, A2)> *) |
template<class M, class R, class V1, class V2, class A1> | |
MultiMethodMemberStub_2_1< M, V1, V2 > * | lat::MultiMethodStub (MultiMethodCarrier< 2, 1, M, R, R(*)(V1 *, V2 *, A1)> *) |
template<class M, class R, class V1, class V2> | |
MultiMethodMemberStub_2_0< M, V1, V2 > * | lat::MultiMethodStub (MultiMethodCarrier< 2, 0, M, R, R(*)(V1 *, V2 *)> *) |
template<class M, class R, class V1, class A1, class A2> | |
MultiMethodMemberStub_1_2< M, V1 > * | lat::MultiMethodStub (MultiMethodCarrier< 1, 2, M, R, R(*)(V1 *, A1, A2)> *) |
template<class M, class R, class V1, class A1> | |
MultiMethodMemberStub_1_1< M, V1 > * | lat::MultiMethodStub (MultiMethodCarrier< 1, 1, M, R, R(*)(V1 *, A1)> *) |
template<class M, class R, class V1> | |
MultiMethodMemberStub_1_0< M, V1 > * | lat::MultiMethodStub (MultiMethodCarrier< 1, 0, M, R, R(*)(V1 *)> *) |
Definition at line 73 of file MultiMethod.h.
Value:
static lat::MultiMethodMember< mscope name##Type,proto, \ &scope mmm_##name, &mscope name##Def> regsym
Definition at line 74 of file MultiMethod.h.
Value:
MMM_DECLARE_STUB(mscope,scope,name,ret (*) proto, \ MMM_SYM(name,Init,__LINE__)); \ ret scope mmm_##name proto
Definition at line 77 of file MultiMethod.h.
#define MMM_SYM | ( | pre, | |||
line, | |||||
post | ) | CLASSLIB_name3(pre,line,post) |
Definition at line 72 of file MultiMethod.h.
#define MULTIMETHOD_ARGS_1_0 | ( | V1 | ) | V1 |
Definition at line 50 of file MultiMethod.h.
#define MULTIMETHOD_ARGS_1_1 | ( | V1, | |||
A1 | ) | V1, A1 |
Definition at line 51 of file MultiMethod.h.
#define MULTIMETHOD_ARGS_1_2 | ( | V1, | |||
A1, | |||||
A2 | ) | V1, A1, A2 |
Definition at line 52 of file MultiMethod.h.
#define MULTIMETHOD_ARGS_2_0 | ( | V1, | |||
V2 | ) | V1, V2 |
Definition at line 53 of file MultiMethod.h.
#define MULTIMETHOD_ARGS_2_1 | ( | V1, | |||
V2, | |||||
A1 | ) | V1, V2, A1 |
Definition at line 54 of file MultiMethod.h.
#define MULTIMETHOD_ARGS_2_2 | ( | V1, | |||
V2, | |||||
A1, | |||||
A2 | ) | V1, V2, A1, A2 |
Definition at line 55 of file MultiMethod.h.
#define MULTIMETHOD_ARGS_3_0 | ( | V1, | |||
V2, | |||||
V3 | ) | V1, V2, V3 |
Definition at line 56 of file MultiMethod.h.
#define MULTIMETHOD_ARGS_3_1 | ( | V1, | |||
V2, | |||||
V3, | |||||
A1 | ) | V1, V2, V3, A1 |
Definition at line 57 of file MultiMethod.h.
#define MULTIMETHOD_ARGS_3_2 | ( | V1, | |||
V2, | |||||
V3, | |||||
A1, | |||||
A2 | ) | V1, V2, V3, A1, A2 |
Definition at line 58 of file MultiMethod.h.
#define MULTIMETHOD_DECLARE | ( | ext, | |||
rettype, | |||||
name, | |||||
nvirt, | |||||
nnonvirt, | |||||
args | ) |
Value:
ext lat::MultiMethod::Definition name ## Def; \ typedef lat::MultiMethod_##nvirt##_##nnonvirt< \ rettype, MULTIMETHOD_ARGS_##nvirt##_##nnonvirt args \ > name##Type; \ ext name##Type name
Definition at line 60 of file MultiMethod.h.
#define MULTIMETHOD_DEFINE | ( | scope, | |||
name | ) |
Value:
lat::MultiMethod::Definition scope name ## Def = \ { #name, 0, false, false, 0, 0, 0, { 0, 0, 0 }, 0, 0, 0, 0, 0 }; \ scope name ## Type scope name (&name ##Def)
Definition at line 67 of file MultiMethod.h.