rfm@gnu.org
)Version: $Revision$
Date: $Date$
Copyright: (C) 2005 Free Software Foundation, Inc.
The GNUstep Base library is a free software package implementing the API of the OpenStep Foundation Kit (tm), including later additions. This documentation package describes the core of the Base library, for documentation on additional classes, see the BaseAdditions documentation package.
Read the Release Notes for the current release.
GNUstep is generally compatible with the OpenStep specification and with recent developments of the MacOS (cocoa) API. Where MacOS deviates from the OpenStep API, GNUstep generally attempts to support both versions. In some cases the newer MacOS APIs are incompatible with OpenStep, and GNUstep usually supports the richer version. See the OpenStep Compliance section for more information on OpenStep Compliance.
In order to deal with compatibility issues, GNUstep uses two mechanisms - it provides conditionally compiled sections of the library header files, so that software can be built that will conform strictly to a particular API, and it provides user default settings to control the behavior of the library at runtime.
Adding an option to a makefile to define one of the following preprocessor constants will modify the API visible to software being compiled -
NB These preprocessor constants are used in
developer code (ie the code that users of GNUstep write)
rather than by the GNUstep software itself. They permit a
developer to ensure that he/she does not write code which depends
upon API not present on other implementations (in practice,
MacOS-X or some old OPENSTEP systems).
The actual GNUstep libraries are always built with the full
GNUstep API in place, so that the feature set is as consistent
as possible.
The presence of these macros is also used by autogsdoc to generate information about which version of the API a particular feature belongs to.
An array of strings that lists debug levels to be used within the program. These debug levels are merged with any which were set on the command line or added programmatically to the set given by the [NSProcessInfo-debugSet] method.
Setting the user default GSLogSyslog
to
YES
will cause log/debug output to be sent to
the syslog facility (on systems which support it), rather
than to the standard error stream. This is useful in
environments where stderr has been re-used strangely for
some reason.
On mswindows, where syslog does not exist, this flag instead
controls whether log/debug output is sent to the windows
event log.
Setting the user default GSLogThread
to
YES
will cause NSLog and debug output to
include the current thread in the logged message.
This is useful for debugging multi-threaded applications.
Setting the user default GSMacOSXCompatible
to
YES
will cause MacOS compatible behavior to be
the default at runtime. This default may however be overridden
to provide more fine grained control of system behavior.
Specifies whether the functions for producing strings describing geometric structures (NSStringFromPoint(), NSStringFromSize(), and NSStringFromRect()) should produce strings conforming to the OpenStep specification or to MacOS-X behavior. The functions for parsing those strings should cope with both cases anyway.
May be used to specify a default SOCKS5 server (and optionally
a port separated from the server by a colon) to which tcp/ip
connections made using the NSFileHandle extension methods
should be directed.
This default overrides the SOCKS5_SERVER and SOCKS_SERVER
environment variables.
Used to specify the name of the timezone to be used by the NSTimeZone class.
Specifies whether text property-list output should be in the default MacOS-X format (XML), or in the more human readable (but less powerful) original OpenStep format.
Reading of property lists is supported in either format, but only if GNUstep is built with the libxml library (which is needed to handle XML parsing).
NB. MacOS-X generates illegal XML for some strings - those which contain characters not legal in XML. GNUstep always generates legal XML, at the cost of a certain degree of compatibility. GNUstep XML property lists use a backslash to escape illegal characters, and consequently any string containing either a backslash or an illegal character will be written differently to the same string on MacOS-X.
An array of strings that lists the users preferred languages, in order or preference. If not found the default is just English.
There are some environment variables used by GNUstep base, where there would be problems obtaining data from the defaults system.
The default exception handler will either cause the program to simply terminate, or to crash - leaving a core dump. The standard behavior is to leave a core dump if the library was built for debugging, and to simply exit if it was not.
The CRASH_ON_ABORT environment variable can be used to override this behavior. If this is defined to NO, FALSE, or 0 then the program will simply exit when an exception occurs. Any other value of the variable will cause the program to generate a core dump.
When the a message is sent to a zombie object (see the
NSZombieEnabled
environment variable) the
base library allows you to specify whether the program
should continue after logging the message, or have the
program abort.
By default, the program will attempt to continue.
The CRASH_ON_ZOMBIE
variable can be used to
override this behavior. If this is defined to YES,
TRUE, or 1 then the program will log the
message sent to the zombie and then abort, producing a
core dump on systems where that is possible.
When this is set to YES, the GNUstep extension method +setShouldCleanUp: is called when the NSObject class is initialised, this turns on recording of some intentionally leaked memory (data structures intended to persist for the whole life of the process), and activates cleanup of that memory on process exit so that external tools such as valgrind will not report the memory as possibly lost.
Use of this facility is a work in progress ... many classes do not yet clean up after themselves when this is enabled.
When this is set to YES a human readable stack trace
(with function names and line numbers) is added to the output
of the description method of a raised exception object.
This only works if gnustep was built with support for it
using libbfd, so it may not be available on all systems.
When this is set to NO the raw stack trace provided
by [NSException-callStackReturnAddresses] is disabled.
The possible reasons for disabling this are:
1. that the feature is implemented using a function of the
gcc compiler to provide stack addresses, and the function is
buggy on some systems/compiler versions, and will cause a
signal to be sent which would crash your program if not caught.
The GNUstep code catches the signal and recovers using a signal
handler, but there have been two reports of this not working
with no known cause.
2. that you have code which uses exceptions in a way in which
they were not designed to be used ... so that they are
routinely and frequently called rather than being called only
occasionally when exceptional conditions occur. In this case
you may want to disable the stack frame generation implicit
in each raised exception, in order to improve performance.
When this is not set, or is set to a non-boolean value, the stack trace handling on exceptions is MacOS-X compatible ... stack return addresses are available but a human readable trace back is not logged.
This is used to specify the default encoding for 8-bit
strings (those used by 'cstring' methods of NSString).
It may be any of the 8-bit encodings supported
by your system.
If this environment variable is not set, GNUstep attempts to use the characterset specified by your operating systems, locale information (using the standard nl_langinfo function) if possible.
If there is no usable operating system defined characterset, GNUstep defaults to NSISOLatin1StringEncoding.
Used in place of GNUSTEP_TARGET_CPU if the other is missing.
Used in place of GNUSTEP_TARGET_DIR if the other is missing.
Used in place of GNUSTEP_TARGET_OS if the other is missing.
Overrides the default value of the machine (hardware) name used on this system.
Overrides the default path used to locate subdirectories for GNUstep binaries withing bundles and applications. This is normally equivalent to a path made up of the GNUSTEP_TARGET_CPU and GNUSTEP_TARGET_OS
Overrides the default value of the operating system name used on this system.
Used to specify the timezone to be used if there is no timezone specified in the user defaults system. The preferred mechanism is to use the 'Local Time Zone' value from the user defaults system.
This functionality may have been disabled if the base library
was configured/built with the
--disable-environment-config-file
option.
If it is operational (ie unless you've deliberately disabled
it), the environment variable overrides the normal path to
the gnustep config file used to determine the locations of
paths for the gnustep system (see later).
This is provided to support situations such as when you
install into a sandbox during packaging, or where you may
want to simultaneously run applications using different sets
of resources but linked to a single copy of the base library,
or you want to use an alternative config file for some reason.
Used on ms-windows to locate the home directory if the HOMEPATH environment variable is also used.
Used on ms-windows to locate the home directoryb in conjunction with HOMEDRIVE. If this is just a backslash then the USERPROFILE variable is used if possible.
If there is no NSLanguages user default set, and there is no language information available in the native system locale mechanism, then this environment variable is used to provide a list of the languages that the user prefers to use. languages listed in this variable must be separated by semicolons.
This is used as the default value for the current user (as returned by the NSUserName() functions). If it is not specified, or contains an illegal value, other methods are used to get the user name.
Used to override the default value of the combination of standard libraries used to build binaries. This value locates the final subdirectory used to locate binaries.
This may be used in conjunction with NSZombieEnabled to specify whether the objects should really be deallocated. If you set this to YES, the zombie logging will only work until the deallocated memory is re-used.
If this is set to YES, then deallocation of an object causes
the object to be morphed into a Zombie ... a special object
which will call the GNUstep specific GSLogZombie() function
to log the method call.
If GNUstep-base was built for debugging (make debug=yes),
you can set a breakpoint in this function and examine the
process memory when you are running under a debugger.
As this overrides actual object deallocation, all memory
allocated for objects will be leaked unless the
NSDeallocateZombies environment variable is also set.
You can use the CRASH_ON_ZOMBIE
environment
variable to force an abort after the message is logged.
Specifies the default socks server to be used when making
outgoing tcp/ip connections using NSFileHandle. This may
also specify a port after the host name (and separated
from it by a colon).
This environment variable is used only if the GSSOCKS
user default is not set.
Equivalent to SOCKS5_SERVER, but used only if that is not defined.
Used to specify the timezone to be used if there is no timezone specified by any other mechanism. The preferred mechanism is to use the 'Local Time Zone' value from the user defaults system.