diff options
author | Nicola Pero <n.pero@mi.flashnet.it> | 2002-09-17 13:51:40 +0200 |
---|---|---|
committer | Nicola Pero <nicola@gcc.gnu.org> | 2002-09-17 11:51:40 +0000 |
commit | 838c4534d4aebb1efb7d968d289606d6f1c89374 (patch) | |
tree | 9a3f12ab1fb57b1832fa6ce6174c17e929461b69 /gcc/doc/objc.texi | |
parent | 17656182f77cf4634dad4bbff9102d759ffd03b2 (diff) | |
download | gcc-838c4534d4aebb1efb7d968d289606d6f1c89374.zip gcc-838c4534d4aebb1efb7d968d289606d6f1c89374.tar.gz gcc-838c4534d4aebb1efb7d968d289606d6f1c89374.tar.bz2 |
Extended/updated objc documentation on constant string classes
From-SVN: r57247
Diffstat (limited to 'gcc/doc/objc.texi')
-rw-r--r-- | gcc/doc/objc.texi | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/gcc/doc/objc.texi b/gcc/doc/objc.texi index d3fd775..3b65255 100644 --- a/gcc/doc/objc.texi +++ b/gcc/doc/objc.texi @@ -396,7 +396,7 @@ prefixing a C constant string with the character @samp{@@}: id myString = @@"this is a constant string object"; @end example -The constant string objects are usually instances of the +The constant string objects are by default instances of the @code{NXConstantString} class which is provided by the GNU Objective-C runtime. To get the definition of this class you must include the @file{objc/NXConstStr.h} header file. @@ -409,8 +409,9 @@ as @code{NXConstantString}'s structure: @example -@@interface NXConstantString : Object +@@interface MyConstantStringClass @{ + Class isa; char *c_string; unsigned int len; @} @@ -418,15 +419,31 @@ as @code{NXConstantString}'s structure: @end example -User class libraries may choose to inherit the customized constant -string class from a different class than @code{Object}. There is no -requirement in the methods the constant string class has to implement. - -When a file is compiled with the @option{-fconstant-string-class} option, -all the constant string objects will be instances of the class specified -as argument to this option. It is possible to have multiple compilation -units referring to different constant string classes, neither the -compiler nor the linker impose any restrictions in doing this. +@code{NXConstantString} inherits from @code{Object}; user class +libraries may choose to inherit the customized constant string class +from a different class than @code{Object}. There is no requirement in +the methods the constant string class has to implement, but the final +ivar layour of the class must be the compatible with the given +structure. + +When the compiler creates the statically allocated constant string +object, the @code{c_string} field will be filled by the compiler with +the string; the @code{length} field will be filled by the compiler with +the string length; the @code{isa} pointer will be filled with +@code{NULL} by the compiler, and it will later be fixed up automatically +at runtime by the GNU Objective-C runtime library to point to the class +which was set by the @option{-fconstant-string-class} option when the +object file is loaded (if you wonder how it works behind the scenes, the +name of the class to use, and the list of static objects to fixup, are +stored by the compiler in the object file in a place where the GNU +runtime library will find them at runtime). + +As a result, when a file is compiled with the +@option{-fconstant-string-class} option, all the constant string objects +will be instances of the class specified as argument to this option. It +is possible to have multiple compilation units referring to different +constant string classes, neither the compiler nor the linker impose any +restrictions in doing this. @c ========================================================================= @node compatibility_alias |