mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-22 16:33:29 +00:00
Update docs. Rearrange includes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@11957 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
2a7cd1989c
commit
15cbe22642
13 changed files with 649 additions and 3014 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2002-01-02 Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* configure.in: Show openssl as enabled by default in help. Check for
|
||||
more headers.
|
||||
* Source/NSTask.m: Move #includes to front, remove redundancies.
|
||||
|
||||
* Source/GSXML.m ([(non-libxml)GSXMLNode +forwardInvocation]):
|
||||
Implement.
|
||||
|
||||
* Documentation/GNUmakefile: Remove gnustep-base.texi
|
||||
* Documentation/install.texi: Update.
|
||||
* Documentation/news.texi: Likewise.
|
||||
|
||||
2002-01-02 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Source/GSXML.m: Tidied some methods and added autogsdoc comments.
|
||||
|
|
|
@ -32,7 +32,7 @@ include ../Version
|
|||
include ../config.mak
|
||||
|
||||
# The documents to be generated
|
||||
DOCUMENT_NAME = coding-standards gnustep-base
|
||||
DOCUMENT_NAME = coding-standards
|
||||
|
||||
# The text documents to be generated
|
||||
DOCUMENT_TEXT_NAME = \
|
||||
|
@ -74,10 +74,6 @@ ANNOUNCE_TEXI_FILES = version.texi
|
|||
ANNOUNCE_TEXT_MAIN = announce.texi
|
||||
ANNOUNCE_DOC_INSTALL_DIR = Developer/Base/ReleaseNotes/$(VERSION)
|
||||
|
||||
STATUS_TEXI_FILES = version.texi
|
||||
STATUS_TEXT_MAIN = status.texi
|
||||
STATUS_DOC_INSTALL_DIR = Developer/Base/ReleaseNotes/$(VERSION)
|
||||
|
||||
-include Makefile.preamble
|
||||
|
||||
-include GNUmakefile.local
|
||||
|
|
|
@ -41,11 +41,6 @@ The gnustep-base-@value{GNUSTEP-BASE-VERSION}.tar.gz distribution file has
|
|||
been placed on @samp{@value{GNUSTEP-BASE-FTP-MACHINE}} in
|
||||
@samp{@value{GNUSTEP-BASE-FTP-DIRECTORY}}.
|
||||
@end ifset
|
||||
@ifclear GNUSTEP-BASE-FTP-MACHINE
|
||||
The libgnustep-base-@value{GNUSTEP-BASE-VERSION}.tar.gz distribution file has
|
||||
been placed on @samp{@value{GNUSTEP-BASE-SNAP-FTP-MACHINE}} in
|
||||
@samp{@value{GNUSTEP-BASE-SNAP-FTP-DIRECTORY}}.
|
||||
@end ifclear
|
||||
|
||||
The library requires gcc @value{GCC-VERSION} or higher.
|
||||
See the @samp{GNUstep-HOWTO}
|
||||
|
|
|
@ -105,7 +105,7 @@ library that implements a Foreign-Function Interface (FFI), such as the
|
|||
ffcall libraries. Use of ffcall is automatically enabled if the ffcall
|
||||
libraries are found, unless specifically disabled with @code{--disable-ffcall}.
|
||||
If disabled, the code reverts to the builtin method for stack frame handling,
|
||||
but this rarely works on non ix86 machines and is not supported.
|
||||
but this rarely works on non-ix86 machines and is not supported.
|
||||
|
||||
You need to have the ffcall libraries, which you can
|
||||
get from @url{ftp://www.gnustep.org/pub/gnustep/libs/} or
|
||||
|
@ -118,11 +118,13 @@ were not in the standard library). You can get this library from
|
|||
@subsection OpenSSL
|
||||
|
||||
GNUstep base has optional support for using the OpenSSL libraries for
|
||||
secure URL connections (with the NSURL classes). To enable this option
|
||||
you need to have the openssl libraries installed and add the option
|
||||
@code{--enable-openssl} when running the @file{configure} script. Note that
|
||||
the OpenSSL license is not compatible with GPL, so do not use this option
|
||||
if you want your programs to be GPL compatible.
|
||||
secure URL connections (with the NSURL classes). This functionality is
|
||||
compiled as a separate bundle since the OpenSSL license is not
|
||||
compatible with GPL, and in the hopes that if someone writes an openssl
|
||||
replacement, it can quickly be used by creating another bundle. The
|
||||
openssl libraries need to be installed for this to work. To disable
|
||||
this option add @code{--disable-openssl} when running the
|
||||
@file{configure} script.
|
||||
|
||||
@node Compilation, , Configuration, Top
|
||||
@section Compilation
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -7,6 +7,25 @@
|
|||
The currently released version of the library is
|
||||
@samp{@value{GNUSTEP-BASE-VERSION}}.
|
||||
|
||||
@section Noteworthy changes in version @samp{1.1.0}
|
||||
|
||||
@itemize @bullet
|
||||
@item Removed use of distributed lock to sync defaults file.
|
||||
@item Compiles on Darwin (but does not work yet).
|
||||
@item New tool autogsdoc for inline Objective-C documentation.
|
||||
@item Some NSBundle convienience methods for associating resources with
|
||||
libraries and tools (like a lightweight framework).
|
||||
@item URL classes improved and more robust.
|
||||
@item SSL classes compiled as a separate bundle due to license problems.
|
||||
@item Better operation in MinGW environment.
|
||||
@item New localization files.
|
||||
@item XML property lists
|
||||
@end itemize
|
||||
|
||||
@c ====================================================================
|
||||
@c Keep the next line just below the list of changes in most recent version.
|
||||
@ifclear ANNOUNCE-ONLY
|
||||
|
||||
@section Noteworthy changes in version @samp{1.0.2}
|
||||
|
||||
Mostly a bug fix release to work with the new gcc 3.0.
|
||||
|
@ -15,10 +34,6 @@ Mostly a bug fix release to work with the new gcc 3.0.
|
|||
@item Added support for special gcc 3.0 options (constant string support).
|
||||
@end itemize
|
||||
|
||||
@c ====================================================================
|
||||
@c Keep the next line just below the list of changes in most recent version.
|
||||
@ifclear ANNOUNCE-ONLY
|
||||
|
||||
@section Noteworthy changes in version @samp{1.0.1}
|
||||
|
||||
@itemize @bullet
|
||||
|
|
|
@ -1,567 +0,0 @@
|
|||
\input texinfo @c -*-texinfo-*-
|
||||
@c @setfilename objective-c.info
|
||||
|
||||
@ifinfo
|
||||
@format
|
||||
START-INFO-DIR-ENTRY
|
||||
* Objective-C: (objective-c). The GNU Objective-C Language Manual
|
||||
END-INFO-DIR-ENTRY
|
||||
@end format
|
||||
@end ifinfo
|
||||
|
||||
@ifinfo
|
||||
Copyright @copyright{} 1994 Andrew Kachites McCallum and Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided also that
|
||||
the entire resulting derived work is distributed under the terms of a
|
||||
permission notice identical to this one.
|
||||
|
||||
Permission is granted to copy and distribute translations of this manual
|
||||
into another language, under the above conditions for modified versions.
|
||||
@end ifinfo
|
||||
|
||||
@setchapternewpage odd
|
||||
@settitle Objective-C Language Manual
|
||||
@titlepage
|
||||
@finalout
|
||||
@title The GNU Objective-C Language Manual
|
||||
@author Andrew Kachites McCallum
|
||||
@page
|
||||
|
||||
@vskip 0pt plus 1filll
|
||||
Copyright @copyright{} 1994 Andrew Kachites McCallum and Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided also that
|
||||
the entire resulting derived work is distributed under the terms of a
|
||||
permission notice identical to this one.
|
||||
|
||||
Permission is granted to copy and distribute translations of this manual
|
||||
into another language, under the above conditions for modified versions.
|
||||
@end titlepage
|
||||
|
||||
@node Top, Introduction, (dir), (dir)
|
||||
@top Main Menu
|
||||
|
||||
This is the manual for the GNU Objective-C language.
|
||||
|
||||
@menu
|
||||
* Introduction::
|
||||
* Objects Messages and Classes::
|
||||
* Techniques::
|
||||
* Advanced Features::
|
||||
* Builtin Classes::
|
||||
|
||||
Appendices
|
||||
|
||||
* History and Comparisons::
|
||||
* Runtime Internals::
|
||||
* Hacking for Efficiency::
|
||||
* Debugging ObjC::
|
||||
* Language Summary:: A summary of ObjC syntax and semantics.
|
||||
|
||||
Indeces
|
||||
|
||||
* Concept Index::
|
||||
* Function Index::
|
||||
@end menu
|
||||
|
||||
@c ******************************************************************
|
||||
@node Introduction, Objects Messages and Classes, Top, Top
|
||||
@chapter Introduction
|
||||
|
||||
This manual describes the GNU Objective-C language. It is assumed that
|
||||
the reader is already familiar with ANSI C.
|
||||
|
||||
@section Overview
|
||||
|
||||
Objective-C is an object-oriented computer programming language. It is
|
||||
a superset of ANSI C and provides classes and message passing similar to
|
||||
Smalltalk. (xxx Lifted from FAQ. General question: Should I lift from
|
||||
the Objc FAQ? Is there a problem with this? If in doubt, I'll write it
|
||||
all myself.)
|
||||
|
||||
@menu
|
||||
* Caveats:: Flaws and requests for help.
|
||||
* Conventions:: How this manual is formatted.
|
||||
* Acknowledgements:: The authors and editors of this manual.
|
||||
@end menu
|
||||
|
||||
@node Caveats, Conventions, Introduction, Introduction
|
||||
@section Caveats
|
||||
|
||||
This manual is pre-alpha. I am now trying to determine the organization
|
||||
of manual. Afterward, sections will be filled in with text.
|
||||
|
||||
If you have suggestions for additional topics or organizational changes,
|
||||
please email them to @samp{mccallum@@cs.rochester.edu}.
|
||||
|
||||
|
||||
@node Conventions, Acknowledgements, Caveats, Introduction
|
||||
@section Conventions
|
||||
|
||||
@node Acknowledgements, , Conventions, Introduction
|
||||
@section Acknowledgements
|
||||
|
||||
|
||||
@c ******************************************************************
|
||||
@node Objects Messages and Classes, Techniques, Introduction, Top
|
||||
@chapter Objects, Messages and Classes
|
||||
|
||||
Object-oriented programming made up of objects, the messages they can
|
||||
receive and the classes that specify how objects are related.
|
||||
|
||||
@menu
|
||||
* Objects::
|
||||
* Messages::
|
||||
* Classes and Instances::
|
||||
* Inheritance of Subclasses::
|
||||
@end menu
|
||||
|
||||
@node Objects, Messages, Objects Messages and Classes, Objects Messages and Classes
|
||||
@section Objects Encapsulate Data and Operations
|
||||
|
||||
|
||||
|
||||
Procedures and data in a bundle. Abstraction.
|
||||
|
||||
@node Messages, Classes and Instances, Objects, Objects Messages and Classes
|
||||
@section Messages Request Operations
|
||||
@c @section Sending a Message to an Object
|
||||
|
||||
@smallexample
|
||||
[@var{receiver} @var{message}];
|
||||
@end smallexample
|
||||
|
||||
Messages with arguments.
|
||||
Return types.
|
||||
Argument types.
|
||||
Messages to @samp{nil}.
|
||||
|
||||
@node Classes and Instances, Inheritance of Subclasses, Messages, Objects Messages and Classes
|
||||
@section Classes Define Objects
|
||||
@c @section Classes and Instances
|
||||
@c @section Classes Define their Instances
|
||||
|
||||
Inheritance of methods and instance variables.
|
||||
Overriding methods.
|
||||
Syntax of @@interface, @@implementation.
|
||||
Messages to super.
|
||||
Creating and freeing instances.
|
||||
|
||||
@node Inheritance of Subclasses, , Classes and Instances, Objects Messages and Classes
|
||||
@section Inheritance of Subclasses
|
||||
@c @section Classes are Defined in an Inheritance Heirarchy
|
||||
@c @section Subclasses and Inheritance
|
||||
|
||||
@node Techniques, Advanced Features, Objects Messages and Classes, Top
|
||||
@chapter Programming Techniques and Conventions
|
||||
|
||||
@section Overriding Methods
|
||||
@section Abstract Superclasses
|
||||
@section Returning @samp{self}
|
||||
@section ...more here...
|
||||
|
||||
|
||||
@c ******************************************************************
|
||||
@node Advanced Features, Builtin Classes, Techniques, Top
|
||||
@chapter Advanced Features
|
||||
|
||||
@menu
|
||||
* Runtime Message Variation::
|
||||
* Forwarding a Message:: Using @samp{-forward::} and @samp{-performv::}.
|
||||
* Adding Methods to a Class:: Defining categories.
|
||||
* Posing as a Superclass::
|
||||
* Protocols of Messages::
|
||||
* Class initialization:: Defining @samp{+initialize}.
|
||||
* Encoding Types::
|
||||
* Structure of an Object:: Using @@defs().
|
||||
* Archiving:: Using @samp{-write:} and @samp{-read:}.
|
||||
@end menu
|
||||
|
||||
@node Runtime Message Variation, Forwarding a Message, Advanced Features, Advanced Features
|
||||
@section Runtime Message Variation
|
||||
|
||||
Describe @samp{-perform:} and friends.
|
||||
|
||||
@node Forwarding a Message, Adding Methods to a Class, Runtime Message Variation, Advanced Features
|
||||
@section Forwarding a Message
|
||||
@cindex Forwarding a Message
|
||||
|
||||
Describe @samp{-forward::} and @samp{-performv::}.
|
||||
|
||||
@node Adding Methods to a Class, Posing as a Superclass, Forwarding a Message, Advanced Features
|
||||
@section Adding Methods to a Class
|
||||
@cindex Categories
|
||||
|
||||
Categories.
|
||||
You can use this feature to add new methods to a class, but not to
|
||||
change methods that have already been defined in the class implementation.
|
||||
You can't add new instance variables (although I should include a
|
||||
footnote that shows the hack for getting around this).
|
||||
|
||||
@node Posing as a Superclass, Protocols of Messages, Adding Methods to a Class, Advanced Features
|
||||
@section Posing as a Superclass
|
||||
@cindex Posing
|
||||
|
||||
Describe @samp{poseAs:}.
|
||||
Changing Behavior of Inherited Methods.
|
||||
Substituting a your new class for some old class.
|
||||
You can use this to override methods that have already been defined in
|
||||
the implementation of the old class.
|
||||
|
||||
Use subclassing to override method behavior in new classes you write.
|
||||
Use posing to override method behavior in preexisting subclasses of the
|
||||
posed class.
|
||||
|
||||
@node Protocols of Messages, Class initialization, Posing as a Superclass, Advanced Features
|
||||
@section Defining a Message Protocol
|
||||
@cindex Protocols
|
||||
@cindex @@protocol
|
||||
|
||||
@node Class initialization, Encoding Types, Protocols of Messages, Advanced Features
|
||||
@section Class Initialization
|
||||
@cindex @samp{+initialize} method
|
||||
|
||||
Describe the @samp{+initialize} method.
|
||||
|
||||
@node Encoding Types, Structure of an Object, Class initialization, Advanced Features
|
||||
@section Encoding Types
|
||||
@cindex @@encode
|
||||
|
||||
@node Structure of an Object, Archiving, Encoding Types, Advanced Features
|
||||
@section Obtaining the Structure of an Object
|
||||
@cindex @@defs
|
||||
|
||||
@node Archiving, , Structure of an Object, Advanced Features
|
||||
@section Archiving Objects to a Stream
|
||||
@cindex Archiving
|
||||
@cindex Typed Stream
|
||||
|
||||
@section ...potential for more here...
|
||||
|
||||
@c ******************************************************************
|
||||
@node Builtin Classes, History and Comparisons, Advanced Features, Top
|
||||
@chapter Builtin Classes
|
||||
|
||||
@menu
|
||||
* The Object Class::
|
||||
* The Protocol Class::
|
||||
@end menu
|
||||
|
||||
@node The Object Class, The Protocol Class, Builtin Classes, Builtin Classes
|
||||
@section The @samp{Object} Class
|
||||
|
||||
@subsection Creating, Copying and Freeing
|
||||
|
||||
@deftypemethod Object {} @keyword{+alloc}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {} @keyword{+new}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {} @keyword{-init}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {} @keyword{-shallowCopy}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {} @keyword{-deepCopy}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {} @keyword{-deepen}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {} @keyword{-copy}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {} @keyword{-free}
|
||||
@end deftypemethod
|
||||
|
||||
|
||||
@subsection Identifying the Class
|
||||
|
||||
@deftypemethod Object {(Class*)} @keyword{-class}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(const char *)} @keyword{-name}
|
||||
@end deftypemethod
|
||||
|
||||
|
||||
@subsection Identifying and Comparing the Instance
|
||||
|
||||
@deftypemethod Object {} @keyword{-self}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(int)} @keyword{-hash}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-isEqual:} @var{anObject}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(int)} @keyword{-compare} @var{anObject}
|
||||
@end deftypemethod
|
||||
|
||||
@subsection Determining Object Type
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-isMetaClass}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-isClass}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-isInstance}
|
||||
@end deftypemethod
|
||||
|
||||
@subsection Determining Inheritance Relations
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-isKindOf:} (Class*)@var{aClassObj}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-isKindOfClassNamed:} (const char *)@var{aClassName}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-isMemberOf:} (Class*)@var{aClassObj}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-isMemberOfClassNamed:} (const char *)@var{aClassName}
|
||||
@end deftypemethod
|
||||
|
||||
@subsection Determining Messages Understood
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-instancesRespondTo:} (SEL)@var{aSel}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-respondsTo:} (SEL)@var{aSel}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(BOOL)} @keyword{-conformsTo:} (Protocol*)@var{aProtocolObj}
|
||||
@end deftypemethod
|
||||
|
||||
@subsection Method Lookup
|
||||
|
||||
@subsection Sending Messages Determined at Runtime
|
||||
|
||||
@subsection Forwarding
|
||||
|
||||
@subsection Posing
|
||||
|
||||
@subsection Enforcing Intentions
|
||||
|
||||
@subsection Announcing Errors
|
||||
|
||||
@subsection Archiving
|
||||
|
||||
@deftypemethod Object {(int)} @keyword{+version}
|
||||
<<Undocumented>>
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {} @keyword{+setVersion:} (int)@var{aVersion}
|
||||
<<Undocumented>>
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {(int)} @keyword{+streamVersion:} (TypedStream*)@var{aStream}
|
||||
<<Undocumented>>
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {} @keyword{-write:} (TypedStream*)@var{aStream}
|
||||
<<Undocumented>> Returns self.
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Object {} @keyword{-read:} (TypedStream*)@var{aStream}
|
||||
<<Undocumented>> Returns self.
|
||||
@end deftypemethod
|
||||
|
||||
|
||||
|
||||
@c ******************************************************************
|
||||
@node The Protocol Class, , The Object Class, Builtin Classes
|
||||
@section The @samp{Protocol} Class
|
||||
|
||||
@deftypemethod Protocol {(const char *)} @keyword{-name}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Protocol {(BOOL)} @keyword{-conformsTo:} (Protocol*)@var{aProtocolObj}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Protocol {(struct objc_method_description *)} @keyword{-descriptionForInstanceMethod:} (SEL)@var{aSel}
|
||||
@end deftypemethod
|
||||
|
||||
@deftypemethod Protocol {(struct objc_method_description *)} @keyword{-descriptionForClassMethod:} (SEL)@var{aSel}
|
||||
@end deftypemethod
|
||||
|
||||
|
||||
@c ******************************************************************
|
||||
@node History and Comparisons, Runtime Internals, Builtin Classes, Top
|
||||
@appendix Objective-C History and Comparisons
|
||||
|
||||
@menu
|
||||
* History of ObjC::
|
||||
* Smalltalk and ObjC::
|
||||
* C++ vs ObjC::
|
||||
* Other ObjC's::
|
||||
@end menu
|
||||
|
||||
@node History of ObjC, Smalltalk and ObjC, History and Comparisons, History and Comparisons
|
||||
@section History of Objective-C
|
||||
|
||||
@node Smalltalk and ObjC, C++ vs ObjC, History of ObjC, History and Comparisons
|
||||
@section Smalltalk and Objective-C
|
||||
|
||||
@node C++ vs ObjC, Other ObjC's, Smalltalk and ObjC, History and Comparisons
|
||||
@section Difference between Objective-C and C++
|
||||
|
||||
@node Other ObjC's, , C++ vs ObjC, History and Comparisons
|
||||
@section Difference between GNU Objective-C and others
|
||||
|
||||
@c ******************************************************************
|
||||
@node Runtime Internals, Hacking for Efficiency, History and Comparisons, Top
|
||||
@appendix Runtime Internals
|
||||
|
||||
Some notes on topics to be covered:
|
||||
Data structures: Symtab, Module, IvarList, MethodList, Category.
|
||||
Info bits.
|
||||
Runtime class lookup.
|
||||
Ivar lookup.
|
||||
Method lookup.
|
||||
version number.
|
||||
IMP.
|
||||
objc_class.
|
||||
arglist_t.
|
||||
sarray.
|
||||
|
||||
@menu
|
||||
* Method Lookup and Selectors::
|
||||
* Runtime Initialization::
|
||||
* Memory Management::
|
||||
* Metaclasses::
|
||||
* Archiving and Typed Streams::
|
||||
* Internal Hash Tables::
|
||||
@end menu
|
||||
|
||||
@node Method Lookup and Selectors, Runtime Initialization, Runtime Internals, Runtime Internals
|
||||
@section Method Lookup and Selectors
|
||||
@cindex Method lookup
|
||||
@cindex Selector
|
||||
|
||||
objc_msg_lookup. message to self and super.
|
||||
|
||||
@deftp {Data Type} IMP
|
||||
The @code{IMP} data type is a pointer to the function implementing an
|
||||
Objective-C method.
|
||||
@end deftp
|
||||
|
||||
@node Runtime Initialization, Memory Management, Method Lookup and Selectors, Runtime Internals
|
||||
@section Runtime Initialization
|
||||
|
||||
@node Memory Management, Metaclasses, Runtime Initialization, Runtime Internals
|
||||
@section Memory Management
|
||||
|
||||
class_create_instance, object_dispose, object_copy...
|
||||
|
||||
For instance, @samp{Object}'s @samp{-alloc} method is implemented like
|
||||
this:
|
||||
@smallexample
|
||||
+ alloc
|
||||
@{
|
||||
return class_create_instance(self);
|
||||
@}
|
||||
@end smallexample
|
||||
|
||||
@node Metaclasses, Archiving and Typed Streams, Memory Management, Runtime Internals
|
||||
@section Metaclasses
|
||||
|
||||
Move this to "Advanced Features"? I'm not sure we want to talk about it
|
||||
as an implementation detail.
|
||||
|
||||
@node Archiving and Typed Streams, Internal Hash Tables, Metaclasses, Runtime Internals
|
||||
@section Archiving and Typed Streams
|
||||
@cindex Archiving an object to a stream
|
||||
|
||||
@node Internal Hash Tables, , Archiving and Typed Streams, Runtime Internals
|
||||
@section Internal Hash Tables
|
||||
|
||||
|
||||
@c ******************************************************************
|
||||
@node Hacking for Efficiency, Debugging ObjC, Runtime Internals, Top
|
||||
@appendix Hacking for Efficiency
|
||||
|
||||
@menu
|
||||
* Address of a Method::
|
||||
* Address of an Ivar::
|
||||
@end menu
|
||||
|
||||
@node Address of a Method, Address of an Ivar, Hacking for Efficiency, Hacking for Efficiency
|
||||
@section Getting the Address of a Method
|
||||
|
||||
@node Address of an Ivar, , Address of a Method, Hacking for Efficiency
|
||||
@section Getting the Address of an Instance Variable
|
||||
|
||||
@c ******************************************************************
|
||||
@node Debugging ObjC, Language Summary, Hacking for Efficiency, Top
|
||||
@appendix Debugging Objective-C
|
||||
|
||||
@c ******************************************************************
|
||||
@node Language Summary, Concept Index, Debugging ObjC, Top
|
||||
@appendix Language Summary
|
||||
|
||||
@menu
|
||||
* Directives::
|
||||
* Declaring Methods::
|
||||
* Types and Keywords::
|
||||
* Formal Grammar::
|
||||
@end menu
|
||||
|
||||
@node Directives, Declaring Methods, Language Summary, Language Summary
|
||||
@section Directives
|
||||
|
||||
@itemize @bullet
|
||||
@item @@defs
|
||||
@item @@encode
|
||||
@item @@end
|
||||
@item @@implementation
|
||||
@item @@interface
|
||||
@item @@protocol
|
||||
@item @@public
|
||||
@item @@selector
|
||||
@end itemize
|
||||
|
||||
@node Declaring Methods, Types and Keywords, Directives, Language Summary
|
||||
@section Declaring Methods
|
||||
|
||||
Difference between -,+. Return types of methods. Argument types of
|
||||
methods.
|
||||
|
||||
@node Types and Keywords, Formal Grammar, Declaring Methods, Language Summary
|
||||
@section Types and Keywords
|
||||
|
||||
BOOL, Class, id, IMP, SEL, STR.
|
||||
|
||||
nil, Nil.
|
||||
|
||||
@node Formal Grammar, , Types and Keywords, Language Summary
|
||||
@section Formal Grammar of Objective-C
|
||||
|
||||
@c ******************************************************************
|
||||
@node Concept Index, Function Index, Language Summary, Top
|
||||
@unnumbered Concept Index
|
||||
@printindex cp
|
||||
|
||||
@c ******************************************************************
|
||||
@node Function Index, , Concept Index, Top
|
||||
@unnumbered Function Index
|
||||
@printindex fn
|
||||
|
||||
|
||||
@bye
|
|
@ -1,425 +0,0 @@
|
|||
@c -*-texinfo-*-
|
||||
@chapter Status Report
|
||||
|
||||
@ifset TEXT-ONLY
|
||||
@include version.tmpl.texi
|
||||
@end ifset
|
||||
|
||||
The gnustep-base library is nearly complete, although a few things could
|
||||
be fixed here and there and it could be ported to more systems. This
|
||||
list is probably out of date. In the future we will be primarily adding
|
||||
features and performance tuning.
|
||||
Please send corrections to @email{fedor@@gnu.org}.
|
||||
|
||||
@emph{Key:}
|
||||
|
||||
@table @strong
|
||||
@item [10]
|
||||
Complete and tested.
|
||||
@item [8]
|
||||
Missing a few non-core methods, definitely usable.
|
||||
@item [6]
|
||||
Missing several methods, but core is there, usable.
|
||||
@item [4]
|
||||
Begun, but missing core functionality, not usable.
|
||||
@item [2]
|
||||
Skeleton.
|
||||
@item [0]
|
||||
Nothing there.
|
||||
@item [?]
|
||||
Unknown status.
|
||||
@end table
|
||||
|
||||
@section Classes
|
||||
|
||||
(Many classes do not raise the proper NSExceptions yet.)
|
||||
|
||||
@table @strong
|
||||
@item NSArchiver:: [9]
|
||||
@item NSArray:: [9]
|
||||
@item NSAssertionHandler:: [9]
|
||||
@item NSAttributedString:: [9]
|
||||
@item NSAutoreleasePool:: [9]
|
||||
But not exception- safe
|
||||
@item NSBundle:: [9]
|
||||
@item NSCalendarDate:: [8]
|
||||
@item NSCharacterSet:: [9]
|
||||
@item NSCoder:: [9]
|
||||
@item NSConditionLock:: [8]
|
||||
@item NSConnection:: [9]
|
||||
@item NSCountedSet:: [9]
|
||||
@item NSData:: [9]
|
||||
@item NSDate:: [9]
|
||||
@item NSDeserializer:: [8]
|
||||
@item NSDictionary:: [9]
|
||||
@item NSDistantObject:: [8]
|
||||
@item NSDistributedLock:: [9]
|
||||
@item NSEnumerator:: [9]
|
||||
@item NSException:: [9]
|
||||
But this needs integration with new, better
|
||||
@item NSFileHandle:: [9]
|
||||
@item NSFileManager:: [9]
|
||||
@item NSHashTable:: [9]
|
||||
@item NSHost:: [9]
|
||||
@item NSInvocation:: [7]
|
||||
@item NSLock:: [9]
|
||||
@item NSMapTable:: [9]
|
||||
@item NSMethodSignature:: [7]
|
||||
@item NSMutableArray:: [9]
|
||||
@item NSMutableCharacterSet:: [8]
|
||||
@item NSMutableData:: [9]
|
||||
@item NSMutableDictionary:: [9]
|
||||
@item NSMutableSet:: [9]
|
||||
@item NSMutableString:: [9]
|
||||
@item NSNotification:: [9]
|
||||
@item NSNotificationCenter:: [9]
|
||||
@item NSNotificationQueue:: [6]
|
||||
@item NSNumber:: [9]
|
||||
@item NSObject:: [10]
|
||||
@item NSProcessInfo:: [9]
|
||||
@item NSProxy:: [8]
|
||||
@item NSRecursiveLock:: [9]
|
||||
@item NSRunLoop:: [9]
|
||||
@item NSScanner:: [9]
|
||||
@item NSSerializer:: [8]
|
||||
@item NSSet:: [9]
|
||||
@item NSString:: [9]
|
||||
@item NSTask:: [8]
|
||||
@item NSThread:: [8]
|
||||
@item NSTimeZone:: [9]
|
||||
@item NSTimeZoneDetail:: [9]
|
||||
@item NSTimer:: [7]
|
||||
@item NSUnarchiver:: [9]
|
||||
@item NSUserDefaults:: [9]
|
||||
@item NSValue:: [9]
|
||||
@end table
|
||||
|
||||
@section Cross-Class Projects, or GNU-related foundations for GNUstep classes
|
||||
|
||||
@table @strong
|
||||
@item Finish subclasses of Port class: Ports based on UDP, pflocal
|
||||
sockets, and shared memory.
|
||||
@item String classes will get some organizational work.
|
||||
@end table
|
||||
|
||||
|
||||
@section Protocols
|
||||
|
||||
@table @strong
|
||||
@item NSCoding:: [9]
|
||||
@item NSCopying:: [9]
|
||||
@item NSLocking:: [9]
|
||||
@item NSMutableCopying:: [9]
|
||||
@item NSObjCTypeSerializationCallBack:: [9]
|
||||
@item NSObject (Protocol):: [9]
|
||||
@end table
|
||||
|
||||
@section Functions
|
||||
|
||||
@subsection Memory Allocation Functions
|
||||
|
||||
@table @strong
|
||||
@item [8] Get the Virtual Memory Page Size
|
||||
@example
|
||||
`unsigned NSPageSize (void)'
|
||||
`unsigned NSLogPageSize (void)'
|
||||
`unsigned NSRoundDownToMultipleOfPageSize (unsigned BYTECOUNT)'
|
||||
`unsigned NSRoundUpToMultipleOfPageSize (unsigned BYTECOUNT)'
|
||||
@end example
|
||||
|
||||
@item [2] Get the Amount of Real Memory
|
||||
`unsigned NSRealMemoryAvailable (void)'
|
||||
|
||||
@item [8] Allocate or Free Virtual Memory
|
||||
@example
|
||||
`void *NSAllocateMemoryPages (unsigned BYTECOUNT)'
|
||||
`void NSDeallocateMemoryPages (void *POINTER, unsigned BYTECOUNT)'
|
||||
`void NSCopyMemoryPages (const void *SOURCE, void *DESTINATION, unsigned BYTECOUNT)'
|
||||
@end example
|
||||
|
||||
@item [8] Child and Merge Zones
|
||||
@example
|
||||
void NSMergeZone(NSZone *zonep)
|
||||
NSZone *NSCreateChildZone(NSZone *parentZone, size_t startSize, size_t granularity, int canFree)
|
||||
@end example
|
||||
|
||||
@item [9] Get a Zone
|
||||
@example
|
||||
`NSZone *NSCreateZone (unsigned STARTSIZE, unsigned GRANULARITY, BOOL CANFREE)'
|
||||
`NSZone *NSDefaultMallocZone (void)'
|
||||
`NSZone *NSZoneFromPointer (void *POINTER)'
|
||||
@end example
|
||||
|
||||
@item [10] Allocate or Free Memory in a Zone
|
||||
@example
|
||||
`void *NSZoneMalloc (NSZone *ZONE,'
|
||||
`void *NSZoneCalloc (NSZone *ZONE, unsigned NUMELEMS, unsigned NUMBYTES)'
|
||||
`void *NSZoneRealloc (NSZone *ZONE, void *POINTER, unsigned SIZE)'
|
||||
`void NSRecycleZone (NSZone *ZONE)'
|
||||
`void NSZoneFree (NSZone *ZONE, void *POINTER)'
|
||||
@end example
|
||||
|
||||
@item [9] Name a Zone
|
||||
@example
|
||||
But the function names are wrong
|
||||
`void NSSetZoneName (NSZone *ZONE, NSString *name)'
|
||||
`NSString *NSZoneName (NSZone *ZONE)'
|
||||
@end example
|
||||
@end table
|
||||
|
||||
@subsection Object Allocation Functions
|
||||
|
||||
@table @strong
|
||||
@item [10] Allocate or Free an Object
|
||||
@example
|
||||
`NSObject *NSAllocateObject (Class ACLASS, unsigned EXTRABYTES, NSZone *ZONE)'
|
||||
`NSObject *NSCopyObject(NSObject *ANOBJECT, unsigned EXTRABYTES, NSZone *ZONE)'
|
||||
`void NSDeallocateObject (NSObject *ANOBJECT)'
|
||||
@end example
|
||||
|
||||
@item [9] Decide Whether to Retain an Object
|
||||
`BOOL NSShouldRetainWithZone (NSObject *ANOBJECT, NSZone *REQUESTEDZONE)'
|
||||
|
||||
@item [9] Modify the Number of References to an Object
|
||||
@example
|
||||
`BOOL NSDecrementExtraRefCountWasZero(id ANOBJECT)'
|
||||
`void NSIncrementExtraRefCount(id ANOBJECT)'
|
||||
@end example
|
||||
@end table
|
||||
|
||||
@subsection Error-Handling Functions
|
||||
|
||||
@table @strong
|
||||
@item [9] Change the Top-level Error Handler
|
||||
@example
|
||||
``NSUncaughtException'Handler *`NSGetUncaughtException'Handler(void)'
|
||||
`void `NSSetUncaughtException'Handler(`NSUncaughtException'Handler *HANDLER)'
|
||||
@end example
|
||||
|
||||
@item [9] Macros to Handle an Exception
|
||||
@example
|
||||
`NS_DURING'
|
||||
`NS_ENDHANDLER'
|
||||
`NS_HANDLER'
|
||||
`NS_VALUERETURN(VALUE, TYPE)'
|
||||
`NS_VOIDRETURN'
|
||||
@end example
|
||||
|
||||
@item [9] Call the Assertion Handler from the Body of an Objective-C Method
|
||||
@example
|
||||
`NSAssert(BOOL CONDITION, NSString *DESCRIPTION)'
|
||||
`NSAssert1(BOOL CONDITION, NSString *DESCRIPTION, ARG)'
|
||||
`NSAssert2(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2)'
|
||||
`NSAssert3(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3)'
|
||||
`NSAssert4(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4)'
|
||||
`NSAssert5(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4, ARG5)'
|
||||
@end example
|
||||
|
||||
@item [9] Call the Assertion Handler from the Body of a C Function
|
||||
@example
|
||||
`NSCAssert(BOOL CONDITION, NSString *DESCRIPTION)'
|
||||
`NSCAssert1(BOOL CONDITION, NSString *DESCRIPTION, ARG)'
|
||||
`NSCAssert2(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2)'
|
||||
`NSCAssert3(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3)'
|
||||
`NSCAssert4(BOOL CONDITION, NSString *DESCRIPTION, arg1, ARG2, ARG3, ARG4)'
|
||||
`NSCAssert5(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4, ARG5)'
|
||||
@end example
|
||||
|
||||
@item [9] Validate a Parameter
|
||||
@example
|
||||
`NSParameterAssert(BOOL CONDITION)'
|
||||
`NSCParameterAssert(BOOL CONDITION)'
|
||||
@end example
|
||||
@end table
|
||||
|
||||
@subsection Geometric Functions
|
||||
|
||||
@table @strong
|
||||
@item [10] Create Basic Structures
|
||||
@example
|
||||
`NSPoint NSMakePoint(float X, float Y)'
|
||||
`NSSize NSMakeSize(float W, float H)'
|
||||
`NSRect NSMakeRect(float X, float Y, float W, float H)'
|
||||
`NSRange NSMakeRange(unsigned int LOCATION, unsigned int LENGTH)'
|
||||
@end example
|
||||
|
||||
@item [10] Get a Rectangle's Coordinates
|
||||
@example
|
||||
`float NSMaxX(NSRect ARECT)'
|
||||
`float NSMaxY(NSRect ARECT)'
|
||||
`float NSMidX(NSRect ARECT)'
|
||||
`float NSMidY(NSRect ARECT)'
|
||||
`float NSMinX(NSRect ARECT)'
|
||||
`float NSMinY(NSRect ARECT)'
|
||||
`float NSWidth(NSRect ARECT)'
|
||||
`float NSHeight(NSRect ARECT)'
|
||||
@end example
|
||||
|
||||
@item [10] Modify a Copy of a Rectangle
|
||||
@example
|
||||
`NSRect NSInsetRect(NSRect ARECT, float DX, float DY)'
|
||||
`NSRect NSOffsetRect(NSRect ARECT, float DX, float DY)'
|
||||
`void NSDivideRect(NSRect INRECT, NSRect *SLICE, NSRect *REMAINDER, float AMOUNT, NSRectEdge EDGE)'
|
||||
`NSRect NSIntegralRect(NSRect ARECT)'
|
||||
@end example
|
||||
|
||||
@item [10] Compute a Third Rectangle from Two Rectangles
|
||||
@example
|
||||
`NSRect NSUnionRect(NSRect ARECT, NSRect BRECT)'
|
||||
`NSRect NSIntersectionRect(NSRect ARECT, NSRect BRECT)'
|
||||
@end example
|
||||
|
||||
@item [10] Test Geometric Relationships
|
||||
@example
|
||||
`BOOL NSEqualRects(NSRect ARECT, NSRect BRECT)'
|
||||
`BOOL NSEqualSizes(NSSize ASIZE, NSSize BSIZE)'
|
||||
`BOOL NSEqualPoints(NSPoint APOINT, NSPoint BPOINT)'
|
||||
`BOOL NSIsEmptyRect(NSRect ARECT)'
|
||||
`BOOL NSMouseInRect(NSPoint APOINT, NSRect ARECT, BOOL FLIPPED)'
|
||||
`BOOL NSPointInRect(NSPoint APOINT, NSRect ARECT)'
|
||||
`BOOL NSContainsRect(NSRect ARECT, NSRect BRECT)'
|
||||
@end example
|
||||
|
||||
@item [10] Get a String Representation
|
||||
@example
|
||||
`NSString *NSStringFromPoint(NSPoint APOINT)'
|
||||
`NSString *NSStringFromRect(NSRect ARECT)'
|
||||
`NSString *NSStringFromSize(NSSize ASIZE)'
|
||||
@end example
|
||||
|
||||
@end table
|
||||
|
||||
@subsection Range Functions
|
||||
|
||||
@table @strong
|
||||
@item [9] Query a Range
|
||||
@example
|
||||
`BOOL NSEqualRanges(NSRange RANGE1, NSRange RANGE2)'
|
||||
`unsigned NSMaxRange(NSRange RANGE)'
|
||||
`BOOL NSLocationInRange(unsigned LOCATION, NSRange RANGE)'
|
||||
@end example
|
||||
|
||||
@item [9] Compute a Range from Two Other Ranges
|
||||
@example
|
||||
`NSRange NSUnionRange(NSRange RANGE1, NSRange RANGE2)'
|
||||
`NSRange NSIntersectionRange(NSRange RANGE1, NSRange RANGE2)'
|
||||
@end example
|
||||
|
||||
@item [9] Get a String Representation
|
||||
`NSString *NSStringFromRange(NSRange RANGE)'
|
||||
@end table
|
||||
|
||||
@subsection Hash Table Functions
|
||||
|
||||
@table @strong
|
||||
@item [8]
|
||||
@example
|
||||
|
||||
Create a Table
|
||||
`NSHashTable * NSCreateHashTable(NSHashTableCallBacks CALLBACKS, unsigned CAPACITY)'
|
||||
`NSHashTable * NSCreateHashTableWithZone(NSHashTableCallBacks CALLBACKS, unsigned CAPACITY, NSZone * ZONE)'
|
||||
`NSHashTable * NSCopyHashTableWithZone(NSHashTable * TABLE, NSZone * ZONE)'
|
||||
|
||||
Free a Table
|
||||
`void NSFreeHashTable(NSHashTable * TABLE)'
|
||||
`void NSResetHashTable(NSHashTable * TABLE)'
|
||||
|
||||
Compare Two Tables
|
||||
`BOOL NSCompareHashTables(NSHashTable * TABLE1, NSHashTable * TABLE2)'
|
||||
|
||||
Get the Number of Items
|
||||
`unsigned NSCountHashTable(NSHashTable * TABLE)'
|
||||
Returns the number of elements in TABLE.
|
||||
|
||||
Retrieve Items
|
||||
`void * NSHashGet(NSHashTable * TABLE, const void * POINTER)'
|
||||
`NSArray * NSAllHashTableObjects(NSHashTable * TABLE)'
|
||||
`NSHashEnumerator NSEnumerateHashTable(NSHashTable * TABLE)'
|
||||
`void * NSNextHashEnumeratorItem(NSHashEnumerator * ENUMERATOR)'
|
||||
|
||||
Add or Remove an Item
|
||||
`void NSHashInsert(NSHashTable * TABLE, const void * POINTER)'
|
||||
`void NSHashInsertKnownAbsent(NSHashTable * TABLE, const void * POINTER)'
|
||||
`void * NSHashInsertIfAbsent(NSHashTable * TABLE, const void * POINTER)'
|
||||
`void NSHashRemove(NSHashTable * TABLE, const void * POINTER)'
|
||||
|
||||
Get a String Representation
|
||||
`NSString * NSStringFromHashTable(NSHashTable * TABLE)'
|
||||
@end example
|
||||
@end table
|
||||
|
||||
@subsection Map Table Functions
|
||||
|
||||
@table @strong
|
||||
@item [8]
|
||||
@example
|
||||
|
||||
Create a Table
|
||||
`NSMapTable * NSCreateMapTable(NSMapTableKeyCallBacks KEYCALLBACKS, NSMapTableValueCallBacks VALUECALLBACKS, unsigned CAPACITY)'
|
||||
`NSMapTable * NSCreateMapTableWithZone(NSMapTableKeyCallBacks KEYCALLBACKS, NSMapTableValueCallBacks VALUECALLBACKS, unsigned CAPACITY,'
|
||||
`NSMapTable * NSCopyMapTableWithZone(NSMapTable * TABLE, NSZone * ZONE)'
|
||||
|
||||
Free a Table
|
||||
`void NSFreeMapTable(NSMapTable * TABLE)'
|
||||
`void NSResetMapTable(NSMapTable * TABLE)'
|
||||
|
||||
Compare Two Tables:
|
||||
`BOOL NSCompareMapTables(NSMapTable * TABLE1, NSMapTable * TABLE2)'
|
||||
|
||||
Get the Number of Items
|
||||
`unsigned NSCountMapTable(NSMapTable * TABLE)'
|
||||
|
||||
Retrieve Items
|
||||
`BOOL NSMapMember(NSMapTable * TABLE, const void * KEY, void ** ORIGINALKEY, void ** VALUE)'
|
||||
`void * NSMapGet(NSMapTable * TABLE,'
|
||||
`NSMapEnumerator NSEnumerateMapTable(NSMapTable * TABLE)'
|
||||
`BOOL NSNextMapEnumeratorPair(NSMapEnumerator * ENUMERATOR, void ** KEY, void ** VALUE)'
|
||||
`NSArray * NSAllMapTableKeys(NSMapTable * TABLE)'
|
||||
`NSArray * NSAllMapTableValues(NSMapTable * TABLE)'
|
||||
|
||||
Add or Remove an Item
|
||||
`void NSMapInsert(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
|
||||
`void * NSMapInsertIfAbsent(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
|
||||
`void NSMapInsertKnownAbsent(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
|
||||
`void NSMapRemove(NSMapTable * TABLE,'
|
||||
`NSString *NSStringFromMapTable(NSMapTable *TABLE)'
|
||||
@end example
|
||||
@end table
|
||||
|
||||
@subsection Miscellaneous Functions
|
||||
|
||||
@table @strong
|
||||
@item [7] Get Information about a User
|
||||
@example
|
||||
`NSString *NSUserName(void)'
|
||||
`NSString *NSHomeDirectory(void)'
|
||||
`NSString *NSHomeDirectoryForUser(NSString *USERNAME)'
|
||||
@end example
|
||||
|
||||
@item [9] Log an Error Message
|
||||
@example
|
||||
`void NSLog(NSString *format,...'
|
||||
`void NSLogv(NSString * FORMAT, va_list ARGS)'
|
||||
@end example
|
||||
|
||||
@item [8] Get Localized Versions of Strings
|
||||
@example
|
||||
`NSString * NSLocalizedString(NSString * KEY, NSString * COMMENT)'
|
||||
`NSString * NSLocalizedStringFromTable(NSString * KEY, NSString * TABLENAME, NSString * COMMENT)'
|
||||
`NSString * NSLocalizedStringFromTableInBundle(NSString * KEY, NSString * TABLENAME, NSBundle * ABUNDLE, NSString * COMMENT)'
|
||||
@end example
|
||||
|
||||
@item [9] Convert to and from a String
|
||||
@example
|
||||
`Class NSClassFromString(NSString *ACLASSNAME)'
|
||||
`SEL NSSelectorFromString(NSString *ASELECTORNAME)'
|
||||
`NSString *NSStringFromClass(Class ACLASS)'
|
||||
`NSString *NSStringFromSelector(SEL ASELECTOR)'
|
||||
@end example
|
||||
|
||||
@item [3] Compose a Message To Be Sent Later to an Object
|
||||
@example
|
||||
`NSInvocation *NS_INVOCATION(Class ACLASS, INSTANCEMESSAGE)'
|
||||
`NSInvocation *NS_MESSAGE(id ANOBJECT, INSTANCEMESSAGE)'
|
||||
@end example
|
||||
@end table
|
|
@ -51,9 +51,6 @@
|
|||
/* Define if libxml available */
|
||||
#undef HAVE_LIBXML
|
||||
|
||||
/* Define if openssl available */
|
||||
#undef HAVE_OPENSSL
|
||||
|
||||
#undef HAVE_PTS_STREAM_MODULES
|
||||
#undef HAVE_UINTMAX_T
|
||||
|
||||
|
@ -256,9 +253,15 @@
|
|||
/* Define if you have the <sys/ndir.h> header file. */
|
||||
#undef HAVE_SYS_NDIR_H
|
||||
|
||||
/* Define if you have the <sys/param.h> header file. */
|
||||
#undef HAVE_SYS_PARAM_H
|
||||
|
||||
/* Define if you have the <sys/rusage.h> header file. */
|
||||
#undef HAVE_SYS_RUSAGE_H
|
||||
|
||||
/* Define if you have the <sys/signal.h> header file. */
|
||||
#undef HAVE_SYS_SIGNAL_H
|
||||
|
||||
/* Define if you have the <sys/socket.h> header file. */
|
||||
#undef HAVE_SYS_SOCKET_H
|
||||
|
||||
|
@ -283,6 +286,9 @@
|
|||
/* Define if you have the <sys/vfs.h> header file. */
|
||||
#undef HAVE_SYS_VFS_H
|
||||
|
||||
/* Define if you have the <sys/wait.h> header file. */
|
||||
#undef HAVE_SYS_WAIT_H
|
||||
|
||||
/* Define if you have the <syslog.h> header file. */
|
||||
#undef HAVE_SYSLOG_H
|
||||
|
||||
|
|
|
@ -2957,6 +2957,13 @@ fatalErrorFunction(void *ctx, const char *msg, ...)
|
|||
NSStringFromClass(self), NSStringFromSelector(_cmd));
|
||||
return nil;
|
||||
}
|
||||
+ (void) forwardInvocation: (NSInvocation*)anInvocation
|
||||
{
|
||||
NSLog(@"Not built with libxml ... %@ unusable in %@",
|
||||
NSStringFromClass([self class]),
|
||||
NSStringFromSelector([anInvocation selector]));
|
||||
return;
|
||||
}
|
||||
- (id) init
|
||||
{
|
||||
NSLog(@"Not built with libxml ... %@ unusable in %@",
|
||||
|
|
|
@ -50,16 +50,45 @@
|
|||
#ifdef __FreeBSD__
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
#ifndef __MINGW__
|
||||
#include <sys/signal.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_WINDOWS_H
|
||||
# include <windows.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_SYS_SIGNAL_H
|
||||
#include <sys/signal.h>
|
||||
#endif
|
||||
#if HAVE_SIGNAL_H
|
||||
#include <signal.h>
|
||||
#endif
|
||||
#if HAVE_SYS_FILE_H
|
||||
#include <sys/file.h>
|
||||
#endif
|
||||
#if HAVE_SYS_FCNTL_H
|
||||
#include <sys/fcntl.h>
|
||||
#endif
|
||||
#if HAVE_SYS_IOCTL_H
|
||||
#include <sys/ioctl.h>
|
||||
#endif
|
||||
#if HAVE_SYS_WAIT_H
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
#if HAVE_SYS_PARAM_H
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If we are on a streams based system, we need to include stropts.h
|
||||
* for definitions needed to set up slave pseudo-terminal stream.
|
||||
*/
|
||||
#if HAVE_SYS_STROPTS_H
|
||||
#include <sys/stropts.h>
|
||||
#endif
|
||||
|
||||
#ifndef MAX_OPEN
|
||||
#define MAX_OPEN 64
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If we don't have NFILE, default to 256 open descriptors.
|
||||
*/
|
||||
|
@ -97,34 +126,6 @@ static void handleSignal(int sig)
|
|||
@end
|
||||
#define NSConcreteTask NSConcreteUnixTask
|
||||
|
||||
#if HAVE_SIGNAL_H
|
||||
#include <signal.h>
|
||||
#endif
|
||||
#if HAVE_SYS_FILE_H
|
||||
#include <sys/file.h>
|
||||
#endif
|
||||
#if HAVE_SYS_FCNTL_H
|
||||
#include <sys/fcntl.h>
|
||||
#endif
|
||||
#if HAVE_SYS_IOCTL_H
|
||||
#include <sys/ioctl.h>
|
||||
#endif
|
||||
#if HAVE_SYS_WAIT_H
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If we are on a streams based system, we need to include stropts.h
|
||||
* for definitions needed to set up slave pseudo-terminal stream.
|
||||
*/
|
||||
#if HAVE_SYS_STROPTS_H
|
||||
#include <sys/stropts.h>
|
||||
#endif
|
||||
|
||||
#ifndef MAX_OPEN
|
||||
#define MAX_OPEN 64
|
||||
#endif
|
||||
|
||||
static int
|
||||
pty_master(char* name, int len)
|
||||
{
|
||||
|
|
|
@ -582,7 +582,7 @@ esac
|
|||
AC_DEFINE_UNQUOTED(HAVE_PTS_STREAM_MODULES, $HAVE_PTS_STREAM_MODULES)
|
||||
AC_SUBST(HAVE_PTS_STREAM_MODULES)
|
||||
|
||||
AC_CHECK_HEADERS(libc.h limits.h malloc.h memory.h string.h signal.h sys/file.h sys/fcntl.h sys/ioctl.h sys/stropts.h unistd.h utime.h stdint.h sys/inttypes.h)
|
||||
AC_CHECK_HEADERS(libc.h limits.h malloc.h memory.h string.h signal.h sys/signal.h sys/param.h sys/wait.h sys/file.h sys/fcntl.h sys/ioctl.h sys/stropts.h unistd.h utime.h stdint.h sys/inttypes.h)
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
# This function needed by NSThread.m
|
||||
|
@ -854,7 +854,7 @@ AC_SUBST(HAVE_LIBXML)
|
|||
# Check OpenSSL for HTTPS support.
|
||||
#--------------------------------------------------------------------
|
||||
AC_ARG_ENABLE(openssl,
|
||||
[ --enable-openssl Enable support for openssl in URL classes],,
|
||||
[ --disable-openssl Disable support for openssl in URL classes],,
|
||||
enable_openssl=yes)
|
||||
AC_ARG_WITH(openssl-include,
|
||||
[ --with-openssl-include=PATH include path for openssl headers],
|
||||
|
|
Loading…
Reference in a new issue