OSDN Git Service

* config/i386/i386.md (*ashr<mode>3_cconly): Fix wrong mode of
[pf3gnuchains/gcc-fork.git] / gcc / doc / objc.texi
index a0c40f7..c15c1ac 100644 (file)
@@ -1,5 +1,5 @@
 @c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 @c This is part of the GCC manual.
 @c For copying conditions, see the file gcc.texi.
 
@@ -41,7 +41,7 @@ Suppose for example you have a @code{FileStream} class that declares
 @code{Stdin}, @code{Stdout} and @code{Stderr} as global variables, like
 below:
 
-@example
+@smallexample
 
 FileStream *Stdin = nil;
 FileStream *Stdout = nil;
@@ -56,10 +56,10 @@ FileStream *Stderr = nil;
     Stderr = [[FileStream new] initWithFd:2];
 @}
 
-/* Other methods here */
+/* @r{Other methods here} */
 @@end
 
-@end example
+@end smallexample
 
 In this example, the initialization of @code{Stdin}, @code{Stdout} and
 @code{Stderr} in @code{+initialize} occurs too late.  The programmer can
@@ -73,7 +73,7 @@ just before entering @code{main}.
 The correct solution of the above problem is to use the @code{+load}
 method instead of @code{+initialize}:
 
-@example
+@smallexample
 
 @@implementation FileStream
 
@@ -84,10 +84,10 @@ method instead of @code{+initialize}:
     Stderr = [[FileStream new] initWithFd:2];
 @}
 
-/* Other methods here */
+/* @r{Other methods here} */
 @@end
 
-@end example
+@end smallexample
 
 The @code{+load} is a method that is not overridden by categories.  If a
 class and a category of it both implement @code{+load}, both methods are
@@ -179,6 +179,8 @@ The types are encoded in the following way:
 @c @sp 1
 
 @multitable @columnfractions .25 .75
+@item @code{_Bool}
+@tab @code{B}
 @item @code{char}
 @tab @code{c}
 @item @code{unsigned char}
@@ -215,6 +217,8 @@ The types are encoded in the following way:
 @tab @code{*}
 @item unknown type
 @tab @code{?}
+@item Complex types
+@tab @code{j} followed by the inner type.  For example @code{_Complex double} is encoded as "jd".
 @item bit-fields
 @tab @code{b} followed by the starting position of the bit-field, the type of the bit-field and the size of the bit-field (the bit-fields encoding was changed from the NeXT's compiler encoding, see below)
 @end multitable
@@ -258,12 +262,12 @@ compiler on an i386 machine:
 @item Objective-C type
 @tab Compiler encoding
 @item
-@example
+@smallexample
 int a[10];
-@end example
+@end smallexample
 @tab @code{[10i]}
 @item
-@example
+@smallexample
 struct @{
   int i;
   float f[3];
@@ -271,7 +275,7 @@ struct @{
   int b:2;
   char c;
 @}
-@end example
+@end smallexample
 @tab @code{@{?=i[3f]b128i3b131i2c@}}
 @end multitable
 
@@ -343,7 +347,7 @@ Here is an example of how to use this feature.  Suppose you want to
 implement a class whose instances hold a weak pointer reference; the
 following class does this:
 
-@example
+@smallexample
 
 @@interface WeakPointer : Object
 @{
@@ -375,7 +379,7 @@ following class does this:
 
 @@end
 
-@end example
+@end smallexample
 
 Weak pointers are supported through a new type character specifier
 represented by the @samp{!} character.  The
@@ -391,9 +395,9 @@ GNU Objective-C provides constant string objects that are generated
 directly by the compiler.  You declare a constant string object by
 prefixing a C constant string with the character @samp{@@}:
 
-@example
+@smallexample
   id myString = @@"this is a constant string object";
-@end example
+@end smallexample
 
 The constant string objects are by default instances of the
 @code{NXConstantString} class which is provided by the GNU Objective-C
@@ -406,7 +410,7 @@ a new command line options @option{-fconstant-string-class=@var{class-name}}.
 The provided class should adhere to a strict structure, the same
 as @code{NXConstantString}'s structure:
 
-@example
+@smallexample
 
 @@interface MyConstantStringClass
 @{
@@ -416,7 +420,7 @@ as @code{NXConstantString}'s structure:
 @}
 @@end
 
-@end example
+@end smallexample
 
 @code{NXConstantString} inherits from @code{Object}; user class
 libraries may choose to inherit the customized constant string class
@@ -455,9 +459,9 @@ forgotten, we are documenting it here.
 The keyword @code{@@compatibility_alias} allows you to define a class name
 as equivalent to another class name.  For example:
 
-@example
+@smallexample
 @@compatibility_alias WOApplication GSWApplication;
-@end example
+@end smallexample
 
 tells the compiler that each time it encounters @code{WOApplication} as
 a class name, it should replace it with @code{GSWApplication} (that is,