documentation cleanups

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@34015 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2011-10-17 10:59:02 +00:00
parent 128c68b3a0
commit eca1f5a0f2
9 changed files with 190 additions and 106 deletions

View file

@ -1,3 +1,15 @@
2011-10-17 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSBundle.m:
* Source/NSPropertyList.m:
* Source/NSFileHandle.m:
* Source/NSString.m:
* Source/DocMakefile:
* Documentation/Base.gsdoc:
* Headers/Foundation/NSString.h:
* Headers/Foundation/NSBundle.h:
Documentation cleanups.
2011-10-17 Quentin Mathe <quentin.mathe@gmail.com>
* Headers/Foundation/NSXMLNode.h:

View file

@ -512,19 +512,36 @@ notice and this notice are preserved.
<subsect>
<heading>GNUstep Configuration File</heading>
<p>
This file is the master configuration file for GNUstep. It
can be used to set the base location of all the standard
paths that GNUstep programs use or know about. The
location of this file depends on how the Base library was
configured and/or what operating system it was configured
on. On a GNU/Linux system, the default would be
This file is the master configuration file for GNUstep.
It can be used to set the base location of all the standard
paths that GNUstep programs use or know about.
The location of this file depends on how the Base library was
configured and/or what operating system it was configured on.
On a GNU/Linux system, the default would be
/etc/GNUstep/GNUstep.conf for instance, while on mswindows
it would be ./GNUstep.conf.<br />
The location of this file can be specified when the base library
is configured ... using the <code>--with-config-file=</code>
it would be ./GNUstep.conf.
</p>
<p>
NB. The gnustep-make package sets up a configuration file to
be used when building GNUstep software, and gnustep-base
normally uses that same file, but it is important to be
aware that the two configuration files are not necessarily
the same since one is required to provide environment
variables used while building and installing software, but
the other is used when gnustep tools and applications are run
(ie in a target/deployment environment).<br />
In particular it is normal for the two files to differ on
mswindows (where the build environment is an UNIX-like MSYS
shell, using unix style paths, but the deployment environment
is native-windows using windows style paths).
</p>
<p>
The location of the GNUstep configuration file can be specified
when the base library is configured, using the
<code>--with-config-file=</code>
option of the <code>configure</code> script.<br />
The configuration file is not actually required to exist, and
if it does not exist, then default values will be used.
This configuration file is not actually required to exist,
and if it does not exist, then default values will be used
for the standard path locations (these default values may
be specified using the <code>--with-default-config=</code>
option of the <code>configure</code> script.<br />
@ -727,9 +744,62 @@ notice and this notice are preserved.
<p>
So you can bundle the whole lot together in one directory,
and configure various relative paths in that directory, then
move the directory around wherever you like.
move the directory around wherever you like.<br />
However, if your operating system needs to know where to find
the libraries it will load, you will have to tell it where they
are ... typically you do this by setting an environment variable
such as LD_LIBRARY_PATH to contain the full path to the
directory you put the libraries in.
</p>
</subsect>
<subsect>
<heading>Standalone packages</heading>
<p>
While the recommended setup for GNUstep is to install the
core packages in a standard location on your system, and then
install applications which make use of those core libraries,
it is sometimes desirable to have standalone applications
which don't need the core to be installed.<br />
This is a special case of the relocatable packages described
above, in which all your application's dependencies are built
as relocatable packages using a filesystem layout which lets
them all be stored within your application directory.
</p>
<p>
As an aide to easy creation of such standalone packages we
provide two template gnustep configuration files for a common
setup where things are stored in a 'standalone' subdirectory
of your application wrapper.<br />
You configure/install gnustep-make with the 'standalone'
filesystem layout, then you configure/build/install gnustep-base
with the 'standalone.conf' default configuration file, and
build/install the other librarties/packages your app depends
upon.<br />
This leaves you with a 'standalone' directory containing all
the relocatable code, which you can then copy into your app
wrapper to provide a complete standalone system.
</p>
To set up the relocatable standalone resources:
<example>
cd make
./configure --with-layout=standalone
make install
. ~/standalone/Makefile/GNUstep.sh
cd ../base
./configure --with-config-file=./ --with-default-config=standalone.conf
make install
cd ../gui
make install
cd ../back
make install
</example>
To copy them to your application and run it using them:
<example>
(cd ~; tar -cf - standalone) | (cd MyApp.app; tar -xpf -)
export LD_LIBRARY_PATH=`pwd`/MyApp.app/standalone
MyApp.app/MyApp
</example>
</subsect>
<subsect>
<heading>Lock-Down</heading>
<p>

View file

@ -190,12 +190,12 @@ GS_EXPORT NSString* const NSLoadedClasses;
/**
Returns an absolute path for a resource name with the extension
ext in the specified bundlePath. See also
in the specified bundlePath. See also
-pathForResource:ofType:inDirectory: for more information on
searching a bundle.
*/
+ (NSString*) pathForResource: (NSString*)name
ofType: (NSString*)ext
ofType: (NSString*)extension
inDirectory: (NSString*)bundlePath;
/**
@ -203,13 +203,13 @@ GS_EXPORT NSString* const NSLoadedClasses;
so this method behaves exactly like +pathForResource:ofType:inDirectory:.
*/
+ (NSString*) pathForResource: (NSString*)name
ofType: (NSString*)ext
ofType: (NSString*)extension
inDirectory: (NSString*)bundlePath
withVersion: (int)version;
#if OS_API_VERSION(100600,GS_API_LATEST)
+ (NSURL*) URLForResource: (NSString*)name
withExtension: (NSString*)ext
withExtension: (NSString*)extension
subdirectory: (NSString*)subpath
inBundleWithURL: (NSURL*)bundleURL;
#endif
@ -282,7 +282,7 @@ GS_EXPORT NSString* const NSLoadedClasses;
/**
<p>
Returns an absolute path for a resource name with the extension ext
Returns an absolute path for a resource name with the extension
in the specified bundlePath. Directories in the bundle are searched
in the following order:
</p>
@ -297,21 +297,21 @@ GS_EXPORT NSString* const NSLoadedClasses;
the bundle.
</p>
<p>
If ext is nil or empty, then the first file exactly matching name
If extension is nil or empty, then the first file exactly matching name
(ie with no extension) is returned.
</p>
*/
- (NSString*) pathForResource: (NSString*)name
ofType: (NSString*)ext
ofType: (NSString*)extension
inDirectory: (NSString*)subPath;
/**
Returns an absolute path for a resource name with the extension ext
Returns an absolute path for a resource name with the extension
in the receivers bundle path.
See -pathForResource:ofType:inDirectory:.
*/
- (NSString*) pathForResource: (NSString*)name
ofType: (NSString*)ext;
ofType: (NSString*)extension;
#if OS_API_VERSION(100600,GS_API_LATEST)
- (NSURL*) URLForResource: (NSString*)name
@ -400,7 +400,7 @@ GS_EXPORT NSString* const NSLoadedClasses;
* resources.
*/
- (NSString*) pathForResource: (NSString*)name
ofType: (NSString*)ext
ofType: (NSString*)extension
inDirectory: (NSString*)subPath
forLocalization: (NSString*)localizationName;
@ -507,7 +507,7 @@ GS_EXPORT NSString* const NSLoadedClasses;
/** Find a resource in the "Library" directory. */
+ (NSString*) pathForLibraryResource: (NSString*)name
ofType: (NSString*)ext
ofType: (NSString*)extension
inDirectory: (NSString*)bundlePath;
@end

View file

@ -768,9 +768,9 @@ typedef NSUInteger NSStringEncodingConversionOptions;
#if OS_API_VERSION(100300,GS_API_LATEST)
/** Not implemented */
- (void) getParagraphStart: (NSUInteger *)startPtr
end: (NSUInteger *)parEndPtr
contentsEnd: (NSUInteger *)contentsEndPtr
- (void) getParagraphStart: (NSUInteger *)startIndex
end: (NSUInteger *)parEndIndex
contentsEnd: (NSUInteger *)contentsEndIndex
forRange: (NSRange)range;
/** Not implemented */
- (NSRange) paragraphRangeForRange: (NSRange)range;

View file

@ -198,10 +198,12 @@ Base_AGSDOC_FLAGS = \
GS_RANGE_ATTR="";\
GS_RANGE_SCOPE=extern;\
GS_STATIC_INLINE="";\
GS_GC_STRONG="";\
GS_UNUSED_IVAR="";\
GS_ZONE_ATTR="";\
GS_ZONE_SCOPE=extern;\
INLINE=inline;\
NS_AUTOMATED_REFCOUNT_UNAVAILABLE="";\
NS_CONSUMED="";\
NS_CONSUMES_SELF="";\
NS_RETURNS_NOT_RETAINED="";\

View file

@ -208,10 +208,10 @@ AbsolutePathOfExecutable(NSString *path, BOOL atLaunch)
#if defined(__WIN32__)
else
{
NSString *ext = [path pathExtension];
NSString *extension = [path pathExtension];
/* Also add common executable extensions on windows */
if (ext == nil || [ext length] == 0)
if (extension == nil || [extension length] == 0)
{
NSString *wpath;
@ -386,14 +386,14 @@ _bundle_resource_path(NSString *primary, NSString* bundlePath, NSString *lang)
which are like /Library/Frameworks/(name).framework */
static inline NSString *
_find_framework(NSString *name)
{
{
NSArray *paths;
NSFileManager *file_mgr = manager();
NSString *file_name = [name stringByAppendingPathExtension:@"framework"];
NSString *file_path;
NSString *path;
NSEnumerator *enumerator;
NSCParameterAssert(name != nil);
paths = NSSearchPathForDirectoriesInDomains(GSFrameworksDirectory,
@ -410,7 +410,7 @@ _find_framework(NSString *name)
}
}
return nil;
}
}
/* Try to locate resources for tool name (which is this tool) in
@ -444,7 +444,7 @@ _find_main_bundle_for_tool(NSString *toolName)
}
tail = [@"Tools" stringByAppendingPathComponent:
[@"Resources" stringByAppendingPathComponent:
[@"Resources" stringByAppendingPathComponent:
toolName]];
paths = NSSearchPathForDirectoriesInDomains (NSLibraryDirectory,
@ -592,14 +592,14 @@ _find_main_bundle_for_tool(NSString *toolName)
*/
if ([bundlePath isAbsolutePath] == NO)
{
bundlePath = [_launchDirectory
bundlePath = [_launchDirectory
stringByAppendingPathComponent: bundlePath];
}
/* Dereference symlinks, and standardize path. This will
* only work properly if the original bundlePath is
* absolute.
* absolute.
*/
bundlePath = [bundlePath stringByStandardizingPath];
@ -657,7 +657,7 @@ _find_main_bundle_for_tool(NSString *toolName)
bundlePath = [bundlePath stringByDeletingLastPathComponent];
#endif
pathComponent = [bundlePath lastPathComponent];
if ([pathComponent isEqualToString:
[NSString stringWithFormat: @"%@%@",
name, @".framework"]])
@ -727,7 +727,7 @@ _find_main_bundle_for_tool(NSString *toolName)
value = [NSValue valueWithPointer: (void*)class];
[bundle->_bundleClasses addObject: value];
fmClasses++;
}
@ -878,22 +878,22 @@ _bundle_load_callback(Class theClass, struct objc_category *theCategory)
gnustep_target_cpu = RETAIN(str);
else if ((str = [env objectForKey: @"GNUSTEP_HOST_CPU"]) != nil)
gnustep_target_cpu = RETAIN(str);
if ((str = [env objectForKey: @"GNUSTEP_TARGET_OS"]) != nil)
gnustep_target_os = RETAIN(str);
else if ((str = [env objectForKey: @"GNUSTEP_HOST_OS"]) != nil)
gnustep_target_os = RETAIN(str);
if ((str = [env objectForKey: @"GNUSTEP_TARGET_DIR"]) != nil)
gnustep_target_dir = RETAIN(str);
else if ((str = [env objectForKey: @"GNUSTEP_HOST_DIR"]) != nil)
gnustep_target_dir = RETAIN(str);
if ((str = [env objectForKey: @"LIBRARY_COMBO"]) != nil)
library_combo = RETAIN(str);
_launchDirectory = RETAIN([manager() currentDirectoryPath]);
_gnustep_bundle = RETAIN([self bundleForLibrary: @"gnustep-base"
version: _base_version]);
#if 0
@ -921,12 +921,12 @@ _bundle_load_callback(Class theClass, struct objc_category *theCategory)
{
void *state = NULL;
Class class;
while ((class = objc_next_class(&state)))
{
const char *className = class_getName(class);
unsigned int len = strlen (className);
if (len > sizeof("NSFramework_")
&& !strncmp("NSFramework_", className, 12))
{
@ -938,7 +938,7 @@ _bundle_load_callback(Class theClass, struct objc_category *theCategory)
#if 0
// _bundle_load_callback(class, NULL);
// bundle = (NSBundle *)NSMapGet(_bundles, bundlePath);
objc_close_main_module(handle);
_loadingBundle = nil;
#endif
@ -1096,7 +1096,7 @@ _bundle_load_callback(Class theClass, struct objc_category *theCategory)
if (isApplication == YES)
{
s = [path lastPathComponent];
if ([s hasSuffix: @".app"] == NO
&& [s hasSuffix: @".debug"] == NO
&& [s hasSuffix: @".profile"] == NO
@ -1167,7 +1167,7 @@ _bundle_load_callback(Class theClass, struct objc_category *theCategory)
*/
maybePath = _find_main_bundle_for_tool (toolName);
}
/* If that didn't work, maybe the tool was created with
* gnustep-make version 1. So we try {tool location on
* disk after walking up the non-flattened
@ -1745,7 +1745,7 @@ IF_NO_GC(
else
{
/* This matches OS X behavior, which only searches languages that
* are in the user's preference. Don't use -preferredLocalizations -
* are in the user's preference. Don't use -preferredLocalizations -
* that would cause a recursive loop.
*/
enumerate = [languages objectEnumerator];
@ -1772,7 +1772,7 @@ IF_NO_GC(
}
+ (NSString *) _pathForResource: (NSString *)name
ofType: (NSString *)ext
ofType: (NSString *)extension
inRootPath: (NSString *)rootPath
inDirectory: (NSString *)subPath
{
@ -1784,9 +1784,9 @@ IF_NO_GC(
{
name = @"";
}
if ([ext length] == 0)
if ([extension length] == 0)
{
ext = nil;
extension = nil;
}
pathlist = [[self _bundleResourcePathsWithRootPath: rootPath
@ -1796,9 +1796,9 @@ IF_NO_GC(
if (bundle_directory_readable(path))
{
path = [path stringByAppendingPathComponent: name];
if (ext != nil)
if (extension != nil)
{
path = [path stringByAppendingPathExtension: ext];
path = [path stringByAppendingPathExtension: extension];
}
if ([mgr isReadableFileAtPath: path])
{
@ -1812,48 +1812,48 @@ IF_NO_GC(
+ (NSString *) pathForResource: (NSString *)name
ofType: (NSString *)ext
ofType: (NSString *)extension
inDirectory: (NSString *)bundlePath
withVersion: (int)version
{
return [self _pathForResource: name
ofType: ext
ofType: extension
inRootPath: bundlePath
inDirectory: nil];
}
+ (NSString *) pathForResource: (NSString *)name
ofType: (NSString *)ext
ofType: (NSString *)extension
inDirectory: (NSString *)bundlePath
{
return [self _pathForResource: name
ofType: ext
ofType: extension
inRootPath: bundlePath
inDirectory: nil];
}
+ (NSURL*) URLForResource: (NSString*)name
withExtension: (NSString*)ext
withExtension: (NSString*)extension
subdirectory: (NSString*)subpath
inBundleWithURL: (NSURL*)bundleURL
{
NSBundle *root = [self bundleWithURL: bundleURL];
return [root URLForResource: name
withExtension: ext
withExtension: extension
subdirectory: subpath];
}
- (NSString *) pathForResource: (NSString *)name
ofType: (NSString *)ext
ofType: (NSString *)extension
{
return [self pathForResource: name
ofType: ext
ofType: extension
inDirectory: nil];
}
- (NSString *) pathForResource: (NSString *)name
ofType: (NSString *)ext
ofType: (NSString *)extension
inDirectory: (NSString *)subPath
{
NSString *rootPath;
@ -1867,39 +1867,39 @@ IF_NO_GC(
rootPath = [self bundlePath];
return [NSBundle _pathForResource: name
ofType: ext
ofType: extension
inRootPath: rootPath
inDirectory: subPath];
}
- (NSURL *) URLForResource: (NSString *)name
withExtension: (NSString *)ext
withExtension: (NSString *)extension
{
return [self URLForResource: name
withExtension: ext
withExtension: extension
subdirectory: nil
localization: nil];
}
- (NSURL *) URLForResource: (NSString *)name
withExtension: (NSString *)ext
withExtension: (NSString *)extension
subdirectory: (NSString *)subpath
{
return [self URLForResource: name
withExtension: ext
withExtension: extension
subdirectory: subpath
localization: nil];
}
- (NSURL *) URLForResource: (NSString *)name
withExtension: (NSString *)ext
withExtension: (NSString *)extension
subdirectory: (NSString *)subpath
localization: (NSString *)localizationName
{
NSString *path;
path = [self pathForResource: name
ofType: ext
ofType: extension
inDirectory: subpath
forLocalization: localizationName];
if (nil == path)
@ -1987,16 +1987,16 @@ IF_NO_GC(
}
else if ([localizationName length] > 0
&& [[theDir lastPathComponent] hasPrefix: localizationName])
{
{
[result insertObject: path atIndex: 0];
}
}
return result;
}
- (NSString*) pathForResource: (NSString*)name
ofType: (NSString*)ext
ofType: (NSString*)extension
inDirectory: (NSString*)subPath
forLocalization: (NSString*)localizationName
{
@ -2004,15 +2004,15 @@ IF_NO_GC(
NSString *result = nil;
NSArray *array;
if ([ext length] == 0)
if ([extension length] == 0)
{
ext = [name pathExtension];
if (ext != nil)
extension = [name pathExtension];
if (extension != nil)
{
name = [name stringByDeletingPathExtension];
}
}
array = [self pathsForResourcesOfType: ext
array = [self pathsForResourcesOfType: extension
inDirectory: subPath
forLocalization: localizationName];
@ -2021,7 +2021,7 @@ IF_NO_GC(
NSEnumerator *enumerator = [array objectEnumerator];
NSString *path;
name = [name stringByAppendingPathExtension: ext];
name = [name stringByAppendingPathExtension: extension];
while ((path = [enumerator nextObject]) != nil)
{
NSString *found = [path lastPathComponent];
@ -2134,7 +2134,7 @@ IF_NO_GC(
return [NSBundle preferredLocalizationsFromArray: [self localizations]];
}
- (NSString *) localizedStringForKey: (NSString *)key
- (NSString *) localizedStringForKey: (NSString *)key
value: (NSString *)value
table: (NSString *)tableName
{
@ -2175,7 +2175,7 @@ IF_NO_GC(
NSData *tableData;
const unsigned char *bytes;
unsigned length;
tableData = [[NSData alloc] initWithContentsOfFile: tablePath];
bytes = [tableData bytes];
length = [tableData length];
@ -2325,11 +2325,11 @@ IF_NO_GC(
* which really is a class name.
*/
NSString *mangledName = object;
mangledName = [mangledName stringByReplacingString: @"_"
mangledName = [mangledName stringByReplacingString: @"_"
withString: @"__"];
mangledName = [mangledName stringByReplacingString: @"-"
mangledName = [mangledName stringByReplacingString: @"-"
withString: @"_0"];
mangledName = [mangledName stringByReplacingString: @"+"
mangledName = [mangledName stringByReplacingString: @"+"
withString: @"_1"];
#if !defined(__MINGW__)
@ -2576,14 +2576,14 @@ IF_NO_GC(
*
* if no <interfaceVersion> is specified, and if can't find any versioned
* resources in those directories, we'll also accept the old unversioned
* subdirectory:
* subdirectory:
*
* Libraries/Resources/<libraryName>/
*
*/
paths = NSSearchPathForDirectoriesInDomains (NSLibraryDirectory,
NSAllDomainsMask, YES);
enumerator = [paths objectEnumerator];
while ((path = [enumerator nextObject]) != nil)
{
@ -2625,7 +2625,7 @@ IF_NO_GC(
if ([fm fileExistsAtPath: path isDirectory: &isDir] && isDir)
{
b = [self bundleWithPath: path];
if (b != nil && b->_bundleType == NSBUNDLE_BUNDLE)
{
b->_bundleType = NSBUNDLE_LIBRARY;
@ -2648,7 +2648,7 @@ IF_NO_GC(
/* TODO: Ignore subdirectories. */
NSEnumerator *fileEnumerator;
NSString *potentialPath;
fileEnumerator = [fm enumeratorAtPath: versionsPath];
while ((potentialPath = [fileEnumerator nextObject]) != nil)
{
@ -2660,7 +2660,7 @@ IF_NO_GC(
isDirectory: &isDir] && isDir)
{
b = [self bundleWithPath: potentialPath];
if (b != nil && b->_bundleType == NSBUNDLE_BUNDLE)
{
b->_bundleType = NSBUNDLE_LIBRARY;
@ -2704,7 +2704,7 @@ IF_NO_GC(
}
+ (NSString *) pathForLibraryResource: (NSString *)name
ofType: (NSString *)ext
ofType: (NSString *)extension
inDirectory: (NSString *)bundlePath
{
NSString *path = nil;
@ -2722,7 +2722,7 @@ IF_NO_GC(
{
bundle = [self bundleWithPath: bundle_path];
path = [bundle pathForResource: name
ofType: ext
ofType: extension
inDirectory: bundlePath];
}

View file

@ -756,7 +756,7 @@ NSString * const NSFileHandleOperationException
/** <override-dummy />
*/
- (BOOL) sslHandshakeEstablished: (BOOL*)result outgoing: (BOOL)isOutgoing;
- (BOOL) sslHandshakeEstablished: (BOOL*)result outgoing: (BOOL)isOutgoing
{
return NO;
}

View file

@ -2370,7 +2370,7 @@ static BOOL classInitialized = NO;
+ (NSData *) dataWithPropertyList: (id)aPropertyList
format: (NSPropertyListFormat)aFormat
options: (NSPropertyListWriteOptions)anOption
error: (NSError**)error
error: (out NSError**)error
{
NSMutableData *dest;
NSDictionary *loc;
@ -2520,7 +2520,7 @@ GSPropertyListMake(id obj, NSDictionary *loc, BOOL xml,
+ (id) propertyListWithData: (NSData*)data
options: (NSPropertyListReadOptions)anOption
format: (NSPropertyListFormat*)aFormat
error: (NSError**)error
error: (out NSError**)error
{
NSPropertyListFormat format = 0;
NSString *errorStr = nil;
@ -2672,7 +2672,7 @@ GSPropertyListMake(id obj, NSDictionary *loc, BOOL xml,
+ (id) propertyListWithStream: (NSInputStream*)stream
options: (NSPropertyListReadOptions)anOption
format: (NSPropertyListFormat*)aFormat
error: (NSError**)error
error: (out NSError**)error
{
// FIXME
return nil;
@ -2682,7 +2682,7 @@ GSPropertyListMake(id obj, NSDictionary *loc, BOOL xml,
toStream: (NSOutputStream*)stream
format: (NSPropertyListFormat)aFormat
options: (NSPropertyListWriteOptions)anOption
error: (NSError**)error
error: (out NSError**)error
{
// FIXME: The NSData operations should be implemented on top of this method,
// not the other way round,

View file

@ -2628,26 +2628,26 @@ handle_printf_atsign (FILE *stream,
* arguments to be null pointers (in which case no value is returned in that
* argument).
*/
- (void) getLineStart: (NSUInteger *)startPtr
end: (NSUInteger *)lineEndPtr
contentsEnd: (NSUInteger *)contentsEndPtr
- (void) getLineStart: (NSUInteger *)startIndex
end: (NSUInteger *)lineEndIndex
contentsEnd: (NSUInteger *)contentsEndIndex
forRange: (NSRange)aRange
{
[self _getStart: startPtr
end: lineEndPtr
contentsEnd: contentsEndPtr
[self _getStart: startIndex
end: lineEndIndex
contentsEnd: contentsEndIndex
forRange: aRange
lineSep: YES];
}
- (void) getParagraphStart: (NSUInteger *)startPtr
end: (NSUInteger *)parEndPtr
contentsEnd: (NSUInteger *)contentsEndPtr
- (void) getParagraphStart: (NSUInteger *)startIndex
end: (NSUInteger *)parEndIndex
contentsEnd: (NSUInteger *)contentsEndIndex
forRange: (NSRange)aRange
{
[self _getStart: startPtr
end: parEndPtr
contentsEnd: contentsEndPtr
[self _getStart: startIndex
end: parEndIndex
contentsEnd: contentsEndIndex
forRange: aRange
lineSep: NO];
}