From 73bddf80d5528d241821dc5cc7818c402c2e934b Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 15 May 1995 23:12:15 -0400 Subject: entered into RCS From-SVN: r9700 --- gcc/objc/README | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 gcc/objc/README (limited to 'gcc/objc/README') diff --git a/gcc/objc/README b/gcc/objc/README new file mode 100644 index 0000000..70cea30 --- /dev/null +++ b/gcc/objc/README @@ -0,0 +1,97 @@ + +GNU Objective C notes +********************* + +This document is to explain what has been done, and a little about how +specific features differ from other implementations. The runtime has +been completely rewritten in gcc 2.4. The earlier runtime had several +severe bugs and was rather incomplete. The compiler has had several +new features added as well. + +This is not documentation for Objective C, it is usable to someone +who knows Objective C from somewhere else. + + +Runtime API functions +===================== + +The runtime is modeled after the NeXT Objective C runtime. That is, +most functions have semantics as it is known from the NeXT. The +names, however, have changed. All runtime API functions have names +of lowercase letters and and underscores as opposed to the +`traditional' mixed case names. + The runtime api functions are not documented as of now. +Someone offered to write it, and did it, but we were not allowed to +use it by his university (Very sad story). We have started writing +the documentation over again. This will be announced in appropriate +places when it becomes available. + + +Protocols +========= + +Protocols are now fully supported. The semantics is exactly as on the +NeXT. There is a flag to specify how protocols should be typechecked +when adopted to classes. The normal typechecker requires that all +methods in a given protocol must be implemented in the class that +adopts it -- it is not enough to inherit them. The flag +`-Wno-protocol' causes it to allow inherited methods, while +`-Wprotocols' is the default which requires them defined. + + ++initialize +=========== + +This method, if defined, is called before any other instance or class +methods of that particular class. This method is not inherited, and +is thus not called as initializer for a subclass that doesn't define +it itself. Thus, each +initialize method is called exactly once (or +never if no methods of that particular class is never called). +Besides this, it is allowed to have several +initialize methods, one +for each category. The order in which these (multiple methods) are +called is not well defined. I am not completely certain what the +semantics of this method is for other implementations, but this is +how it works for GNU Objective C. + + +Passivation/Activation/Typedstreams +=================================== + +This is supported in the style of NeXT TypedStream's. Consult the +headerfile Typedstreams.h for api functions. I (Kresten) have +rewritten it in Objective C, but this implementation is not part of +2.4, it is available from the GNU Objective C prerelease archive. + There is one difference worth noting concerning objects stored with +objc_write_object_reference (aka NXWriteObjectReference). When these +are read back in, their object is not guaranteed to be available until +the `-awake' method is called in the object that requests that object. +To objc_read_object you must pass a pointer to an id, which is valid +after exit from the function calling it (like e.g. an instance +variable). In general, you should not use objects read in until the +-awake method is called. + + +Acknowledgements +================ + +The GNU Objective C team: Geoffrey Knauth (manager), +Tom Wood (compiler) and Kresten Krab Thorup + (runtime) would like to thank a some people for +participating in the development of the present GNU Objective C. + +Paul Burchard and Andrew McCallum + has been very helpful debugging the +runtime. Eric Herring has been very helpful +cleaning up after the documentation-copyright disaster and is now +helping with the new documentation. + +Steve Naroff and Richard Stallman + has been very helpful with implementation details +in the compiler. + + +Bug Reports +=========== + +Please read the section `Submitting Bugreports' of the gcc manual +before you submit any bugs. -- cgit v1.1