File: _d_d_invocation_grabber_8h-source.html

package info (click to toggle)
libircclient 1.9-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, sid, stretch, trixie
  • size: 1,752 kB
  • ctags: 1,078
  • sloc: ansic: 3,132; objc: 790; cpp: 349; makefile: 164; sh: 47; python: 36
file content (140 lines) | stat: -rw-r--r-- 11,634 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>IRCClient: DDInvocationGrabber.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.7.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    </ul>
  </div>
<h1>DDInvocationGrabber.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (c) 2007-2008 Dave Dribin</span>
<a name="l00003"></a>00003 <span class="comment"> * </span>
<a name="l00004"></a>00004 <span class="comment"> * Permission is hereby granted, free of charge, to any person</span>
<a name="l00005"></a>00005 <span class="comment"> * obtaining a copy of this software and associated documentation</span>
<a name="l00006"></a>00006 <span class="comment"> * files (the "Software"), to deal in the Software without</span>
<a name="l00007"></a>00007 <span class="comment"> * restriction, including without limitation the rights to use, copy,</span>
<a name="l00008"></a>00008 <span class="comment"> * modify, merge, publish, distribute, sublicense, and/or sell copies</span>
<a name="l00009"></a>00009 <span class="comment"> * of the Software, and to permit persons to whom the Software is</span>
<a name="l00010"></a>00010 <span class="comment"> * furnished to do so, subject to the following conditions:</span>
<a name="l00011"></a>00011 <span class="comment"> * </span>
<a name="l00012"></a>00012 <span class="comment"> * The above copyright notice and this permission notice shall be</span>
<a name="l00013"></a>00013 <span class="comment"> * included in all copies or substantial portions of the Software.</span>
<a name="l00014"></a>00014 <span class="comment"> *</span>
<a name="l00015"></a>00015 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
<a name="l00016"></a>00016 <span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
<a name="l00017"></a>00017 <span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
<a name="l00018"></a>00018 <span class="comment"> * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS</span>
<a name="l00019"></a>00019 <span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span>
<a name="l00020"></a>00020 <span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span>
<a name="l00021"></a>00021 <span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
<a name="l00022"></a>00022 <span class="comment"> * SOFTWARE.</span>
<a name="l00023"></a>00023 <span class="comment"> */</span>
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 
<a name="l00026"></a>00026 <span class="comment">/*</span>
<a name="l00027"></a>00027 <span class="comment"> *  This class is based on CInvocationGrabber:</span>
<a name="l00028"></a>00028 <span class="comment"> *</span>
<a name="l00029"></a>00029 <span class="comment"> *  Copyright (c) 2007, Toxic Software</span>
<a name="l00030"></a>00030 <span class="comment"> *  All rights reserved.</span>
<a name="l00031"></a>00031 <span class="comment"> *  Redistribution and use in source and binary forms, with or without</span>
<a name="l00032"></a>00032 <span class="comment"> *  modification, are permitted provided that the following conditions are</span>
<a name="l00033"></a>00033 <span class="comment"> *  met:</span>
<a name="l00034"></a>00034 <span class="comment"> *  </span>
<a name="l00035"></a>00035 <span class="comment"> *  * Redistributions of source code must retain the above copyright notice,</span>
<a name="l00036"></a>00036 <span class="comment"> *  this list of conditions and the following disclaimer.</span>
<a name="l00037"></a>00037 <span class="comment"> *  </span>
<a name="l00038"></a>00038 <span class="comment"> *  * Redistributions in binary form must reproduce the above copyright</span>
<a name="l00039"></a>00039 <span class="comment"> *  notice, this list of conditions and the following disclaimer in the</span>
<a name="l00040"></a>00040 <span class="comment"> *  documentation and/or other materials provided with the distribution.</span>
<a name="l00041"></a>00041 <span class="comment"> *  </span>
<a name="l00042"></a>00042 <span class="comment"> *  * Neither the name of the Toxic Software nor the names of its</span>
<a name="l00043"></a>00043 <span class="comment"> *  contributors may be used to endorse or promote products derived from</span>
<a name="l00044"></a>00044 <span class="comment"> *  this software without specific prior written permission.</span>
<a name="l00045"></a>00045 <span class="comment"> *  </span>
<a name="l00046"></a>00046 <span class="comment"> *  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND</span>
<a name="l00047"></a>00047 <span class="comment"> *  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<a name="l00048"></a>00048 <span class="comment"> *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</span>
<a name="l00049"></a>00049 <span class="comment"> *  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE</span>
<a name="l00050"></a>00050 <span class="comment"> *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span>
<a name="l00051"></a>00051 <span class="comment"> *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span>
<a name="l00052"></a>00052 <span class="comment"> *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span>
<a name="l00053"></a>00053 <span class="comment"> *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span>
<a name="l00054"></a>00054 <span class="comment"> *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l00055"></a>00055 <span class="comment"> *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF</span>
<a name="l00056"></a>00056 <span class="comment"> *  THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l00057"></a>00057 <span class="comment"> *</span>
<a name="l00058"></a>00058 <span class="comment"> */</span>
<a name="l00059"></a>00059 
<a name="l00060"></a>00060 <span class="preprocessor">#import &lt;Foundation/Foundation.h&gt;</span>
<a name="l00061"></a>00061 
<a name="l00062"></a>00062 <span class="comment">/*</span>
<a name="l00063"></a>00063 <span class="comment"> * @class DDInvocationGrabber</span>
<a name="l00064"></a>00064 <span class="comment"> * @discussion DDInvocationGrabber is a helper object that makes it very easy to construct instances of NSInvocation for later use. The object is inspired by NSUndoManager's prepareWithInvocationTarget method. To use a DDInvocationGrabber object, you set its target to some object, then send it a message as if it were the target object (the DDInvocationGrabber object acts as a proxy), if the target message understands the message the DDInvocationGrabber object stores the message invocation.</span>
<a name="l00065"></a>00065 <span class="comment"> </span>
<a name="l00066"></a>00066 <span class="comment"> DDInvocationGrabber *theGrabber = [DDInvocationGrabber invocationGrabber];</span>
<a name="l00067"></a>00067 <span class="comment"> [theGrabber setTarget:someObject]</span>
<a name="l00068"></a>00068 <span class="comment"> [theGrabber doSomethingWithParameter:someParameter]; // Send messages to 'theGrabber' as if it were 'someObject'</span>
<a name="l00069"></a>00069 <span class="comment"> NSInvocation *theInvocation = [theGrabber invocation];</span>
<a name="l00070"></a>00070 <span class="comment"> </span>
<a name="l00071"></a>00071 <span class="comment"> A slightly more concise version (using the covenience category) follows:</span>
<a name="l00072"></a>00072 <span class="comment"> </span>
<a name="l00073"></a>00073 <span class="comment"> DDInvocationGrabber *theGrabber = [DDInvocationGrabber invocationGrabber];</span>
<a name="l00074"></a>00074 <span class="comment"> [[theGrabber prepareWithInvocationTarget:someObject] doSomethingWithParameter:someParameter];</span>
<a name="l00075"></a>00075 <span class="comment"> NSInvocation *theInvocation = [theGrabber invocation];</span>
<a name="l00076"></a>00076 <span class="comment"> </span>
<a name="l00077"></a>00077 <span class="comment"> */</span>
<a name="l00078"></a>00078 <span class="keyword">@interface </span>DDInvocationGrabber : NSProxy
<a name="l00079"></a>00079 {
<a name="l00080"></a>00080         <span class="keywordtype">id</span> _target;
<a name="l00081"></a>00081         NSInvocation * _invocation;
<a name="l00082"></a>00082     BOOL _forwardInvokesOnMainThread;
<a name="l00083"></a>00083     BOOL _waitUntilDone;
<a name="l00084"></a>00084 }
<a name="l00085"></a>00085 
<a name="l00086"></a>00086 <span class="comment">/*</span>
<a name="l00087"></a>00087 <span class="comment"> * @method invocationGrabber</span>
<a name="l00088"></a>00088 <span class="comment"> * @abstract Returns a newly allocated, inited, autoreleased DDInvocationGrabber object.</span>
<a name="l00089"></a>00089 <span class="comment"> */</span>
<a name="l00090"></a>00090 + (id)invocationGrabber;
<a name="l00091"></a>00091 
<a name="l00092"></a>00092 - (id)target;
<a name="l00093"></a>00093 - (void)setTarget:(<span class="keywordtype">id</span>)inTarget;
<a name="l00094"></a>00094 
<a name="l00095"></a>00095 - (NSInvocation *)invocation;
<a name="l00096"></a>00096 - (void)setInvocation:(NSInvocation *)inInvocation;
<a name="l00097"></a>00097 
<a name="l00098"></a>00098 - (BOOL)forwardInvokesOnMainThread;
<a name="l00099"></a>00099 - (void)setForwardInvokesOnMainThread:(BOOL)forwardInvokesOnMainThread;
<a name="l00100"></a>00100 
<a name="l00101"></a>00101 - (BOOL)waitUntilDone;
<a name="l00102"></a>00102 - (void)setWaitUntilDone:(BOOL)waitUntilDone;
<a name="l00103"></a>00103 
<a name="l00104"></a>00104 <span class="keyword">@end</span>
<a name="l00105"></a>00105 
<a name="l00106"></a>00106 <span class="keyword">@interface </span>DDInvocationGrabber (DDInvocationGrabber_Conveniences)
<a name="l00107"></a>00107 
<a name="l00108"></a>00108 <span class="comment">/*</span>
<a name="l00109"></a>00109 <span class="comment"> * @method prepareWithInvocationTarget:</span>
<a name="l00110"></a>00110 <span class="comment"> * @abstract Sets the target object of the receiver and returns itself. The sender can then send a message to the </span>
<a name="l00111"></a>00111 <span class="comment"> */</span>
<a name="l00112"></a>00112 - (id)prepareWithInvocationTarget:(<span class="keywordtype">id</span>)inTarget;
<a name="l00113"></a>00113 
<a name="l00114"></a>00114 <span class="keyword">@end</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat Jan 10 18:10:37 2009 for IRCClient by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.7.1 </small></address>
</body>
</html>