mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 11:05:54 +00:00
Add classes ProtectedCall and Main
This commit is contained in:
@@ -70,7 +70,6 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\modules\beast_basics\beast_basics.h" />
|
<ClInclude Include="..\..\modules\beast_basics\beast_basics.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_basics\diagnostic\beast_CatchAny.h" />
|
|
||||||
<ClInclude Include="..\..\modules\beast_basics\events\beast_DeadlineTimer.h" />
|
<ClInclude Include="..\..\modules\beast_basics\events\beast_DeadlineTimer.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_basics\events\beast_OncePerSecond.h" />
|
<ClInclude Include="..\..\modules\beast_basics\events\beast_OncePerSecond.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_basics\functor\beast_Function.h" />
|
<ClInclude Include="..\..\modules\beast_basics\functor\beast_Function.h" />
|
||||||
@@ -116,6 +115,7 @@
|
|||||||
<ClInclude Include="..\..\modules\beast_core\containers\beast_Variant.h" />
|
<ClInclude Include="..\..\modules\beast_core\containers\beast_Variant.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_Debug.h" />
|
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_Debug.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_Error.h" />
|
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_Error.h" />
|
||||||
|
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_ProtectedCall.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_FPUFlags.h" />
|
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_FPUFlags.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_LeakChecked.h" />
|
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_LeakChecked.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_SafeBool.h" />
|
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_SafeBool.h" />
|
||||||
@@ -159,6 +159,7 @@
|
|||||||
<ClInclude Include="..\..\modules\beast_core\memory\beast_StaticObject.h" />
|
<ClInclude Include="..\..\modules\beast_core\memory\beast_StaticObject.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_core\memory\beast_Uncopyable.h" />
|
<ClInclude Include="..\..\modules\beast_core\memory\beast_Uncopyable.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_core\memory\beast_WeakReference.h" />
|
<ClInclude Include="..\..\modules\beast_core\memory\beast_WeakReference.h" />
|
||||||
|
<ClInclude Include="..\..\modules\beast_core\misc\beast_Main.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_core\misc\beast_Result.h" />
|
<ClInclude Include="..\..\modules\beast_core\misc\beast_Result.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_core\misc\beast_Uuid.h" />
|
<ClInclude Include="..\..\modules\beast_core\misc\beast_Uuid.h" />
|
||||||
<ClInclude Include="..\..\modules\beast_core\misc\beast_WindowsRegistry.h" />
|
<ClInclude Include="..\..\modules\beast_core\misc\beast_WindowsRegistry.h" />
|
||||||
@@ -266,12 +267,6 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\modules\beast_basics\beast_basics.cpp" />
|
<ClCompile Include="..\..\modules\beast_basics\beast_basics.cpp" />
|
||||||
<ClCompile Include="..\..\modules\beast_basics\diagnostic\beast_CatchAny.cpp">
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\modules\beast_basics\events\beast_DeadlineTimer.cpp">
|
<ClCompile Include="..\..\modules\beast_basics\events\beast_DeadlineTimer.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
@@ -399,6 +394,12 @@
|
|||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\modules\beast_core\diagnostic\beast_ProtectedCall.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\modules\beast_core\diagnostic\beast_FPUFlags.cpp">
|
<ClCompile Include="..\..\modules\beast_core\diagnostic\beast_FPUFlags.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
@@ -513,6 +514,12 @@
|
|||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\modules\beast_core\misc\beast_Main.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\modules\beast_core\misc\beast_Result.cpp">
|
<ClCompile Include="..\..\modules\beast_core\misc\beast_Result.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
|
|||||||
@@ -92,9 +92,6 @@
|
|||||||
<Filter Include="beast_basics">
|
<Filter Include="beast_basics">
|
||||||
<UniqueIdentifier>{e3a8f3eb-7f0f-4b81-b978-0dd0823f583b}</UniqueIdentifier>
|
<UniqueIdentifier>{e3a8f3eb-7f0f-4b81-b978-0dd0823f583b}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter Include="beast_basics\diagnostic">
|
|
||||||
<UniqueIdentifier>{ba11b980-76dd-49a4-b2c7-878e9f08f8ce}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="beast_basics\events">
|
<Filter Include="beast_basics\events">
|
||||||
<UniqueIdentifier>{b8caa85d-f224-4e3a-966f-a19b65023869}</UniqueIdentifier>
|
<UniqueIdentifier>{b8caa85d-f224-4e3a-966f-a19b65023869}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
@@ -482,9 +479,6 @@
|
|||||||
<ClInclude Include="..\..\modules\beast_basics\beast_basics.h">
|
<ClInclude Include="..\..\modules\beast_basics\beast_basics.h">
|
||||||
<Filter>beast_basics</Filter>
|
<Filter>beast_basics</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\modules\beast_basics\diagnostic\beast_CatchAny.h">
|
|
||||||
<Filter>beast_basics\diagnostic</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\modules\beast_basics\events\beast_OncePerSecond.h">
|
<ClInclude Include="..\..\modules\beast_basics\events\beast_OncePerSecond.h">
|
||||||
<Filter>beast_basics\events</Filter>
|
<Filter>beast_basics\events</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -725,6 +719,12 @@
|
|||||||
<ClInclude Include="..\..\modules\beast_core\maths\beast_MurmurHash.h">
|
<ClInclude Include="..\..\modules\beast_core\maths\beast_MurmurHash.h">
|
||||||
<Filter>beast_core\maths</Filter>
|
<Filter>beast_core\maths</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\modules\beast_core\diagnostic\beast_ProtectedCall.h">
|
||||||
|
<Filter>beast_core\diagnostic</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\modules\beast_core\misc\beast_Main.h">
|
||||||
|
<Filter>beast_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\modules\beast_core\beast_core.cpp">
|
<ClCompile Include="..\..\modules\beast_core\beast_core.cpp">
|
||||||
@@ -976,9 +976,6 @@
|
|||||||
<ClCompile Include="..\..\modules\beast_basics\beast_basics.cpp">
|
<ClCompile Include="..\..\modules\beast_basics\beast_basics.cpp">
|
||||||
<Filter>beast_basics</Filter>
|
<Filter>beast_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\modules\beast_basics\diagnostic\beast_CatchAny.cpp">
|
|
||||||
<Filter>beast_basics\diagnostic</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\modules\beast_basics\events\beast_OncePerSecond.cpp">
|
<ClCompile Include="..\..\modules\beast_basics\events\beast_OncePerSecond.cpp">
|
||||||
<Filter>beast_basics\events</Filter>
|
<Filter>beast_basics\events</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -1126,6 +1123,12 @@
|
|||||||
<ClCompile Include="..\..\modules\beast_core\maths\beast_MurmurHash.cpp">
|
<ClCompile Include="..\..\modules\beast_core\maths\beast_MurmurHash.cpp">
|
||||||
<Filter>beast_core\maths</Filter>
|
<Filter>beast_core\maths</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\modules\beast_core\diagnostic\beast_ProtectedCall.cpp">
|
||||||
|
<Filter>beast_core\diagnostic</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\modules\beast_core\misc\beast_Main.cpp">
|
||||||
|
<Filter>beast_core\misc</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Text Include="..\..\TODO.txt" />
|
<Text Include="..\..\TODO.txt" />
|
||||||
|
|||||||
2
TODO.txt
2
TODO.txt
@@ -2,6 +2,8 @@
|
|||||||
BEAST TODO
|
BEAST TODO
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
- Import secp256k1 from sipa
|
||||||
|
|
||||||
- HashMap work:
|
- HashMap work:
|
||||||
- Add unit test
|
- Add unit test
|
||||||
- Return size_t from hash function, take out upperLimit, move mod % to caller
|
- Return size_t from hash function, take out upperLimit, move mod % to caller
|
||||||
|
|||||||
@@ -40,8 +40,6 @@
|
|||||||
namespace beast
|
namespace beast
|
||||||
{
|
{
|
||||||
|
|
||||||
#include "diagnostic/beast_CatchAny.cpp"
|
|
||||||
|
|
||||||
#include "events/beast_DeadlineTimer.cpp"
|
#include "events/beast_DeadlineTimer.cpp"
|
||||||
#include "events/beast_OncePerSecond.cpp"
|
#include "events/beast_OncePerSecond.cpp"
|
||||||
|
|
||||||
|
|||||||
@@ -246,7 +246,6 @@ namespace beast
|
|||||||
// Order matters
|
// Order matters
|
||||||
|
|
||||||
#include "functor/beast_Function.h"
|
#include "functor/beast_Function.h"
|
||||||
#include "diagnostic/beast_CatchAny.h"
|
|
||||||
#include "events/beast_DeadlineTimer.h"
|
#include "events/beast_DeadlineTimer.h"
|
||||||
#include "events/beast_OncePerSecond.h"
|
#include "events/beast_OncePerSecond.h"
|
||||||
#include "math/beast_Math.h"
|
#include "math/beast_Math.h"
|
||||||
|
|||||||
@@ -1,54 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of Beast: https://github.com/vinniefalco/Beast
|
|
||||||
Copyright 2013, Vinnie Falco <vinnie.falco@gmail.com>
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#ifndef BEAST_CATCHANY_BEASTHEADER
|
|
||||||
#define BEAST_CATCHANY_BEASTHEADER
|
|
||||||
|
|
||||||
/**
|
|
||||||
Exception catcher.
|
|
||||||
|
|
||||||
Executes the function and catches any exception.
|
|
||||||
In addition to C++ exceptions, this will also catch
|
|
||||||
any platform-specific exceptions. For example, SEH
|
|
||||||
(Structured Exception Handling) on Windows, or POSIX
|
|
||||||
signals if they are available.
|
|
||||||
|
|
||||||
If returnFromException is false then a framework
|
|
||||||
specific unhandled exception handler will be called.
|
|
||||||
Otherwise, this function will return true if it
|
|
||||||
catches something or else false.
|
|
||||||
|
|
||||||
The return value approach is useful for detecting
|
|
||||||
when outside code fails (for example, a VST plugin),
|
|
||||||
and disabling its future use for example.
|
|
||||||
|
|
||||||
@todo Remove dependence on the JUCEApplication object and remove beast_gui_basics.h from beast_core.cpp
|
|
||||||
|
|
||||||
@param f The function to call.
|
|
||||||
|
|
||||||
@param returnFromException `false` if exceptions should terminate the app.
|
|
||||||
|
|
||||||
@return `true` if an exception was caught.
|
|
||||||
|
|
||||||
@ingroup beast_core
|
|
||||||
*/
|
|
||||||
extern bool CatchAny (Function <void (void)> f,
|
|
||||||
bool returnFromException = false);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
|
|
||||||
fifo.call (&Object::func4); // even static members can be called.
|
fifo.call (&Object::func4); // even static members can be called.
|
||||||
|
|
||||||
fifo.callf (bind (&Object::func2, // same as: object->func2 ()
|
fifo.callf (functional::bind (&Object::func2, // same as: object->func2 ()
|
||||||
object));
|
object));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,73 +217,55 @@ public:
|
|||||||
#if BEAST_VARIADIC_MAX >= 1
|
#if BEAST_VARIADIC_MAX >= 1
|
||||||
template <class Fn>
|
template <class Fn>
|
||||||
void call (Fn f)
|
void call (Fn f)
|
||||||
{
|
{ callf (functional::bind (f)); }
|
||||||
callf (bind (f));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 2
|
#if BEAST_VARIADIC_MAX >= 2
|
||||||
template <class Fn, class T1>
|
template <class Fn, class T1>
|
||||||
void call (Fn f, T1 t1)
|
void call (Fn f, T1 t1)
|
||||||
{
|
{ callf (functional::bind (f, t1)); }
|
||||||
callf (bind (f, t1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 3
|
#if BEAST_VARIADIC_MAX >= 3
|
||||||
template <class Fn, class T1, class T2>
|
template <class Fn, class T1, class T2>
|
||||||
void call (Fn f, T1 t1, T2 t2)
|
void call (Fn f, T1 t1, T2 t2)
|
||||||
{
|
{ callf (functional::bind (f, t1, t2)); }
|
||||||
callf (bind (f, t1, t2));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 4
|
#if BEAST_VARIADIC_MAX >= 4
|
||||||
template <class Fn, class T1, class T2, class T3>
|
template <class Fn, class T1, class T2, class T3>
|
||||||
void call (Fn f, T1 t1, T2 t2, T3 t3)
|
void call (Fn f, T1 t1, T2 t2, T3 t3)
|
||||||
{
|
{ callf (functional::bind (f, t1, t2, t3)); }
|
||||||
callf (bind (f, t1, t2, t3));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 5
|
#if BEAST_VARIADIC_MAX >= 5
|
||||||
template <class Fn, class T1, class T2, class T3, class T4>
|
template <class Fn, class T1, class T2, class T3, class T4>
|
||||||
void call (Fn f, T1 t1, T2 t2, T3 t3, T4 t4)
|
void call (Fn f, T1 t1, T2 t2, T3 t3, T4 t4)
|
||||||
{
|
{ callf (functional::bind (f, t1, t2, t3, t4)); }
|
||||||
callf (bind (f, t1, t2, t3, t4));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 6
|
#if BEAST_VARIADIC_MAX >= 6
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5>
|
||||||
void call (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
void call (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
||||||
{
|
{ callf (functional::bind (f, t1, t2, t3, t4, t5)); }
|
||||||
callf (bind (f, t1, t2, t3, t4, t5));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 7
|
#if BEAST_VARIADIC_MAX >= 7
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6>
|
||||||
void call (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
void call (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
||||||
{
|
{ callf (functional::bind (f, t1, t2, t3, t4, t5, t6)); }
|
||||||
callf (bind (f, t1, t2, t3, t4, t5, t6));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 8
|
#if BEAST_VARIADIC_MAX >= 8
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
||||||
void call (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
void call (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
||||||
{
|
{ callf (functional::bind (f, t1, t2, t3, t4, t5, t6, t7)); }
|
||||||
callf (bind (f, t1, t2, t3, t4, t5, t6, t7));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 9
|
#if BEAST_VARIADIC_MAX >= 9
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
||||||
void call (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
void call (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
||||||
{
|
{ callf (functional::bind (f, t1, t2, t3, t4, t5, t6, t7, t8)); }
|
||||||
callf (bind (f, t1, t2, t3, t4, t5, t6, t7, t8));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
@@ -349,73 +331,55 @@ public:
|
|||||||
#if BEAST_VARIADIC_MAX >= 1
|
#if BEAST_VARIADIC_MAX >= 1
|
||||||
template <class Fn>
|
template <class Fn>
|
||||||
void queue (Fn f)
|
void queue (Fn f)
|
||||||
{
|
{ queuef (functional::bind (f)); }
|
||||||
queuef (bind (f));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 2
|
#if BEAST_VARIADIC_MAX >= 2
|
||||||
template <class Fn, class T1>
|
template <class Fn, class T1>
|
||||||
void queue (Fn f, T1 t1)
|
void queue (Fn f, T1 t1)
|
||||||
{
|
{ queuef (functional::bind (f, t1)); }
|
||||||
queuef (bind (f, t1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 3
|
#if BEAST_VARIADIC_MAX >= 3
|
||||||
template <class Fn, class T1, class T2>
|
template <class Fn, class T1, class T2>
|
||||||
void queue (Fn f, T1 t1, T2 t2)
|
void queue (Fn f, T1 t1, T2 t2)
|
||||||
{
|
{ queuef (functional::bind (f, t1, t2)); }
|
||||||
queuef (bind (f, t1, t2));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 4
|
#if BEAST_VARIADIC_MAX >= 4
|
||||||
template <class Fn, class T1, class T2, class T3>
|
template <class Fn, class T1, class T2, class T3>
|
||||||
void queue (Fn f, T1 t1, T2 t2, T3 t3)
|
void queue (Fn f, T1 t1, T2 t2, T3 t3)
|
||||||
{
|
{ queuef (functional::bind (f, t1, t2, t3)); }
|
||||||
queuef (bind (f, t1, t2, t3));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 5
|
#if BEAST_VARIADIC_MAX >= 5
|
||||||
template <class Fn, class T1, class T2, class T3, class T4>
|
template <class Fn, class T1, class T2, class T3, class T4>
|
||||||
void queue (Fn f, T1 t1, T2 t2, T3 t3, T4 t4)
|
void queue (Fn f, T1 t1, T2 t2, T3 t3, T4 t4)
|
||||||
{
|
{ queuef (functional::bind (f, t1, t2, t3, t4)); }
|
||||||
queuef (bind (f, t1, t2, t3, t4));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 6
|
#if BEAST_VARIADIC_MAX >= 6
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5>
|
||||||
void queue (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
void queue (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
||||||
{
|
{ queuef (functional::bind (f, t1, t2, t3, t4, t5)); }
|
||||||
queuef (bind (f, t1, t2, t3, t4, t5));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 7
|
#if BEAST_VARIADIC_MAX >= 7
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6>
|
||||||
void queue (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
void queue (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
||||||
{
|
{ queuef (functional::bind (f, t1, t2, t3, t4, t5, t6)); }
|
||||||
queuef (bind (f, t1, t2, t3, t4, t5, t6));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 8
|
#if BEAST_VARIADIC_MAX >= 8
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
||||||
void queue (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
void queue (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
||||||
{
|
{ queuef (functional::bind (f, t1, t2, t3, t4, t5, t6, t7)); }
|
||||||
queuef (bind (f, t1, t2, t3, t4, t5, t6, t7));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 9
|
#if BEAST_VARIADIC_MAX >= 9
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
||||||
void queue (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
void queue (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
||||||
{
|
{ queuef (functional::bind (f, t1, t2, t3, t4, t5, t6, t7, t8)); }
|
||||||
queuef (bind (f, t1, t2, t3, t4, t5, t6, t7, t8));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
|||||||
@@ -205,7 +205,6 @@ void InterruptibleThread::run ()
|
|||||||
|
|
||||||
m_runEvent.wait ();
|
m_runEvent.wait ();
|
||||||
|
|
||||||
//CatchAny (m_function);
|
|
||||||
m_entryPoint->threadRun ();
|
m_entryPoint->threadRun ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -474,73 +474,55 @@ public:
|
|||||||
#if BEAST_VARIADIC_MAX >= 1
|
#if BEAST_VARIADIC_MAX >= 1
|
||||||
template <class Mf>
|
template <class Mf>
|
||||||
inline void call (Mf mf)
|
inline void call (Mf mf)
|
||||||
{
|
{ callf (functional::bind (mf, placeholders::_1)); }
|
||||||
callf (bind (mf, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 2
|
#if BEAST_VARIADIC_MAX >= 2
|
||||||
template <class Mf, class T1>
|
template <class Mf, class T1>
|
||||||
void call (Mf mf, T1 t1)
|
void call (Mf mf, T1 t1)
|
||||||
{
|
{ callf (functional::bind (mf, placeholders::_1, t1)); }
|
||||||
callf (bind (mf, _1, t1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 3
|
#if BEAST_VARIADIC_MAX >= 3
|
||||||
template <class Mf, class T1, class T2>
|
template <class Mf, class T1, class T2>
|
||||||
void call (Mf mf, T1 t1, T2 t2)
|
void call (Mf mf, T1 t1, T2 t2)
|
||||||
{
|
{ callf (functional::bind (mf, placeholders::_1, t1, t2)); }
|
||||||
callf (bind (mf, _1, t1, t2));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 4
|
#if BEAST_VARIADIC_MAX >= 4
|
||||||
template <class Mf, class T1, class T2, class T3>
|
template <class Mf, class T1, class T2, class T3>
|
||||||
void call (Mf mf, T1 t1, T2 t2, T3 t3)
|
void call (Mf mf, T1 t1, T2 t2, T3 t3)
|
||||||
{
|
{ callf (functional::bind (mf, placeholders::_1, t1, t2, t3)); }
|
||||||
callf (bind (mf, _1, t1, t2, t3));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 5
|
#if BEAST_VARIADIC_MAX >= 5
|
||||||
template <class Mf, class T1, class T2, class T3, class T4>
|
template <class Mf, class T1, class T2, class T3, class T4>
|
||||||
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
|
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
|
||||||
{
|
{ callf (functional::bind (mf, placeholders::_1, t1, t2, t3, t4)); }
|
||||||
callf (bind (mf, _1, t1, t2, t3, t4));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 6
|
#if BEAST_VARIADIC_MAX >= 6
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5>
|
||||||
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
||||||
{
|
{ callf (functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5)); }
|
||||||
callf (bind (mf, _1, t1, t2, t3, t4, t5));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 7
|
#if BEAST_VARIADIC_MAX >= 7
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
|
||||||
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
||||||
{
|
{ callf (functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6)); }
|
||||||
callf (bind (mf, _1, t1, t2, t3, t4, t5, t6));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 8
|
#if BEAST_VARIADIC_MAX >= 8
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
||||||
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
||||||
{
|
{ callf (functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6, t7)); }
|
||||||
callf (bind (mf, _1, t1, t2, t3, t4, t5, t6, t7));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 9
|
#if BEAST_VARIADIC_MAX >= 9
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
||||||
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
void call (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
||||||
{
|
{ callf (functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6, t7, t8)); }
|
||||||
callf (bind (mf, _1, t1, t2, t3, t4, t5, t6, t7, t8));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
@@ -556,73 +538,55 @@ public:
|
|||||||
#if BEAST_VARIADIC_MAX >= 1
|
#if BEAST_VARIADIC_MAX >= 1
|
||||||
template <class Mf>
|
template <class Mf>
|
||||||
inline void queue (Mf mf)
|
inline void queue (Mf mf)
|
||||||
{
|
{ queuef (functional::bind (mf, placeholders::_1)); }
|
||||||
queuef (bind (mf, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 2
|
#if BEAST_VARIADIC_MAX >= 2
|
||||||
template <class Mf, class T1>
|
template <class Mf, class T1>
|
||||||
void queue (Mf mf, T1 t1)
|
void queue (Mf mf, T1 t1)
|
||||||
{
|
{ queuef (functional::bind (mf, placeholders::_1, t1)); }
|
||||||
queuef (bind (mf, _1, t1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 3
|
#if BEAST_VARIADIC_MAX >= 3
|
||||||
template <class Mf, class T1, class T2>
|
template <class Mf, class T1, class T2>
|
||||||
void queue (Mf mf, T1 t1, T2 t2)
|
void queue (Mf mf, T1 t1, T2 t2)
|
||||||
{
|
{ queuef (functional::bind (mf, placeholders::_1, t1, t2)); }
|
||||||
queuef (bind (mf, _1, t1, t2));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 4
|
#if BEAST_VARIADIC_MAX >= 4
|
||||||
template <class Mf, class T1, class T2, class T3>
|
template <class Mf, class T1, class T2, class T3>
|
||||||
void queue (Mf mf, T1 t1, T2 t2, T3 t3)
|
void queue (Mf mf, T1 t1, T2 t2, T3 t3)
|
||||||
{
|
{ queuef (functional::bind (mf, placeholders::_1, t1, t2, t3)); }
|
||||||
queuef (bind (mf, _1, t1, t2, t3));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 5
|
#if BEAST_VARIADIC_MAX >= 5
|
||||||
template <class Mf, class T1, class T2, class T3, class T4>
|
template <class Mf, class T1, class T2, class T3, class T4>
|
||||||
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
|
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
|
||||||
{
|
{ queuef (functional::bind (mf, placeholders::_1, t1, t2, t3, t4)); }
|
||||||
queuef (bind (mf, _1, t1, t2, t3, t4));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 6
|
#if BEAST_VARIADIC_MAX >= 6
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5>
|
||||||
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
||||||
{
|
{ queuef (functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5)); }
|
||||||
queuef (bind (mf, _1, t1, t2, t3, t4, t5));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 7
|
#if BEAST_VARIADIC_MAX >= 7
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
|
||||||
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
||||||
{
|
{ queuef (functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6)); }
|
||||||
queuef (bind (mf, _1, t1, t2, t3, t4, t5, t6));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 8
|
#if BEAST_VARIADIC_MAX >= 8
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
||||||
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
||||||
{
|
{ queuef (functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6, t7)); }
|
||||||
queuef (bind (mf, _1, t1, t2, t3, t4, t5, t6, t7));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 9
|
#if BEAST_VARIADIC_MAX >= 9
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
||||||
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
void queue (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
||||||
{
|
{ queuef (functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6, t7, t8)); }
|
||||||
queuef (bind (mf, _1, t1, t2, t3, t4, t5, t6, t7, t8));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
@@ -644,73 +608,55 @@ public:
|
|||||||
#if BEAST_VARIADIC_MAX >= 1
|
#if BEAST_VARIADIC_MAX >= 1
|
||||||
template <class Mf>
|
template <class Mf>
|
||||||
inline void update (Mf mf)
|
inline void update (Mf mf)
|
||||||
{
|
{ updatef (mf, functional::bind (mf, placeholders::_1)); }
|
||||||
updatef (mf, bind (mf, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 2
|
#if BEAST_VARIADIC_MAX >= 2
|
||||||
template <class Mf, class T1>
|
template <class Mf, class T1>
|
||||||
void update (Mf mf, T1 t1)
|
void update (Mf mf, T1 t1)
|
||||||
{
|
{ updatef (mf, functional::bind (mf, placeholders::_1, t1)); }
|
||||||
updatef (mf, bind (mf, _1, t1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 3
|
#if BEAST_VARIADIC_MAX >= 3
|
||||||
template <class Mf, class T1, class T2>
|
template <class Mf, class T1, class T2>
|
||||||
void update (Mf mf, T1 t1, T2 t2)
|
void update (Mf mf, T1 t1, T2 t2)
|
||||||
{
|
{ updatef (mf, functional::bind (mf, placeholders::_1, t1, t2)); }
|
||||||
updatef (mf, bind (mf, _1, t1, t2));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 4
|
#if BEAST_VARIADIC_MAX >= 4
|
||||||
template <class Mf, class T1, class T2, class T3>
|
template <class Mf, class T1, class T2, class T3>
|
||||||
void update (Mf mf, T1 t1, T2 t2, T3 t3)
|
void update (Mf mf, T1 t1, T2 t2, T3 t3)
|
||||||
{
|
{ updatef (mf, functional::bind (mf, placeholders::_1, t1, t2, t3)); }
|
||||||
updatef (mf, bind (mf, _1, t1, t2, t3));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 5
|
#if BEAST_VARIADIC_MAX >= 5
|
||||||
template <class Mf, class T1, class T2, class T3, class T4>
|
template <class Mf, class T1, class T2, class T3, class T4>
|
||||||
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
|
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
|
||||||
{
|
{ updatef (mf, functional::bind (mf, placeholders::_1, t1, t2, t3, t4)); }
|
||||||
updatef (mf, bind (mf, _1, t1, t2, t3, t4));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 6
|
#if BEAST_VARIADIC_MAX >= 6
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5>
|
||||||
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
||||||
{
|
{ updatef (mf, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5)); }
|
||||||
updatef (mf, bind (mf, _1, t1, t2, t3, t4, t5));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 7
|
#if BEAST_VARIADIC_MAX >= 7
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
|
||||||
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
||||||
{
|
{ updatef (mf, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6)); }
|
||||||
updatef (mf, bind (mf, _1, t1, t2, t3, t4, t5, t6));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 8
|
#if BEAST_VARIADIC_MAX >= 8
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
||||||
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
||||||
{
|
{ updatef (mf, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6, t7)); }
|
||||||
updatef (mf, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 9
|
#if BEAST_VARIADIC_MAX >= 9
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
||||||
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
void update (Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
||||||
{
|
{ updatef (mf, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6, t7, t8)); }
|
||||||
updatef (mf, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7, t8));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
@@ -729,73 +675,55 @@ public:
|
|||||||
#if BEAST_VARIADIC_MAX >= 1
|
#if BEAST_VARIADIC_MAX >= 1
|
||||||
template <class Mf>
|
template <class Mf>
|
||||||
inline void call1 (ListenerClass* const listener, Mf mf)
|
inline void call1 (ListenerClass* const listener, Mf mf)
|
||||||
{
|
{ call1f (listener, functional::bind (mf, placeholders::_1)); }
|
||||||
call1f (listener, bind (mf, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 2
|
#if BEAST_VARIADIC_MAX >= 2
|
||||||
template <class Mf, class T1>
|
template <class Mf, class T1>
|
||||||
void call1 (ListenerClass* const listener, Mf mf, T1 t1)
|
void call1 (ListenerClass* const listener, Mf mf, T1 t1)
|
||||||
{
|
{ call1f (listener, functional::bind (mf, placeholders::_1, t1)); }
|
||||||
call1f (listener, bind (mf, _1, t1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 3
|
#if BEAST_VARIADIC_MAX >= 3
|
||||||
template <class Mf, class T1, class T2>
|
template <class Mf, class T1, class T2>
|
||||||
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2)
|
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2)
|
||||||
{
|
{ call1f (listener, functional::bind (mf, placeholders::_1, t1, t2)); }
|
||||||
call1f (listener, bind (mf, _1, t1, t2));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 4
|
#if BEAST_VARIADIC_MAX >= 4
|
||||||
template <class Mf, class T1, class T2, class T3>
|
template <class Mf, class T1, class T2, class T3>
|
||||||
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3)
|
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3)
|
||||||
{
|
{ call1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3)); }
|
||||||
call1f (listener, bind (mf, _1, t1, t2, t3));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 5
|
#if BEAST_VARIADIC_MAX >= 5
|
||||||
template <class Mf, class T1, class T2, class T3, class T4>
|
template <class Mf, class T1, class T2, class T3, class T4>
|
||||||
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
|
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
|
||||||
{
|
{ call1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3, t4)); }
|
||||||
call1f (listener, bind (mf, _1, t1, t2, t3, t4));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 6
|
#if BEAST_VARIADIC_MAX >= 6
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5>
|
||||||
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
||||||
{
|
{ call1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5)); }
|
||||||
call1f (listener, bind (mf, _1, t1, t2, t3, t4, t5));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 7
|
#if BEAST_VARIADIC_MAX >= 7
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
|
||||||
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
||||||
{
|
{ call1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6)); }
|
||||||
call1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 8
|
#if BEAST_VARIADIC_MAX >= 8
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
||||||
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
||||||
{
|
{ call1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6, t7)); }
|
||||||
call1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 9
|
#if BEAST_VARIADIC_MAX >= 9
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
||||||
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
void call1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
||||||
{
|
{ call1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6, t7, t8)); }
|
||||||
call1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7, t8));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
@@ -812,73 +740,55 @@ public:
|
|||||||
#if BEAST_VARIADIC_MAX >= 1
|
#if BEAST_VARIADIC_MAX >= 1
|
||||||
template <class Mf>
|
template <class Mf>
|
||||||
inline void queue1 (ListenerClass* const listener, Mf mf)
|
inline void queue1 (ListenerClass* const listener, Mf mf)
|
||||||
{
|
{ queue1f (listener, functional::bind (mf, placeholders::_1)); }
|
||||||
queue1f (listener, bind (mf, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 2
|
#if BEAST_VARIADIC_MAX >= 2
|
||||||
template <class Mf, class T1>
|
template <class Mf, class T1>
|
||||||
void queue1 (ListenerClass* const listener, Mf mf, T1 t1)
|
void queue1 (ListenerClass* const listener, Mf mf, T1 t1)
|
||||||
{
|
{ queue1f (listener, functional::bind (mf, placeholders::_1, t1)); }
|
||||||
queue1f (listener, bind (mf, _1, t1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 3
|
#if BEAST_VARIADIC_MAX >= 3
|
||||||
template <class Mf, class T1, class T2>
|
template <class Mf, class T1, class T2>
|
||||||
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2)
|
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2)
|
||||||
{
|
{ queue1f (listener, functional::bind (mf, placeholders::_1, t1, t2)); }
|
||||||
queue1f (listener, bind (mf, _1, t1, t2));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 4
|
#if BEAST_VARIADIC_MAX >= 4
|
||||||
template <class Mf, class T1, class T2, class T3>
|
template <class Mf, class T1, class T2, class T3>
|
||||||
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3)
|
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3)
|
||||||
{
|
{ queue1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3)); }
|
||||||
queue1f (listener, bind (mf, _1, t1, t2, t3));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 5
|
#if BEAST_VARIADIC_MAX >= 5
|
||||||
template <class Mf, class T1, class T2, class T3, class T4>
|
template <class Mf, class T1, class T2, class T3, class T4>
|
||||||
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
|
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4)
|
||||||
{
|
{ queue1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3, t4)); }
|
||||||
queue1f (listener, bind (mf, _1, t1, t2, t3, t4));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 6
|
#if BEAST_VARIADIC_MAX >= 6
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5>
|
||||||
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
||||||
{
|
{ queue1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5)); }
|
||||||
queue1f (listener, bind (mf, _1, t1, t2, t3, t4, t5));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 7
|
#if BEAST_VARIADIC_MAX >= 7
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6>
|
||||||
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
||||||
{
|
{ queue1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6)); }
|
||||||
queue1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 8
|
#if BEAST_VARIADIC_MAX >= 8
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
||||||
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
||||||
{
|
{ queue1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6, t7)); }
|
||||||
queue1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 9
|
#if BEAST_VARIADIC_MAX >= 9
|
||||||
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
template <class Mf, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
||||||
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
void queue1 (ListenerClass* const listener, Mf mf, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
||||||
{
|
{ queue1f (listener, functional::bind (mf, placeholders::_1, t1, t2, t3, t4, t5, t6, t7, t8)); }
|
||||||
queue1f (listener, bind (mf, _1, t1, t2, t3, t4, t5, t6, t7, t8));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -97,73 +97,55 @@ public:
|
|||||||
#if BEAST_VARIADIC_MAX >= 1
|
#if BEAST_VARIADIC_MAX >= 1
|
||||||
template <class Fn>
|
template <class Fn>
|
||||||
void loop (int n, Fn f)
|
void loop (int n, Fn f)
|
||||||
{
|
{ loopf (n, functional::bind (f, placeholders::_1)); }
|
||||||
loopf (n, bind (f, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 2
|
#if BEAST_VARIADIC_MAX >= 2
|
||||||
template <class Fn, class T1>
|
template <class Fn, class T1>
|
||||||
void loop (int n, Fn f, T1 t1)
|
void loop (int n, Fn f, T1 t1)
|
||||||
{
|
{ loopf (n, functional::bind (f, t1, placeholders::_1)); }
|
||||||
loopf (n, bind (f, t1, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 3
|
#if BEAST_VARIADIC_MAX >= 3
|
||||||
template <class Fn, class T1, class T2>
|
template <class Fn, class T1, class T2>
|
||||||
void loop (int n, Fn f, T1 t1, T2 t2)
|
void loop (int n, Fn f, T1 t1, T2 t2)
|
||||||
{
|
{ loopf (n, functional::bind (f, t1, t2, placeholders::_1)); }
|
||||||
loopf (n, bind (f, t1, t2, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 4
|
#if BEAST_VARIADIC_MAX >= 4
|
||||||
template <class Fn, class T1, class T2, class T3>
|
template <class Fn, class T1, class T2, class T3>
|
||||||
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3)
|
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3)
|
||||||
{
|
{ loopf (n, functional::bind (f, t1, t2, t3, placeholders::_1)); }
|
||||||
loopf (n, bind (f, t1, t2, t3, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 5
|
#if BEAST_VARIADIC_MAX >= 5
|
||||||
template <class Fn, class T1, class T2, class T3, class T4>
|
template <class Fn, class T1, class T2, class T3, class T4>
|
||||||
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4)
|
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4)
|
||||||
{
|
{ loopf (n, functional::bind (f, t1, t2, t3, t4, placeholders::_1)); }
|
||||||
loopf (n, bind (f, t1, t2, t3, t4, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 6
|
#if BEAST_VARIADIC_MAX >= 6
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5>
|
||||||
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
||||||
{
|
{ loopf (n, functional::bind (f, t1, t2, t3, t4, t5, placeholders::_1)); }
|
||||||
loopf (n, bind (f, t1, t2, t3, t4, t5, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 7
|
#if BEAST_VARIADIC_MAX >= 7
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6>
|
||||||
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
||||||
{
|
{ loopf (n, functional::bind (f, t1, t2, t3, t4, t5, t6, placeholders::_1)); }
|
||||||
loopf (n, bind (f, t1, t2, t3, t4, t5, t6, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 8
|
#if BEAST_VARIADIC_MAX >= 8
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
||||||
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
||||||
{
|
{ loopf (n, functional::bind (f, t1, t2, t3, t4, t5, t6, t7, placeholders::_1)); }
|
||||||
loopf (n, bind (f, t1, t2, t3, t4, t5, t6, t7, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 9
|
#if BEAST_VARIADIC_MAX >= 9
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
||||||
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
void loop (int n, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
||||||
{
|
{ loopf (n, functional::bind (f, t1, t2, t3, t4, t5, t6, t7, t8, placeholders::_1)); }
|
||||||
loopf (n, bind (f, t1, t2, t3, t4, t5, t6, t7, t8, _1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
@@ -272,220 +254,4 @@ private:
|
|||||||
int m_numberOfIterations;
|
int m_numberOfIterations;
|
||||||
};
|
};
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
class ParallelFor2 : Uncopyable
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/** Create a parallel for loop.
|
|
||||||
|
|
||||||
It is best to keep this object around instead of creating and destroying
|
|
||||||
it every time you need to run a loop.
|
|
||||||
|
|
||||||
@param pool The ThreadGroup to use. If this is omitted then a singleton
|
|
||||||
ThreadGroup is used which contains one thread per CPU.
|
|
||||||
*/
|
|
||||||
explicit ParallelFor2 (ThreadGroup& pool = *GlobalThreadGroup::getInstance ())
|
|
||||||
: m_pool (pool)
|
|
||||||
, m_finishedEvent (false) // auto-reset
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Determine the number of threads in the group.
|
|
||||||
|
|
||||||
@return The number of threads in the group.
|
|
||||||
*/
|
|
||||||
int getNumberOfThreads () const
|
|
||||||
{
|
|
||||||
return m_pool.getNumberOfThreads ();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class F, class T1, class T2, class T3, class T4>
|
|
||||||
void operator () (int numberOfIterations, T1 t1, T2 t2, T3 t3, T4 t4)
|
|
||||||
{
|
|
||||||
Factory4 <F, T1, T2, T3, T4> f (t1, t2, t3, t4);
|
|
||||||
doLoop (numberOfIterations, f);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef ThreadGroup::AllocatorType AllocatorType;
|
|
||||||
|
|
||||||
//---
|
|
||||||
|
|
||||||
struct Iterator : public AllocatedBy <AllocatorType>
|
|
||||||
{
|
|
||||||
virtual ~Iterator () { }
|
|
||||||
virtual void operator () (int loopIndex) = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
//---
|
|
||||||
|
|
||||||
template <class Functor>
|
|
||||||
struct IteratorType : public Iterator, Uncopyable
|
|
||||||
{
|
|
||||||
explicit IteratorType (Functor f) : m_f (f)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator () (int loopIndex)
|
|
||||||
{
|
|
||||||
m_f (loopIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
Functor m_f;
|
|
||||||
};
|
|
||||||
|
|
||||||
//---
|
|
||||||
|
|
||||||
struct Factory
|
|
||||||
{
|
|
||||||
virtual ~Factory () { }
|
|
||||||
virtual Iterator* operator () (AllocatorType& allocator) = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class F, class T1, class T2, class T3, class T4>
|
|
||||||
struct Factory4 : Factory
|
|
||||||
{
|
|
||||||
Factory4 (T1 t1, T2 t2, T3 t3, T4 t4)
|
|
||||||
: m_t1 (t1), m_t2 (t2), m_t3 (t3), m_t4 (t4) { }
|
|
||||||
|
|
||||||
Iterator* operator () (AllocatorType& allocator)
|
|
||||||
{
|
|
||||||
return new (allocator) IteratorType <F> (m_t1, m_t2, m_t3, m_t4);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
T1 m_t1;
|
|
||||||
T2 m_t2;
|
|
||||||
T3 m_t3;
|
|
||||||
T4 m_t4;
|
|
||||||
};
|
|
||||||
|
|
||||||
private:
|
|
||||||
class LoopState
|
|
||||||
: public AllocatedBy <AllocatorType>
|
|
||||||
, Uncopyable
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
Factory& m_factory;
|
|
||||||
WaitableEvent& m_finishedEvent;
|
|
||||||
int const m_numberOfIterations;
|
|
||||||
Atomic <int> m_loopIndex;
|
|
||||||
Atomic <int> m_iterationsRemaining;
|
|
||||||
Atomic <int> m_numberOfParallelInstances;
|
|
||||||
AllocatorType& m_allocator;
|
|
||||||
|
|
||||||
public:
|
|
||||||
LoopState (Factory& factory,
|
|
||||||
WaitableEvent& finishedEvent,
|
|
||||||
int numberOfIterations,
|
|
||||||
int numberOfParallelInstances,
|
|
||||||
AllocatorType& allocator)
|
|
||||||
: m_factory (factory)
|
|
||||||
, m_finishedEvent (finishedEvent)
|
|
||||||
, m_numberOfIterations (numberOfIterations)
|
|
||||||
, m_loopIndex (-1)
|
|
||||||
, m_iterationsRemaining (numberOfIterations)
|
|
||||||
, m_numberOfParallelInstances (numberOfParallelInstances)
|
|
||||||
, m_allocator (allocator)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
~LoopState ()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void forLoopBody ()
|
|
||||||
{
|
|
||||||
Iterator* iterator = m_factory (m_allocator);
|
|
||||||
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
// Request a loop index to process.
|
|
||||||
int const loopIndex = ++m_loopIndex;
|
|
||||||
|
|
||||||
// Is it in range?
|
|
||||||
if (loopIndex < m_numberOfIterations)
|
|
||||||
{
|
|
||||||
// Yes, so process it.
|
|
||||||
(*iterator) (loopIndex);
|
|
||||||
|
|
||||||
// Was this the last work item to complete?
|
|
||||||
if (--m_iterationsRemaining == 0)
|
|
||||||
{
|
|
||||||
// Yes, signal.
|
|
||||||
m_finishedEvent.signal ();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Out of range, all work is complete or assigned.
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
release ();
|
|
||||||
|
|
||||||
delete iterator;
|
|
||||||
}
|
|
||||||
|
|
||||||
void release ()
|
|
||||||
{
|
|
||||||
if (--m_numberOfParallelInstances == 0)
|
|
||||||
delete this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private:
|
|
||||||
void doLoop (int numberOfIterations, Factory& factory)
|
|
||||||
{
|
|
||||||
if (numberOfIterations > 1)
|
|
||||||
{
|
|
||||||
int const numberOfThreads = m_pool.getNumberOfThreads ();
|
|
||||||
|
|
||||||
// The largest number of pool threads we need is one less than the number
|
|
||||||
// of iterations, because we also run the loop body on the caller's thread.
|
|
||||||
//
|
|
||||||
int const maxThreads = numberOfIterations - 1;
|
|
||||||
|
|
||||||
// Calculate the number of parallel instances as the smaller of the number
|
|
||||||
// of threads available (including the caller's) and the number of iterations.
|
|
||||||
//
|
|
||||||
int const numberOfParallelInstances = std::min (
|
|
||||||
numberOfThreads + 1, numberOfIterations);
|
|
||||||
|
|
||||||
LoopState* loopState (new (m_pool.getAllocator ()) LoopState (
|
|
||||||
factory,
|
|
||||||
m_finishedEvent,
|
|
||||||
numberOfIterations,
|
|
||||||
numberOfParallelInstances,
|
|
||||||
m_pool.getAllocator ()));
|
|
||||||
|
|
||||||
m_pool.call (maxThreads, &LoopState::forLoopBody, loopState);
|
|
||||||
|
|
||||||
// Also use the caller's thread to run the loop body.
|
|
||||||
loopState->forLoopBody ();
|
|
||||||
|
|
||||||
m_finishedEvent.wait ();
|
|
||||||
}
|
|
||||||
else if (numberOfIterations == 1)
|
|
||||||
{
|
|
||||||
// Just one iteration, so do it.
|
|
||||||
Iterator* iter = factory (m_pool.getAllocator ());
|
|
||||||
(*iter) (0);
|
|
||||||
delete iter;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
ThreadGroup& m_pool;
|
|
||||||
WaitableEvent m_finishedEvent;
|
|
||||||
Atomic <int> m_currentIndex;
|
|
||||||
Atomic <int> m_numberOfInstances;
|
|
||||||
int m_numberOfIterations;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -86,73 +86,55 @@ public:
|
|||||||
#if BEAST_VARIADIC_MAX >= 1
|
#if BEAST_VARIADIC_MAX >= 1
|
||||||
template <class Fn>
|
template <class Fn>
|
||||||
void call (int maxThreads, Fn f)
|
void call (int maxThreads, Fn f)
|
||||||
{
|
{ callf (maxThreads, functional::bind (f)); }
|
||||||
callf (maxThreads, bind (f));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 2
|
#if BEAST_VARIADIC_MAX >= 2
|
||||||
template <class Fn, class T1>
|
template <class Fn, class T1>
|
||||||
void call (int maxThreads, Fn f, T1 t1)
|
void call (int maxThreads, Fn f, T1 t1)
|
||||||
{
|
{ callf (maxThreads, functional::bind (f, t1)); }
|
||||||
callf (maxThreads, bind (f, t1));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 3
|
#if BEAST_VARIADIC_MAX >= 3
|
||||||
template <class Fn, class T1, class T2>
|
template <class Fn, class T1, class T2>
|
||||||
void call (int maxThreads, Fn f, T1 t1, T2 t2)
|
void call (int maxThreads, Fn f, T1 t1, T2 t2)
|
||||||
{
|
{ callf (maxThreads, functional::bind (f, t1, t2)); }
|
||||||
callf (maxThreads, bind (f, t1, t2));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 4
|
#if BEAST_VARIADIC_MAX >= 4
|
||||||
template <class Fn, class T1, class T2, class T3>
|
template <class Fn, class T1, class T2, class T3>
|
||||||
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3)
|
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3)
|
||||||
{
|
{ callf (maxThreads, functional::bind (f, t1, t2, t3)); }
|
||||||
callf (maxThreads, bind (f, t1, t2, t3));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 5
|
#if BEAST_VARIADIC_MAX >= 5
|
||||||
template <class Fn, class T1, class T2, class T3, class T4>
|
template <class Fn, class T1, class T2, class T3, class T4>
|
||||||
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3, T4 t4)
|
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3, T4 t4)
|
||||||
{
|
{ callf (maxThreads, functional::bind (f, t1, t2, t3, t4)); }
|
||||||
callf (maxThreads, bind (f, t1, t2, t3, t4));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 6
|
#if BEAST_VARIADIC_MAX >= 6
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5>
|
||||||
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
||||||
{
|
{ callf (maxThreads, functional::bind (f, t1, t2, t3, t4, t5)); }
|
||||||
callf (maxThreads, bind (f, t1, t2, t3, t4, t5));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 7
|
#if BEAST_VARIADIC_MAX >= 7
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6>
|
||||||
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
||||||
{
|
{ callf (maxThreads, functional::bind (f, t1, t2, t3, t4, t5, t6)); }
|
||||||
callf (maxThreads, bind (f, t1, t2, t3, t4, t5, t6));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 8
|
#if BEAST_VARIADIC_MAX >= 8
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
||||||
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
||||||
{
|
{ callf (maxThreads, functional::bind (f, t1, t2, t3, t4, t5, t6, t7)); }
|
||||||
callf (maxThreads, bind (f, t1, t2, t3, t4, t5, t6, t7));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BEAST_VARIADIC_MAX >= 9
|
#if BEAST_VARIADIC_MAX >= 9
|
||||||
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
||||||
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
void call (int maxThreads, Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
||||||
{
|
{ callf (maxThreads, functional::bind (f, t1, t2, t3, t4, t5, t6, t7, t8)); }
|
||||||
callf (maxThreads, bind (f, t1, t2, t3, t4, t5, t6, t7, t8));
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ namespace beast
|
|||||||
#include "diagnostic/beast_Error.cpp"
|
#include "diagnostic/beast_Error.cpp"
|
||||||
#include "diagnostic/beast_FPUFlags.cpp"
|
#include "diagnostic/beast_FPUFlags.cpp"
|
||||||
#include "diagnostic/beast_LeakChecked.cpp"
|
#include "diagnostic/beast_LeakChecked.cpp"
|
||||||
|
#include "diagnostic/beast_ProtectedCall.cpp"
|
||||||
#include "diagnostic/beast_UnitTest.cpp"
|
#include "diagnostic/beast_UnitTest.cpp"
|
||||||
#include "diagnostic/beast_UnitTestUtilities.cpp"
|
#include "diagnostic/beast_UnitTestUtilities.cpp"
|
||||||
|
|
||||||
@@ -171,6 +172,7 @@ namespace beast
|
|||||||
|
|
||||||
#include "memory/beast_MemoryBlock.cpp"
|
#include "memory/beast_MemoryBlock.cpp"
|
||||||
|
|
||||||
|
#include "misc/beast_Main.cpp"
|
||||||
#include "misc/beast_Result.cpp"
|
#include "misc/beast_Result.cpp"
|
||||||
#include "misc/beast_Uuid.cpp"
|
#include "misc/beast_Uuid.cpp"
|
||||||
|
|
||||||
|
|||||||
@@ -194,10 +194,12 @@ namespace beast
|
|||||||
// Order matters, since headers don't have their own #include lines.
|
// Order matters, since headers don't have their own #include lines.
|
||||||
// Add new includes to the bottom.
|
// Add new includes to the bottom.
|
||||||
|
|
||||||
|
#include "memory/beast_Uncopyable.h"
|
||||||
|
|
||||||
#include "system/beast_PlatformDefs.h"
|
#include "system/beast_PlatformDefs.h"
|
||||||
#include "system/beast_TargetPlatform.h"
|
#include "system/beast_TargetPlatform.h"
|
||||||
|
#include "system/beast_Functional.h"
|
||||||
|
|
||||||
#include "memory/beast_Uncopyable.h"
|
|
||||||
#include "maths/beast_MathsFunctions.h"
|
#include "maths/beast_MathsFunctions.h"
|
||||||
#include "memory/beast_Atomic.h"
|
#include "memory/beast_Atomic.h"
|
||||||
#include "memory/beast_AtomicCounter.h"
|
#include "memory/beast_AtomicCounter.h"
|
||||||
@@ -226,6 +228,7 @@ namespace beast
|
|||||||
#include "diagnostic/beast_Error.h"
|
#include "diagnostic/beast_Error.h"
|
||||||
#include "diagnostic/beast_FPUFlags.h"
|
#include "diagnostic/beast_FPUFlags.h"
|
||||||
#include "diagnostic/beast_Throw.h"
|
#include "diagnostic/beast_Throw.h"
|
||||||
|
#include "diagnostic/beast_ProtectedCall.h"
|
||||||
#include "containers/beast_AbstractFifo.h"
|
#include "containers/beast_AbstractFifo.h"
|
||||||
#include "containers/beast_Array.h"
|
#include "containers/beast_Array.h"
|
||||||
#include "containers/beast_ArrayAllocationBase.h"
|
#include "containers/beast_ArrayAllocationBase.h"
|
||||||
@@ -276,6 +279,7 @@ namespace beast
|
|||||||
#include "memory/beast_MemoryAlignment.h"
|
#include "memory/beast_MemoryAlignment.h"
|
||||||
#include "memory/beast_CacheLine.h"
|
#include "memory/beast_CacheLine.h"
|
||||||
#include "memory/beast_RecycledObjectPool.h"
|
#include "memory/beast_RecycledObjectPool.h"
|
||||||
|
#include "misc/beast_Main.h"
|
||||||
#include "misc/beast_Result.h"
|
#include "misc/beast_Result.h"
|
||||||
#include "misc/beast_Uuid.h"
|
#include "misc/beast_Uuid.h"
|
||||||
#include "misc/beast_WindowsRegistry.h"
|
#include "misc/beast_WindowsRegistry.h"
|
||||||
@@ -292,7 +296,7 @@ namespace beast
|
|||||||
#include "streams/beast_MemoryOutputStream.h"
|
#include "streams/beast_MemoryOutputStream.h"
|
||||||
#include "streams/beast_OutputStream.h"
|
#include "streams/beast_OutputStream.h"
|
||||||
#include "streams/beast_SubregionStream.h"
|
#include "streams/beast_SubregionStream.h"
|
||||||
#include "system/beast_Functional.h"
|
|
||||||
#include "system/beast_SystemStats.h"
|
#include "system/beast_SystemStats.h"
|
||||||
#include "text/beast_Identifier.h"
|
#include "text/beast_Identifier.h"
|
||||||
#include "text/beast_LocalisedStrings.h"
|
#include "text/beast_LocalisedStrings.h"
|
||||||
|
|||||||
@@ -205,11 +205,11 @@ END_BEAST_NAMESPACE
|
|||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if 0
|
||||||
bool CatchAny (Function <void (void)> f, bool returnFromException)
|
bool CatchAny (Function <void (void)> f, bool returnFromException)
|
||||||
{
|
{
|
||||||
bool caughtException = true; // assume the worst
|
bool caughtException = true; // assume the worst
|
||||||
|
|
||||||
#if 0
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//ScopedPlatformExceptionCatcher platformExceptionCatcher;
|
//ScopedPlatformExceptionCatcher platformExceptionCatcher;
|
||||||
@@ -271,6 +271,41 @@ bool CatchAny (Function <void (void)> f, bool returnFromException)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return caughtException;
|
return caughtException;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void ProtectedCall::DefaultHandler::onException (ProtectedCall::Exception const& e) const
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Static::Storage <Atomic <ProtectedCall::Handler const*>, ProtectedCall>
|
||||||
|
ProtectedCall::s_handler;
|
||||||
|
|
||||||
|
void ProtectedCall::setHandler (Handler const& handler)
|
||||||
|
{
|
||||||
|
s_handler->set (&handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProtectedCall::call (Call& call)
|
||||||
|
{
|
||||||
|
static DefaultHandler const defaultHandler;
|
||||||
|
|
||||||
|
Handler const* handler = s_handler->get ();
|
||||||
|
|
||||||
|
if (handler == nullptr)
|
||||||
|
handler = &defaultHandler;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
call ();
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
Exception e;
|
||||||
|
|
||||||
|
handler->onException (e);
|
||||||
|
}
|
||||||
|
}
|
||||||
163
modules/beast_core/diagnostic/beast_ProtectedCall.h
Normal file
163
modules/beast_core/diagnostic/beast_ProtectedCall.h
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
This file is part of Beast: https://github.com/vinniefalco/Beast
|
||||||
|
Copyright 2013, Vinnie Falco <vinnie.falco@gmail.com>
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
#ifndef BEAST_P_H_INCLUDED
|
||||||
|
#define BEAST_PROTECTEDCALL_H_INCLUDED
|
||||||
|
|
||||||
|
/** Call a function in a protected exception context.
|
||||||
|
|
||||||
|
This is for intercepting unhandled exceptions, reporting on the extended
|
||||||
|
information provided by @ref Throw, and calling a customizable unhandled
|
||||||
|
exception callback. Some implementations will also catch native exceptions
|
||||||
|
such as memory violations or segmentation faults.
|
||||||
|
|
||||||
|
An unhandled exception should terminate the process with a non zero
|
||||||
|
return code.
|
||||||
|
|
||||||
|
To use this, construct an instance with your funtion and arguments as
|
||||||
|
parameters. For example:
|
||||||
|
|
||||||
|
@code
|
||||||
|
|
||||||
|
extern void funcThatMightThrow (int numberOfTimes);
|
||||||
|
|
||||||
|
ProtectedCall (&funcThatMightThrow, 3);
|
||||||
|
|
||||||
|
@endcode
|
||||||
|
*/
|
||||||
|
class ProtectedCall
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
struct Exception
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
/** This receives the unhandled exception. */
|
||||||
|
struct Handler
|
||||||
|
{
|
||||||
|
/** Called when an uhandled exception is thrown.
|
||||||
|
|
||||||
|
@note This can be called from multiple threads, which is
|
||||||
|
why it is const.
|
||||||
|
*/
|
||||||
|
virtual void onException (Exception const& e) const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** The default handler writes to std::cerr makes the process exit. */
|
||||||
|
class DefaultHandler : public Handler
|
||||||
|
{
|
||||||
|
void onException (Exception const& e) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void setHandler (Handler const& handler);
|
||||||
|
|
||||||
|
public:
|
||||||
|
#if BEAST_VARIADIC_MAX >= 1
|
||||||
|
template <class Fn>
|
||||||
|
explicit ProtectedCall (Fn f)
|
||||||
|
{ callf (functional::bind (f)); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_VARIADIC_MAX >= 2
|
||||||
|
template <class Fn, class T1>
|
||||||
|
ProtectedCall (Fn f, T1 t1)
|
||||||
|
{ callf (functional::bind (f, t1)); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_VARIADIC_MAX >= 3
|
||||||
|
template <class Fn, class T1, class T2>
|
||||||
|
ProtectedCall (Fn f, T1 t1, T2 t2)
|
||||||
|
{ callf (functional::bind (f, t1, t2)); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_VARIADIC_MAX >= 4
|
||||||
|
template <class Fn, class T1, class T2, class T3>
|
||||||
|
ProtectedCall (Fn f, T1 t1, T2 t2, T3 t3)
|
||||||
|
{ callf (functional::bind (f, t1, t2, t3)); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_VARIADIC_MAX >= 5
|
||||||
|
template <class Fn, class T1, class T2, class T3, class T4>
|
||||||
|
ProtectedCall (Fn f, T1 t1, T2 t2, T3 t3, T4 t4)
|
||||||
|
{ callf (functional::bind (f, t1, t2, t3, t4)); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_VARIADIC_MAX >= 6
|
||||||
|
template <class Fn, class T1, class T2, class T3, class T4, class T5>
|
||||||
|
ProtectedCall (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
|
||||||
|
{ callf (functional::bind (f, t1, t2, t3, t4, t5)); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_VARIADIC_MAX >= 7
|
||||||
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6>
|
||||||
|
ProtectedCall (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
|
||||||
|
{ callf (functional::bind (f, t1, t2, t3, t4, t5, t6)); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_VARIADIC_MAX >= 8
|
||||||
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
|
||||||
|
ProtectedCall (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
|
||||||
|
{ callf (functional::bind (f, t1, t2, t3, t4, t5, t6, t7)); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_VARIADIC_MAX >= 9
|
||||||
|
template <class Fn, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
|
||||||
|
ProtectedCall (Fn f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
|
||||||
|
{ callf (functional::bind (f, t1, t2, t3, t4, t5, t6, t7, t8)); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private:
|
||||||
|
struct Call
|
||||||
|
{
|
||||||
|
virtual void operator() () = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class Functor>
|
||||||
|
struct CallType : public Call
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit CallType (Functor f)
|
||||||
|
: m_f (f)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator() ()
|
||||||
|
{
|
||||||
|
m_f ();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Functor m_f;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class Functor>
|
||||||
|
void callf (Functor f)
|
||||||
|
{
|
||||||
|
CallType <Functor> wrapper (f);
|
||||||
|
|
||||||
|
call (wrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
void call (Call& call);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static Static::Storage <Atomic <Handler const*>, ProtectedCall> s_handler;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -21,8 +21,8 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#ifndef BEAST_UNITTEST_BEASTHEADER
|
#ifndef BEAST_UNITTEST_H_INCLUDED
|
||||||
#define BEAST_UNITTEST_BEASTHEADER
|
#define BEAST_UNITTEST_H_INCLUDED
|
||||||
|
|
||||||
class UnitTests;
|
class UnitTests;
|
||||||
|
|
||||||
@@ -32,17 +32,6 @@ class UnitTests;
|
|||||||
|
|
||||||
@code
|
@code
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FIX THE EXAMPLE FOR THE NEW API!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class MyTest : public UnitTest
|
class MyTest : public UnitTest
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#ifndef BEAST_UNCOPYABLE_BEASTHEADER
|
#ifndef BEAST_UNCOPYABLE_H_INCLUDED
|
||||||
#define BEAST_UNCOPYABLE_BEASTHEADER
|
#define BEAST_UNCOPYABLE_H_INCLUDED
|
||||||
|
|
||||||
/** Prevent copy construction and assignment.
|
/** Prevent copy construction and assignment.
|
||||||
|
|
||||||
|
|||||||
24
modules/beast_core/misc/beast_Main.cpp
Normal file
24
modules/beast_core/misc/beast_Main.cpp
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
This file is part of Beast: https://github.com/vinniefalco/Beast
|
||||||
|
Copyright 2013, Vinnie Falco <vinnie.falco@gmail.com>
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
Main::Main (int argc, char const* const* argv)
|
||||||
|
: m_argc (argc)
|
||||||
|
, m_argv (argv)
|
||||||
|
{
|
||||||
|
}
|
||||||
40
modules/beast_core/misc/beast_Main.h
Normal file
40
modules/beast_core/misc/beast_Main.h
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
This file is part of Beast: https://github.com/vinniefalco/Beast
|
||||||
|
Copyright 2013, Vinnie Falco <vinnie.falco@gmail.com>
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
#ifndef BEAST_MAIN_H_INCLUDED
|
||||||
|
#define BEAST_MAIN_H_INCLUDED
|
||||||
|
|
||||||
|
/** Represents a command line program's entry point.
|
||||||
|
*/
|
||||||
|
class BEAST_API Main : Uncopyable
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Main (int argc, char const* const* argv);
|
||||||
|
|
||||||
|
int getExitCode () const;
|
||||||
|
|
||||||
|
static Main& getInstance ();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int const m_argc;
|
||||||
|
char const* const* const m_argv;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -55,11 +55,21 @@
|
|||||||
|
|
||||||
#if BEAST_BIND_USES_STD
|
#if BEAST_BIND_USES_STD
|
||||||
|
|
||||||
|
namespace functional
|
||||||
|
{
|
||||||
|
|
||||||
using std::ref;
|
using std::ref;
|
||||||
using std::cref;
|
using std::cref;
|
||||||
using std::bind;
|
using std::bind;
|
||||||
using std::function;
|
using std::function;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace functional;
|
||||||
|
|
||||||
|
namespace placeholders
|
||||||
|
{
|
||||||
|
|
||||||
#if BEAST_BIND_PLACEHOLDERS_N >= 1
|
#if BEAST_BIND_PLACEHOLDERS_N >= 1
|
||||||
using std::placeholders::_1;
|
using std::placeholders::_1;
|
||||||
#endif
|
#endif
|
||||||
@@ -140,15 +150,29 @@ using std::placeholders::_19;
|
|||||||
using std::placeholders::_20;
|
using std::placeholders::_20;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace placeholders;
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
#elif BEAST_BIND_USES_TR1
|
#elif BEAST_BIND_USES_TR1
|
||||||
|
|
||||||
|
namespace functional
|
||||||
|
{
|
||||||
|
|
||||||
using std::tr1::ref;
|
using std::tr1::ref;
|
||||||
using std::tr1::cref;
|
using std::tr1::cref;
|
||||||
using std::tr1::bind;
|
using std::tr1::bind;
|
||||||
using std::tr1::function;
|
using std::tr1::function;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace functional;
|
||||||
|
|
||||||
|
namespace placeholders
|
||||||
|
{
|
||||||
|
|
||||||
#if BEAST_BIND_PLACEHOLDERS_N >= 1
|
#if BEAST_BIND_PLACEHOLDERS_N >= 1
|
||||||
using std::tr1::placeholders::_1;
|
using std::tr1::placeholders::_1;
|
||||||
#endif
|
#endif
|
||||||
@@ -229,15 +253,29 @@ using std::tr1::placeholders::_19;
|
|||||||
using std::tr1::placeholders::_20;
|
using std::tr1::placeholders::_20;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace placeholders;
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
#elif BEAST_BIND_USES_BOOST
|
#elif BEAST_BIND_USES_BOOST
|
||||||
|
|
||||||
|
namespace functional
|
||||||
|
{
|
||||||
|
|
||||||
using boost::ref;
|
using boost::ref;
|
||||||
using boost::cref;
|
using boost::cref;
|
||||||
using boost::bind;
|
using boost::bind;
|
||||||
using boost::function;
|
using boost::function;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace functional;
|
||||||
|
|
||||||
|
namespace placeholders
|
||||||
|
{
|
||||||
|
|
||||||
#if BEAST_BIND_PLACEHOLDERS_N >= 1
|
#if BEAST_BIND_PLACEHOLDERS_N >= 1
|
||||||
using boost::placeholders::_1;
|
using boost::placeholders::_1;
|
||||||
#endif
|
#endif
|
||||||
@@ -318,6 +356,10 @@ using boost::placeholders::_19;
|
|||||||
using boost::placeholders::_20;
|
using boost::placeholders::_20;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace placeholders;
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -24,8 +24,6 @@
|
|||||||
#ifndef BEAST_SYSTEMSTATS_BEASTHEADER
|
#ifndef BEAST_SYSTEMSTATS_BEASTHEADER
|
||||||
#define BEAST_SYSTEMSTATS_BEASTHEADER
|
#define BEAST_SYSTEMSTATS_BEASTHEADER
|
||||||
|
|
||||||
#include "../text/beast_StringArray.h"
|
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/**
|
/**
|
||||||
Contains methods for finding out about the current hardware and OS configuration.
|
Contains methods for finding out about the current hardware and OS configuration.
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ void Thread::threadEntryPoint()
|
|||||||
// used to wrap the incoming call from the platform-specific code
|
// used to wrap the incoming call from the platform-specific code
|
||||||
void BEAST_API beast_threadEntryPoint (void* userData)
|
void BEAST_API beast_threadEntryPoint (void* userData)
|
||||||
{
|
{
|
||||||
static_cast <Thread*> (userData)->threadEntryPoint();
|
ProtectedCall (&Thread::threadEntryPoint, static_cast <Thread*> (userData));
|
||||||
}
|
}
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user