|
|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
topic "Callbacks";
|
|
|
|
|
[2 $$0,0#00000000000000000000000000000000:Default]
|
|
|
|
|
[i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class]
|
|
|
|
|
[l288;2 $$2,0#27521748481378242620020725143825:desc]
|
|
|
|
|
[l288;2 $$2,2#27521748481378242620020725143825:desc]
|
|
|
|
|
[0 $$3,0#96390100711032703541132217272105:end]
|
|
|
|
|
[H6;0 $$4,0#05600065144404261032431302351956:begin]
|
|
|
|
|
[i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:item]
|
|
|
|
|
@ -10,20 +10,18 @@ topic "Callbacks";
|
|
|
|
|
[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam]
|
|
|
|
|
[b42;2 $$9,9#13035079074754324216151401829390:normal]
|
|
|
|
|
[{_}%EN-US
|
|
|
|
|
[s0; [4 Callbacks]&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0; Callbacks can be described as a very generalized form of function
|
|
|
|
|
[ {{10000@(113.42.0) [s0; [*@7;4 Callbacks]]}}&]
|
|
|
|
|
[s9; Callbacks can be described as a very generalized form of function
|
|
|
|
|
pointers. Each Callback represents some kind of action (usually
|
|
|
|
|
calling a certain function or a certain object method) that can
|
|
|
|
|
be invoked at any time.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0; There are several basic callback types, depending on number
|
|
|
|
|
[s9; There are several basic callback types, depending on number
|
|
|
|
|
of parameters passed and return value. In order to keep description
|
|
|
|
|
of callbacks short, all these types are described in a single
|
|
|
|
|
`"parametrized`" description, with parameters [*/@(128.0.255) highlighted].&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0; Callback types&]
|
|
|
|
|
[s2; &]
|
|
|
|
|
[s0; Callback types:&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[ {{1514:5185:1933:1368h1;t/17b/17@(204) [s0;%- [*/@(128.0.255)1 CallbackType]]
|
|
|
|
|
:: [s0;%- [*/@(128.0.255)1 parameters]]
|
|
|
|
|
:: [s0;%- [*/@(128.0.255)1 arguments]]
|
|
|
|
|
@ -64,7 +62,7 @@ of callbacks short, all these types are described in a single
|
|
|
|
|
:: [s0; [*/C+75 class P1, class P2, class P3]]
|
|
|
|
|
:: [s0; [*/C+75 P1, P2, P3]]
|
|
|
|
|
:: [s0; [*/C+75 bool]]}}&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0; `[ template_<[*/@(128.0.255) parameters]> `]&]
|
|
|
|
|
[s0; [%- class_][*/@(128.0.255) CallbackType]&]
|
|
|
|
|
@ -78,69 +76,87 @@ rguments>]_`*[*@3 newaction])&]
|
|
|
|
|
[s2; Constructs callback based from new action.&]
|
|
|
|
|
[s7; [%-*C@3 newaction]-|Action. Must be created using [* new] operator.
|
|
|
|
|
Callback takes over its ownership.&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0;:`:`:Callback1`:`:Callback1`(`):%- [%%*/@(128.0.255) CallbackType]()&]
|
|
|
|
|
[s2; Creates an empty callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;%- [%%*/@(128.0.255) CallbackType](const_[%%*/@(128.0.255) CallbackType]`&_[*@3 c])&]
|
|
|
|
|
[s2; Copy constructor. &]
|
|
|
|
|
[s7; [%-*C@3 c]-|Source callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:Callback1`:`:`~Callback1`(`):%- `~[%%*/@(128.0.255) CallbackType]()&]
|
|
|
|
|
[s2; Destructor.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:Callback1`:`:Clear`(`):%- void_[* Clear]()&]
|
|
|
|
|
[s2; Empties the callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:Gate`:`:ClearTrue`(`):%- void_[* ClearTrue]()&]
|
|
|
|
|
[s0; Only in Gate callbacks.&]
|
|
|
|
|
[s6; Only in Gate callbacks.&]
|
|
|
|
|
[s2; Clears Gate. After this method is invoked, the Gate performs
|
|
|
|
|
no actions but returns true.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:Gate`:`:ClearFalse`(`):%- void_[* ClearFalse]()&]
|
|
|
|
|
[s0; Only in Gate callbacks.&]
|
|
|
|
|
[s6; Only in Gate callbacks.&]
|
|
|
|
|
[s2; Clears Gate. After this method is invoked, the Gate performs
|
|
|
|
|
no actions and returns false. This is the same as Clear.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:Callback1`:`:operator bool`(`)const:%- [* operator_bool]()_const&]
|
|
|
|
|
[s7; [*/ Return value]-|True if the callback is valid. Invoking a valid
|
|
|
|
|
callback invokes an action.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:Callback1`:`:Execute`(P1`)const:%- [*/@(128.0.255) return`_type]_[* Execute]([%%*/@(128.0.255) a
|
|
|
|
|
rguments])_const&]
|
|
|
|
|
[s2; Executes the callback with given set of arguments.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:Callback1`:`:operator`(`)`(P1`)const:%- [%%*/@(128.0.255) return`_type]_[* opera
|
|
|
|
|
tor()]([%%*/@(128.0.255) arguments])_const&]
|
|
|
|
|
[s2; Same as the Execute method.&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0;:`:`:Callback1`:`:Empty`(`):*/@(128.0.255) &]
|
|
|
|
|
[s0;%- `[ template_<[*/@(128.0.255) parameters]> `]&]
|
|
|
|
|
[s0;%- struct_[*/@(128.0.255) CallbackType][* Action]&]
|
|
|
|
|
[s2; This is the abstract base class for callback action implementations.
|
|
|
|
|
Callback holds reference counted pointer to instance of class
|
|
|
|
|
derived from this class.&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0;:`:`:Callback4Action`:`:Callback4Action`(`):%- [*/@(128.0.255) CallbackType][* Action
|
|
|
|
|
]()&]
|
|
|
|
|
[s2; Constructor. Assigns 1 to the reference count.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:Callback4Action`:`:`~Callback4Action`(`):%- `~[*/@(128.0.255) CallbackType][* Ac
|
|
|
|
|
tion]()&]
|
|
|
|
|
[s2; Virtual destructor.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:Callback4Action`:`:Execute`(P1`,P2`,P3`,P4`):%- virtual
|
|
|
|
|
[%%*/@(128.0.255) return`_type]_[* Execute]([*/@(128.0.255) arguments])_`=_[@3 0]&]
|
|
|
|
|
[s2; Performs the action with specified set of arguments.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;%- virtual bool_[* IsValid]()_const&]
|
|
|
|
|
[s7; [*/ Return value]-|true if the Action is valid. Default implementation
|
|
|
|
|
returns true.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;%- Atomic_[* count]&]
|
|
|
|
|
[s2; Member variable used as reference count.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0; Common functions creating callbacks&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0;%- &]
|
|
|
|
|
[s0;%- &]
|
|
|
|
|
[s0;%- &]
|
|
|
|
|
[ {{10000@(113.42.0) [s0; [*@7;4 Common functions creating callbacks]]}}&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0;:`:`:callback`(OBJECT`*`,void`(METHOD`:`:`*`)`(P1 p1`)`): template_<class
|
|
|
|
|
[*@4 OBJECT], class [*@4 METHOD][*@(128.0.255) ,][*@4 ][*/@(128.0.255) parameters]>&]
|
|
|
|
|
[s0;%- [*/@(128.0.255) CallbackType]<[*/@(128.0.255) arguments]> [* callback]([*@4 OBJECT]_`*
|
|
|
|
|
@ -150,7 +166,8 @@ specified object.&]
|
|
|
|
|
[s7; [%-*C@3 object]-|Pointer to the object.&]
|
|
|
|
|
[s7; [%-*C@3 method]-|Pointer to the method.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:callback`(OBJECT`*`,void`(METHOD`:`:`*`)`(P1 p1`)`): template_<class
|
|
|
|
|
[*@4 OBJECT], class [*@4 METHOD][*@(128.0.255) ,][*@4 ][*/@(128.0.255) parameters]>&]
|
|
|
|
|
[s0;%- [*/@(128.0.255) CallbackType]<[*/@(128.0.255) arguments]> [* callback](const
|
|
|
|
|
@ -161,7 +178,8 @@ a constant method of the object.&]
|
|
|
|
|
[s7; [%-*C@3 object]-|Pointer to the object.&]
|
|
|
|
|
[s7; [%-*C@3 method]-|Pointer to the constant method to invoke.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:pteback`(OBJECT`*`,void`(METHOD`:`:`*`)`(P1 p1`)`): `[ template_<[*/@(128.0.255) p
|
|
|
|
|
arameters]> `]&]
|
|
|
|
|
[s0;%- [*/@(128.0.255) CallbackType][%% <][%%*/@(128.0.255) arguments][%% >
|
|
|
|
|
@ -175,7 +193,8 @@ the [^topic`:`/`/Core`/src`/PtePtr`$en`-us`#`:`:Pte`:`:template `<class T`> clas
|
|
|
|
|
te] class.&]
|
|
|
|
|
[s7; [%-*C@3 method]-|Pointer to the method.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:callback`(void`(`*`)`(P1 p1`)`): `[ template_<[*/@(128.0.255) parameters]>
|
|
|
|
|
`]&]
|
|
|
|
|
[s0;%- [*/@(128.0.255) CallbackType][%% <][%%*/@(128.0.255) arguments][%% >
|
|
|
|
|
@ -183,7 +202,8 @@ te] class.&]
|
|
|
|
|
[s2; Creates a Callback object that invokes a non`-member function.&]
|
|
|
|
|
[s7; [%-*C@3 fn]-|Pointer to the function.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0; `[ template_<[*/@(128.0.255) parameters]> `]&]
|
|
|
|
|
[s0;%- [*/@(128.0.255) CallbackType][%% <][%%*/@(128.0.255) arguments][%% >]
|
|
|
|
|
[* Proxy]([*/@(128.0.255) CallbackType][%% <][%%*/@(128.0.255) arguments][%% >]`&_[*@3 cb])&]
|
|
|
|
|
@ -195,7 +215,8 @@ in the created callback `- storing callbacks that are used as
|
|
|
|
|
Proxy targets in Vector flavor of containers is not a good idea.&]
|
|
|
|
|
[s7; [%-*C@3 cb]-|Target callback.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0; `[ template_<[*/@(128.0.255) parameters]> `]&]
|
|
|
|
|
[s0;%- [%%*/@(128.0.255) CallbackType][%% <][%%*/@(128.0.255) arguments][%% >
|
|
|
|
|
][* callback]([%%*/@(128.0.255) CallbackType][%% <][%%*/@(128.0.255) arguments][%% >
|
|
|
|
|
@ -210,7 +231,8 @@ value returned by [*@3 cb2].&]
|
|
|
|
|
[s7; [%-*C@3 cb1]-|First target callback.&]
|
|
|
|
|
[s7; [%-*C@3 cb2]-|Second target callback.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0; `[ template_<[*/@(128.0.255) parameters]> `]&]
|
|
|
|
|
[s0;%- [%%*/@(128.0.255) CallbackType][%% <][%%*/@(128.0.255) arguments][%% >]`&_[* operator<<](
|
|
|
|
|
[%%*/@(128.0.255) CallbackType][%% <][%%*/@(128.0.255) arguments][%% >
|
|
|
|
|
@ -222,9 +244,10 @@ imitating callback insertion.&]
|
|
|
|
|
that calls both the first and the second callback.&]
|
|
|
|
|
[s7; [%-*C@3 b]-|Second callback.&]
|
|
|
|
|
[s7; [*/ Return value]-|Reference to the first callback.&]
|
|
|
|
|
[s0;3 &]
|
|
|
|
|
[s0; Special functions creating callbacks&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[ {{10000@(113.42.0) [s0; [*@7;4 Special functions creating callbacks]]}}&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0;:`:`:callback1`(Object`*`,void`(M`:`:`*`)`(P`)`,T`):%- template_<class_[*@4 Object],
|
|
|
|
|
class_[*@4 M], class_[*@4 P], class_[*@4 T]>&]
|
|
|
|
|
[s0;:`:`:callback1`(Object`*`,void`(M`:`:`*`)`(P`)`,T`):%- Callback_[* callback1]([*@4 Ob
|
|
|
|
|
@ -236,7 +259,8 @@ the Callback.&]
|
|
|
|
|
[s7; [%-*C@3 method]-|Method pointer.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Argument&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:callback1`(const Object`*`,void`(M`:`:`*`)`(P`)const`,T`):%- template_<class
|
|
|
|
|
_[*@4 Object], class_[*@4 M], class_[*@4 P], class_[*@4 T]>&]
|
|
|
|
|
[s0;:`:`:callback1`(const Object`*`,void`(M`:`:`*`)`(P`)const`,T`):%- Callback_[* callb
|
|
|
|
|
@ -247,7 +271,8 @@ ack1](const_[*@4 Object]_`*[*@3 object], void_([*@4 M]`::`*[*@3 method])([*@4 P]
|
|
|
|
|
[s7; [%-*C@3 method]-|Method pointer.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Argument&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0;*C@4 &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:pteback1`(Object`*`,void`(M`:`:`*`)`(P`)`,T`):%- template_<class_[*@4 Object],
|
|
|
|
|
class_[*@4 M], class_[*@4 P], class_[*@4 T]>&]
|
|
|
|
|
[s0;:`:`:pteback1`(Object`*`,void`(M`:`:`*`)`(P`)`,T`):%- Callback_[* pteback1]([*@4 Obje
|
|
|
|
|
@ -261,7 +286,8 @@ te].&]
|
|
|
|
|
[s7; [%-*C@3 method]-|Method pointer.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Argument&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:callback1`(void`(`*`)`(P`)`,T`):%- template_<class_[*@4 T],
|
|
|
|
|
class_[*@4 P]>&]
|
|
|
|
|
[s0;:`:`:callback1`(void`(`*`)`(P`)`,T`):%- Callback_[* callback1](void_(`*[*@3 fn])([*@4 P
|
|
|
|
|
@ -272,7 +298,8 @@ and stored in the Callback.&]
|
|
|
|
|
[s7; [%-*C@3 fn]-|Function.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Argument.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:callback1`(Object`*`,void`(M`:`:`*`)`(P1`,P`)`,T`):%- template_<class_[*@4 Obj
|
|
|
|
|
ect], class_[*@4 M], class_[*@4 P1], class_[*@4 P], class_[*@4 T]>&]
|
|
|
|
|
[s0;:`:`:callback1`(Object`*`,void`(M`:`:`*`)`(P1`,P`)`,T`):%- Callback1<[*@4 P1]>_[* cal
|
|
|
|
|
@ -285,7 +312,8 @@ stored in the Callback.&]
|
|
|
|
|
[s7; [%-*C@3 method]-|Method pointer.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Second argument to the method.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:callback1`(const Object`*`,void`(M`:`:`*`)`(P1`,P`)const`,T`):%- template_<c
|
|
|
|
|
lass_[*@4 Object], class_[*@4 M], class_[*@4 P1], class_[*@4 P], class_[*@4 T]>&]
|
|
|
|
|
[s0;:`:`:callback1`(const Object`*`,void`(M`:`:`*`)`(P1`,P`)const`,T`):%- Callback1<[*@4 P
|
|
|
|
|
@ -296,7 +324,8 @@ lass_[*@4 Object], class_[*@4 M], class_[*@4 P1], class_[*@4 P], class_[*@4 T]>&
|
|
|
|
|
[s7; [%-*C@3 method]-|Method pointer.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Second argument to the method.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:pteback1`(Object`*`,void`(M`:`:`*`)`(P1`,P`)`,T`):%- template_<class_[*@4 Obje
|
|
|
|
|
ct], class_[*@4 M], class_[*@4 P1], class_[*@4 P], class_[*@4 T]>&]
|
|
|
|
|
[s0;:`:`:pteback1`(Object`*`,void`(M`:`:`*`)`(P1`,P`)`,T`):%- Callback1<[*@4 P1]>_[* pteb
|
|
|
|
|
@ -310,7 +339,8 @@ even after the object instance is destructed.&]
|
|
|
|
|
te].&]
|
|
|
|
|
[s7; [%-*C@3 method]-|Method pointer.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Second argument to the method.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:callback1`(void`(`*`)`(P1`,P`)`,T`):%- template_<class_[*@4 T],
|
|
|
|
|
class_[*@4 P1], class_[*@4 P]>&]
|
|
|
|
|
[s0;:`:`:callback1`(void`(`*`)`(P1`,P`)`,T`):%- Callback1<[*@4 P1]>_[* callback1](void_(`*
|
|
|
|
|
@ -321,7 +351,8 @@ expecting two parameters. Additional parameter is supplied as
|
|
|
|
|
[s7; [%-*C@3 fn]-|Function.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Method pointer.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;%- template_<class_[*@4 T], class_[*@4 P]>&]
|
|
|
|
|
[s0;%- Callback_[* callback1](Callback1<[*@4 P]>_[*@3 cb], [*@4 T]_[*@3 arg])&]
|
|
|
|
|
[s2; Combines a single`-parameter callback and an argument into a
|
|
|
|
|
@ -329,7 +360,8 @@ no`-parameter callback.&]
|
|
|
|
|
[s7; [%-*C@3 cb]-|Single`-parameter callback.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Argument.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;%- template_<class_[*@4 T], class_[*@4 P1], class_[*@4 P]>&]
|
|
|
|
|
[s0;%- Callback1<[*@4 P1]>_[* callback1](Callback2<[*@4 P1], [*@4 P]>_[*@3 cb],
|
|
|
|
|
[*@4 T]_[*@3 arg])&]
|
|
|
|
|
@ -338,7 +370,8 @@ single parameter callback.&]
|
|
|
|
|
[s7; [%-*C@3 cb]-|Double`-parameter callback.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Argument.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:callback2`(Object`*`,R`(O`:`:`*`)`(A`,B`)`,T1`,T2`):%- template_<class_[*@4 Ob
|
|
|
|
|
ject], class_[*@4 R], class_[*@4 O], class_[*@4 A], class_[*@4 B], class_[*@4 T1],
|
|
|
|
|
class_[*@4 T2]>&]
|
|
|
|
|
@ -353,7 +386,8 @@ in the created callback object.&]
|
|
|
|
|
[s7; [%-*C@3 arg1]-|First argument.&]
|
|
|
|
|
[s7; [%-*C@3 arg2]-|Second argument.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:callback2`(const Object`*`,R`(O`:`:`*`)`(A`,B`)const`,T1`,T2`):%- template_<
|
|
|
|
|
class_[*@4 Object], class_[*@4 R], class_[*@4 O], class_[*@4 A], class_[*@4 B],
|
|
|
|
|
class_[*@4 T1], class_[*@4 T2]>&]
|
|
|
|
|
@ -366,7 +400,8 @@ allback2](const_[*@4 Object]_`*[*@3 object], [*@4 R]_([*@4 O]`::`*[*@3 method])(
|
|
|
|
|
[s7; [%-*C@3 arg1]-|First argument.&]
|
|
|
|
|
[s7; [%-*C@3 arg2]-|Second argument.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s7;*C@3 &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:pteback2`(Object`*`,R`(O`:`:`*`)`(A`,B`)`,T1`,T2`):%- template_<class_[*@4 Obj
|
|
|
|
|
ect], class_[*@4 R], class_[*@4 O], class_[*@4 A], class_[*@4 B], class_[*@4 T1],
|
|
|
|
|
class_[*@4 T2]>&]
|
|
|
|
|
@ -382,8 +417,8 @@ even after the object instance is destructed.&]
|
|
|
|
|
[s7; [%-*C@3 arg1]-|First argument.&]
|
|
|
|
|
[s7; [%-*C@3 arg2]-|Second argument.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:callback2`(R`(`*`)`(A`,B`)`,T1`,T2`):%- template_<class_[*@4 R],
|
|
|
|
|
class_[*@4 A], class_[*@4 B], class_[*@4 T1], class_[*@4 T2]>&]
|
|
|
|
|
[s0;:`:`:callback2`(R`(`*`)`(A`,B`)`,T1`,T2`):%- Callback_[* callback2]([*@4 R]_(`*[*@3 fn])
|
|
|
|
|
@ -395,7 +430,8 @@ taking two parameters. Parameter are supplied as [@3 arg1] and
|
|
|
|
|
[s7; [%-*C@3 arg1]-|First argument.&]
|
|
|
|
|
[s7; [%-*C@3 arg2]-|Second argument.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;%- template_<class_[*@4 A], class_[*@4 B], class_[*@4 T1], class_[*@4 T2]>&]
|
|
|
|
|
[s0;%- Callback_[* callback2](Callback2<[*@4 A], [*@4 B]>_[*@3 cb], [*@4 T1]_[*@3 arg1],
|
|
|
|
|
[*@4 T2]_[*@3 arg2])&]
|
|
|
|
|
@ -405,71 +441,88 @@ no`-parameter callback.&]
|
|
|
|
|
[s7; [%-*C@3 arg1]-|First argument.&]
|
|
|
|
|
[s7; [%-*C@3 arg2]-|Second argument.&]
|
|
|
|
|
[s7; [*/ Return value]-|Created callback.&]
|
|
|
|
|
[s0;*C@3 &]
|
|
|
|
|
[s0; Callback macros&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0; Callback macros reduce verbosity of instance method callbacks.
|
|
|
|
|
[s0;%- &]
|
|
|
|
|
[ {{10000@(113.42.0) [s0; [*@7;4 Callback macros]]}}&]
|
|
|
|
|
[s9; Callback macros reduce verbosity of instance method callbacks.
|
|
|
|
|
They expect CLASSNAME to be typedef`-ed as the type of current
|
|
|
|
|
class and return method callbacks bound to the [*@(0.0.255) this]
|
|
|
|
|
pointer.&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0;:`:`:THISBACK`(x`):%- [* THISBACK]([*@3 x])&]
|
|
|
|
|
[s2; Expands to callback(this, `&CLASSNAME`::[@3 x]).&]
|
|
|
|
|
[s7; [%-*C@3 x]-|Name of method.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:THISBACK1`(x`, arg`):%- [* THISBACK1]([*@3 x], [*@3 arg])&]
|
|
|
|
|
[s2; Expands to callback1(this, `&CLASSNAME`::[@3 x], [@3 arg]).&]
|
|
|
|
|
[s7; [%-*C@3 x]-|Name of method.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Additional parameter.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:THISBACK2`(m`, a`, b`):%- [* THISBACK2]([*@3 m], [*@3 a], [*@3 b])&]
|
|
|
|
|
[s2; Expands to callback2(this, `&CLASSNAME`::[@3 x], [@3 a],[@3 b]).&]
|
|
|
|
|
[s7; [%-*C@3 m]-|Name of method.&]
|
|
|
|
|
[s7; [%-*C@3 a]-|First additional parameter.&]
|
|
|
|
|
[s7; [%-*C@3 b]-|Second additional parameter.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:PTEBACK`(x`):%- [* PTEBACK]([*@3 x])&]
|
|
|
|
|
[s2; Expands to pteback(this, `&CLASSNAME`::[@3 x]).&]
|
|
|
|
|
[s7; [%-*C@3 x]-|Name of method.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:PTEBACK1`(x`, arg`):%- [* PTEBACK1]([*@3 x], [*@3 arg])&]
|
|
|
|
|
[s2; Expands to pteback1(this, `&CLASSNAME`::[@3 x], [@3 arg]).&]
|
|
|
|
|
[s7; [%-*C@3 x]-|Name of method.&]
|
|
|
|
|
[s7; [%-*C@3 arg]-|Additional parameter.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s0;:`:`:PTEBACK2`(m`, a`, b`):%- [* PTEBACK2]([*@3 m], [*@3 a], [*@3 b])&]
|
|
|
|
|
[s2; Expands to pteback2(this, `&CLASSNAME`::[@3 x], [@3 a],[@3 b]).&]
|
|
|
|
|
[s7; [%-*C@3 m]-|Name of method.&]
|
|
|
|
|
[s7; [%-*C@3 a]-|First additional parameter.&]
|
|
|
|
|
[s7; [%-*C@3 b]-|Second additional parameter.&]
|
|
|
|
|
[s2; &]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0;%- CallbackArgTarget&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0;%- template_<class_[*@4 T]>&]
|
|
|
|
|
[s0;%- class_[* CallbackArgTarget]&]
|
|
|
|
|
[s2; This helper class is useful in a situation when a set of callbacks
|
|
|
|
|
[s0;%- &]
|
|
|
|
|
[s0;%- &]
|
|
|
|
|
[ {{10000@(113.42.0) [s0; [*@7;4 CallbackArgTarget]]}}&]
|
|
|
|
|
[s3;%- &]
|
|
|
|
|
[s1;:noref:%- [@(0.0.255)3 template][3 _<][@(0.0.255)3 class][3 _][*@4;3 T][3 >]&]
|
|
|
|
|
[s1;:CallbackArgTarget`:`:class:%- [@(0.0.255) class]_[* CallbackArgTarget]&]
|
|
|
|
|
[s9; This helper class is useful in a situation when a set of callbacks
|
|
|
|
|
define some output value. Example is pop`-up menu that provides
|
|
|
|
|
selection of one character `- in that case, CallbackArgTarget
|
|
|
|
|
can be used instead of dedicated method to obtain result of user
|
|
|
|
|
selection.&]
|
|
|
|
|
[s0; [%-*C@4 T]-|Type of output value. Must be able to be assigned Null.&]
|
|
|
|
|
[s2; &]
|
|
|
|
|
[s0;:`:`:CallbackArgTarget`:`:CallbackArgTarget`(`):%- [* CallbackArgTarget]()&]
|
|
|
|
|
[s2; Constructor. Assigns Null to the output value.&]
|
|
|
|
|
[s2; &]
|
|
|
|
|
[s0;:`:`:CallbackArgTarget`:`:operator const T`&`(`):%- [* operator_const_T`&]()&]
|
|
|
|
|
[s8; [%-*@4 T]-|Type of output value. Must be able to be assigned Null.&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0;%- &]
|
|
|
|
|
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s5;:CallbackArgTarget`:`:CallbackArgTarget`(`):%- [* CallbackArgTarget]()&]
|
|
|
|
|
[s2; Assigns Null to the output value.&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4; &]
|
|
|
|
|
[s5;:CallbackArgTarget`:`:operator const T`&`(`)const:%- [* operator_const_T`&]()_[@(0.0.255) c
|
|
|
|
|
onst]&]
|
|
|
|
|
[s7; [*/ Return value]-|The result. If no CallbackArgTarget was invoked,
|
|
|
|
|
returns Null.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0;:`:`:CallbackArgTarget`:`:IsNullInstance`(`)const:%- bool_[* IsNullInstance]()_cons
|
|
|
|
|
t&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4;%- &]
|
|
|
|
|
[s5;:CallbackArgTarget`:`:IsNullInstance`(`)const:%- [@(0.0.255) bool]_[* IsNullInstance](
|
|
|
|
|
)_[@(0.0.255) const]&]
|
|
|
|
|
[s7; [*/ Return value]-|True if there is not Null in output value.&]
|
|
|
|
|
[s0; &]
|
|
|
|
|
[s0;:`:`:CallbackArgTarget`:`:operator`[`]`(const T`&`):%- Callback_[* operator`[`]](co
|
|
|
|
|
nst_T`&_[*@3 value])&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s4;%- &]
|
|
|
|
|
[s5;:CallbackArgTarget`:`:operator`[`]`(const T`&`):%- [_^Callback^ Callback]_[* operator
|
|
|
|
|
`[`]]([@(0.0.255) const]_[*@4 T][@(0.0.255) `&]_[*@3 value])&]
|
|
|
|
|
[s2; Returns a Callback that, when invoked, assigns [@3 value] to the
|
|
|
|
|
output value.&]
|
|
|
|
|
[s7; [%-*C@3 value]-|Value.&]
|
|
|
|
|
[s7; [*/ Return value]-|Callback.&]
|
|
|
|
|
[s3; &]
|
|
|
|
|
[s0; ]
|