This file is indexed.

/usr/share/GNUstep/Documentation/Developer/Base/Reference/NSDistantObject.gsdoc is in gnustep-base-doc 1.25.1-2ubuntu3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<?xml version="1.0"?>
<!DOCTYPE gsdoc PUBLIC "-//GNUstep//DTD gsdoc 1.0.4//EN" "http://www.gnustep.org/gsdoc-1_0_4.dtd">
<gsdoc base="NSDistantObject" up="Base">
  <head>
    <title>NSDistantObject class reference</title>
    <author name="Richard Frith-Macdonald">
      <email address="richard@brainstorm.co.uk">
        richard@brainstorm.co.uk
      </email>
    </author>
    <author name="Andrew Kachites McCallum">
      <email address="mccallum@gnu.ai.mit.edu">
        mccallum@gnu.ai.mit.edu
      </email>
    </author>
    <copy>1997 Free Software Foundation, Inc.</copy>
  </head>
  <body>
    <front><contents /></front>
    <chapter>
      <heading>
        Software documentation for the NSDistantObject class
      </heading>
      <class name="NSDistantObject" super="NSProxy" ovadd="1.0.0">
        <declared>Foundation/NSDistantObject.h</declared>
        <conform>NSCoding</conform>
        <desc>
          Instances of this class act as proxies to remote
          objects using the Distributed Objects system. They
          also hold references to local objects which are vended
          to remote processes.
        </desc>
        <ivariable type="NSConnection*" name="_connection" validity="public" ovadd="1.0.0">
          <desc>
            <em>Warning</em> the underscore at the start of the
            name of this instance variable indicates that, even
            though it is not technically <em>private</em>, it is
            intended for internal use within the package, and
            you should not use the variable in other code.
          </desc>
        </ivariable>
        <ivariable type="unsigned int" name="_counter" validity="public" ovadd="1.0.0">
          <desc>
            <em>Warning</em> the underscore at the start of the
            name of this instance variable indicates that, even
            though it is not technically <em>private</em>, it is
            intended for internal use within the package, and
            you should not use the variable in other code.
          </desc>
        </ivariable>
        <ivariable type="unsigned int" name="_handle" validity="public" ovadd="1.0.0">
          <desc>
            <em>Warning</em> the underscore at the start of the
            name of this instance variable indicates that, even
            though it is not technically <em>private</em>, it is
            intended for internal use within the package, and
            you should not use the variable in other code.
          </desc>
        </ivariable>
        <ivariable type="id" name="_object" validity="public" ovadd="1.0.0">
          <desc>
            <em>Warning</em> the underscore at the start of the
            name of this instance variable indicates that, even
            though it is not technically <em>private</em>, it is
            intended for internal use within the package, and
            you should not use the variable in other code.
          </desc>
        </ivariable>
        <ivariable type="Protocol*" name="_protocol" validity="public" ovadd="1.0.0">
          <desc>
            <em>Warning</em> the underscore at the start of the
            name of this instance variable indicates that, even
            though it is not technically <em>private</em>, it is
            intended for internal use within the package, and
            you should not use the variable in other code.
          </desc>
        </ivariable>
        <ivariable type="void*" name="_sigs" validity="public" ovadd="1.0.0">
          <desc>
            <em>Warning</em> the underscore at the start of the
            name of this instance variable indicates that, even
            though it is not technically <em>private</em>, it is
            intended for internal use within the package, and
            you should not use the variable in other code.
          </desc>
        </ivariable>
        <method type="NSDistantObject*" factory="yes" ovadd="1.0.0">
          <sel>proxyWithLocal:</sel>
          <arg type="id">anObject</arg>
          <sel>connection:</sel>
          <arg type="NSConnection*">aConnection</arg>
          <desc>
            Creates and returns a proxy associated with
            <var>aConnection</var> which will hold a reference to
            the local object <var>anObject</var>.
          </desc>
        </method>
        <method type="NSDistantObject*" factory="yes" ovadd="1.0.0">
          <sel>proxyWithTarget:</sel>
          <arg type="unsigned">anObject</arg>
          <sel>connection:</sel>
          <arg type="NSConnection*">aConnection</arg>
          <desc>
            Creates and returns a proxy associated with
            <var>aConnection</var> which will provide a link to a
            remote object whose reference locally is
            <var>anObject</var>.
          </desc>
        </method>
        <method type="NSConnection*" ovadd="1.0.0">
          <sel>connectionForProxy</sel>
          <desc>
            Returns the
            <ref type="class" id="NSConnection">NSConnection</ref>
              instance with which the receiver is associated.
          </desc>
        </method>
        <method type="id" ovadd="1.0.0">
          <sel>initWithLocal:</sel>
          <arg type="id">anObject</arg>
          <sel>connection:</sel>
          <arg type="NSConnection*">aConnection</arg>
          <desc>
            Initialises and returns a proxy associated with
            <var>aConnection</var> which will hold a reference to
            the local object <var>anObject</var>.
          </desc>
        </method>
        <method type="id" ovadd="1.0.0">
          <sel>initWithTarget:</sel>
          <arg type="unsigned">target</arg>
          <sel>connection:</sel>
          <arg type="NSConnection*">aConnection</arg>
          <desc>
            Initialises and returns a proxy associated with
            <var>aConnection</var> which will provide a link to a
            remote object whose reference locally is
            <var>target</var>.
          </desc>
        </method>
        <method type="NSMethodSignature*" ovadd="1.0.0">
          <sel>methodSignatureForSelector:</sel>
          <arg type="SEL">aSelector</arg>
          <desc>
            <p>
              Returns the method signature describing the
              arguments and return types of the method in the
              object referred to by the receiver which
              implements the <var>aSelector</var> message.
            </p>
            <p>
              This method may need to refer to another process
              (causing relatively slow network communication)
              and approximately <strong>double</strong> the time
              taken for sending a distributed objects message, so
              you are advised to use the
              <ref type="method" id="-setProtocolForProxy:">
                -setProtocolForProxy:
              </ref>
              method to avoid this occurring.
            </p>
          </desc>
        </method>
        <method type="void" ovadd="1.0.0">
          <sel>setProtocolForProxy:</sel>
          <arg type="Protocol*">aProtocol</arg>
          <desc>
            <p>
              A key method for Distributed Objects performance. This
              sets the a protocol that the distant object referred
              to by the proxy should conform to. When messages in
              that protocol are sent to the proxy, the proxy knows
              that it does not need to ask the remote object for
              the method signature in order to send the message to
              it, but can send the message straight away based on
              the local method signature information obtained from
              the protocol.
            </p>
<example>
   if ([anObj isProxy] == YES)
     {
       [anObj setProtocolForProxy: @protocol(MyProtocol)];
     }
 </example>
            <p>
              It is <em>highly recommended</em> that you make use of
              this facility, but you must beware that versions of
              the compiler prior to 3.3 suffer a serious bug with
              respect to the @protocol directive. If the
              protocol referred to is not declared and
              implemented in the file where @protocol is
              used to refer to the protocol by name, a runtime
              error will occur when you try to use it.
            </p>
            <p>
              Beware, if you don't use this method to set the
              protocol, the system might well ask the remote
              process for method signature information, and the
              remote process might get it <em>wrong</em>. This
              is because the class of the remote object needs to
              have been declared to conform to the protocol in
              order for it to know about any protocol qualifiers
              (the keywords
              <code>bycopy, byref, in, out, inout,</code> and
              <code>oneway</code>). If the author of the server
              process forgot to do this, the type information
              returned from that process may not be what you
              are expecting.
            </p>
            The class of the server object should be declared like
            this...
<example>
 @interface MyServerClass : NSObject &lt;MyProtocol&gt;
 ...
 @end
 </example>
          </desc>
        </method>
      </class>
    </chapter>
  </body>
</gsdoc>