ftp.nice.ch/pub/next/games/network/NeXTGo.2.7.NIHS.bs.gnutar.gz#/NeXTGo/MiscString.h

This is MiscString.h in view mode; [Download] [Up]

//
//	MiscString.h -- a generic class to simplify manipulation of (char *)'s
//		Written by Don Yacktman Copyright (c) 1993, 1994 by Don Yacktman.
//				Version 1.95.  All rights reserved.
//		This notice may not be removed from this source code.
//
//	This object is included in the MiscKit by permission from the author
//	and its use is governed by the MiscKit license, found in the file
//	"LICENSE.rtf" in the MiscKit distribution.  Please refer to that file
//	for a list of all applicable permissions and restrictions.
//	

#import <appkit/appkit.h>

#import <misckit/MiscProtocols.h>

#ifndef _MISCSTRING_H
#define _MISCSTRING_H

// special constants for -extractPart... methods
#define MISC_STRING_LAST -1
#define MISC_STRING_FIRST 0

// character types...they can be OR'ed together...
#define MISC_UPPER     1
#define MISC_LOWER     2
#define MISC_DIGIT     4
#define MISC_XDIGIT    8
#define MISC_PUNCT    16
#define MISC_ASCII    32
#define MISC_CNTRL    64
#define MISC_PRINT   128
#define MISC_SPACE   256
#define MISC_GRAPH   512

/* A couple of obvious combinations */
#define MISC_ALPHA (MISC_UPPER|MISC_LOWER)
#define MISC_ALNUM (MISC_ALPHA|MISC_DIGIT)


char *MiscBuildStringFromFormatV(const char *formatStr, va_list param_list);

// Note that the NXTransport protocol is handled by the NEXTSTEP category.
@interface MiscString:Object
{
	 char *buffer;
	 NXStringOrderTable *orderTable;
	 int length, _length;	// length is string length, _length is buffer size
}

+ initialize;
+ new;
+ newWithString:(const char *)aString;
- new;
- init;
- initCapacity:(int)capacity;
- initCapacity:(int)capacity fromZone:(NXZone *)zone;
- initString:(const char *)aString;
- initFromFormat:(const char *)formatStr, ...;
- allocateBuffer:(int)size;
- allocateBuffer:(int)size fromZone:(NXZone *)zone;
- copyFromZone:(NXZone *)zone;
- (char *)getCopyInto:(char *)buf;
- freeString;
- free;
- (BOOL)emptyString;
- (char)charAt:(int)index;
- (int)numOfChar:(char)aChar caseSensitive:(BOOL)sense;
- (int)numOfChar:(char)aChar;
- (int)numOfChars:(const char *)aString caseSensitive:(BOOL)sense;
- (int)numOfChars:(const char *)aString;
- (int)length;
- (unsigned)capacity;
- setCapacity:(unsigned)newCapacity;
- (size_t)recalcLength;
- fixStringLength;
- fixStringLengthAt:(unsigned)index;
- setStringOrderTable:(NXStringOrderTable *)table;
- (NXStringOrderTable *)stringOrderTable;
- (const char *)stringValue;
- (NXAtom)uniqueStringValue;
- (const char *)stringValueAndFree;
- (int)intValue;
- (float)floatValue;
- (double)doubleValue;

@end

@interface MiscString(Comparing) <MiscCompare, MiscEndCompare>

- (BOOL)isEqual:anObject;
- (unsigned int)hash;
- (int)cmp:(const char *)aString n:(int)n;
- (int)compareTo:sender n:(int)n caseSensitive:(BOOL)sense;
- (int)casecmp:(const char *)aString n:(int)n;
- (int)endcmp:(const char *)aString n:(int)n;
- (int)endcasecmp:(const char *)aString n:(int)n;
- (int)endCompareTo:(id)sender n:(int)n caseSensitive:(BOOL)sense;

#ifndef _HEADER_VIEWER_  /* convenience methods */
- (int)cmp:(const char *)aString;
- (int)casecmp:(const char *)aString;
- (int)endcmp:(const char *)aString;
- (int)endcasecmp:(const char *)aString;
- (int)compareTo:sender;
- (int)compareTo:sender n:(int)n;
- (int)compareTo:sender caseSensitive:(BOOL)sense;
- (int)endCompareTo:(id)sender;
- (int)endCompareTo:(id)sender caseSensitive:(BOOL)sense;
- (int)endCompareTo:(id)sender n:(int)n;
#endif

@end

@interface MiscString(Debugging)

- buildInstanceImageIn:(char *)buf;
- printForDebugger:(NXStream *)stream;
- printToStdErr:(const char *)label;

@end

@interface MiscString(Fields)

- subStringRight:subString;
- subStringLeft:subString;
- left:(int)count fromZone:(NXZone *)zone;
- right:(int)count fromZone:(NXZone *)zone;
- midFrom:(int)start to:(int)end fromZone:(NXZone *)zone;
- midFrom:(int)start length:(int)len fromZone:(NXZone *)zone;
- extractPart:(int)n useAsDelimiter:(char)c caseSensitive:(BOOL)sense
		fromZone:(NXZone *)zone;
- wordNum:(int) num fromZone:(NXZone *)zone;
- (int)numWords;
- tokenize:(const char *)breakChars into:aList;

#ifndef _HEADER_VIEWER_  /* convenience methods */
- extractPart:(int)n useAsDelimiter:(char)c caseSensitive:(BOOL)sense;
- extractPart:(int)n useAsDelimiter:(char)c fromZone:(NXZone *)zone;
- extractPart:(int)n useAsDelimiter:(char)c;
- wordNum:(int) num;
- left:(int)count;
- right:(int)count;
- midFrom:(int)start to:(int)end;
- midFrom:(int)start length:(int)len;
#endif

@end

@interface MiscString(Insertion)

- cat:(const char *)aString n:(int)n fromZone:(NXZone *)zone;
- concatenate:sender n:(int)n fromZone:(NXZone *)zone;
- insert:(const char *)aString at:(int)index;
- insertString:(id)sender at:(int)index;
- insertChar:(char)aChar at:(int)index;
- catStrings:  ( const char *) strings,  ...;
- concatenateStrings:(id)strings,  ...;
- insert:(const char *)aString;
- insertString:aString;
- addChar:(char)aChar;
- insertFromFormat:(const char *)format, ...;
- insertAt:(int)index fromFormat:(const char *)format, ...;
- catFromFormat:(const char *)format, ...;

#ifndef _HEADER_VIEWER_  /* convenience methods */
- cat:(const char *)aString;
- cat:(const char *)aString n:(int)n;
- cat:(const char *)aString fromZone:(NXZone *)zone;
- concatenate:sender;
- concatenate:sender n:(int)n;
- concatenate:sender fromZone:(NXZone *)zone;
- insertChar:(char)aChar;
#endif

@end

@interface MiscString(Modification)

- setStringValue:(const char *)aString;
- setStringValue:(const char *)aString n:(int)n fromZone:(NXZone *)zone;
- setFromFormat:(const char *)formatStr, ...;
- setIntValue:(int)val;
- setFloatValue:(float)val;
- setDoubleValue:(double)val;
- sprintf:(const char *)formatStr, ...;
- takeStringValueFrom:sender;
- takeStringValueFrom:sender fromZone:(NXZone *)zone;
- takeIntValueFrom:sender;
- takeFloatValueFrom:sender;
- takeDoubleValueFrom:sender;
- trimLeadSpaces;
- trimTailSpaces;
- trimSpaces;
- trimLeadWhiteSpaces;
- trimTailWhiteSpaces;
- trimWhiteSpaces;
- squashSpaces;
- reverse;
- toUpper;
- toLower;
- invertCases;
- capitalizeEachWord;
- removeFrom:(int)index length:(int)len;
- removeFrom:(int)start to:(int)end;
- (int)gets;
- (int)fgets:(FILE *)fd keepNewline:(BOOL)keepit;
- (int)streamGets:(NXStream *)stream keepNewline:(BOOL)keepit;
- padToLength:(int)len withChar:(char)aChar;
- padFrontToLength:(int)len withChar:(char)aChar;

#ifndef _HEADER_VIEWER_  /* convenience methods */
- setStringValue:(const char *)aString fromZone:(NXZone *)zone;
- setStringValue:(const char *)aString n:(int)n;
- (int)fgets:(FILE *)fd;
- (int)streamGets:(NXStream *)stream;
#endif

@end

@interface MiscString(NEXTSTEP) <NXTransport>

- read:(NXTypedStream *)stream;
- write:(NXTypedStream *)stream;
- (BOOL)isRTFText;
- (MiscString *)plainTextForRTF;
- (const char *)getInspectorClassName;
- (NXImage *)getIBImage;
- writeToStream:(NXStream *)aStream;

@end

#import <misckit/MiscStringPatterns.h>
#import <misckit/MiscStringRegex.h>
#import <misckit/MiscString_ExtendedParsing.h>
#import <misckit/MiscStringCompatability.h>

@interface MiscString(Replacing)

- replaceFrom:(int)start length:(int)len with:(const char *)aString;
- replaceFrom:(int)start to:(int)end with:(const char *)aString;
- replaceFrom:(int)start length:(int)len withString:(id)sender;
- replaceFrom:(int)start to:(int)end withString:(id)sender;
- replace:(const char *)subString with:(const char *)newString;
- replace:(const char *)subString withString:(id)sender;
- replaceCharAt:(int)index withChar:(char)aChar;
- replaceFrom:(int)start length:(int)len withChar:(char)aChar;
- replaceFrom:(int)start to:(int)end withChar:(char)aChar;

- replaceEveryOccurrenceOfChars:(const char *)aString with:(const char *)replaceString caseSensitive:(BOOL)sense;
- replaceEveryOccurrenceOfChars:(const char *)aString withChar:(char)replaceChar caseSensitive:(BOOL)sense;
- replaceEveryOccurrenceOfChars:(const char *)aString withString:(id)sender caseSensitive:(BOOL)sense;
- replaceEveryOccurrenceOfChar:(char)aChar with:(const char *)aString caseSensitive:(BOOL)sense;
- replaceEveryOccurrenceOfChar:(char)aChar withString:(id)sender caseSensitive:(BOOL)sense;
- replaceEveryOccurrenceOfChar:(char)aChar withChar:(char)replaceChar caseSensitive:(BOOL)sense;

- replaceType:(int)type with:(const char *)str occurrenceNum:(int)n;
- replaceType:(int)type withChar:(char)aChar occurrenceNum:(int)n;
- replaceType:(int)type withString:(id)sender occurrenceNum:(int)n;
- replaceEveryOccurrenceOfType:(int)type with:(const char *)str;
- replaceEveryOccurrenceOfType:(int)type withChar:(char)aChar;
- replaceEveryOccurrenceOfType:(int)type withString:(id)sender;

- (int)replaceEveryOccurrenceOf:(const char *)str with:(const char *)repl caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (int)replaceEveryOccurrenceOf:(const char *)str withChar:(char)aChar caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (int)replaceEveryOccurrenceOf:(const char *)str withString:(id)sender caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (int)replaceEveryOccurrenceOfString:(id)sender with:(const char *)repl caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (int)replaceEveryOccurrenceOfString:(id)sender withChar:(char)aChar caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (int)replaceEveryOccurrenceOfString:(id)sender withString:(id)repl caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- replace:(const char *)str with:(const char *)repl occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- replace:(const char *)str withChar:(char)aChar occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- replace:(const char *)str withString:(id)sender occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- replaceString:(id)sender with:(const char *)repl occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- replaceString:(id)sender withChar:(char)aChar occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- replaceString:(id)sender withString:(id)repl occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

#ifndef _HEADER_VIEWER_  /* convenience methods */
- replaceEveryOccurrenceOfChars:(const char *)aString with:(const char *)replaceString;
- replaceEveryOccurrenceOfChars:(const char *)aString withChar:(char)replaceChar;
- replaceEveryOccurrenceOfChars:(const char *)aString withString:(id)sender;
- replaceEveryOccurrenceOfChar:(char)aChar with:(const char *)aString;
- replaceEveryOccurrenceOfChar:(char)aChar withString:(id)sender;
- replaceEveryOccurrenceOfChar:(char)aChar withChar:(char)replaceChar;

- replaceType:(int)type with:(const char *)str;
- replaceType:(int)type withChar:(char)aChar;
- replaceType:(int)type withString:(id)sender;

- (int)replaceEveryOccurrenceOf:(const char *)str with:(const char *)repl;
- (int)replaceEveryOccurrenceOf:(const char *)str with:(const char *)repl caseSensitive:(BOOL)sense;
- (int)replaceEveryOccurrenceOf:(const char *)str with:(const char *)repl overlap:(BOOL)overlap;

- (int)replaceEveryOccurrenceOf:(const char *)str withChar:(char)aChar;
- (int)replaceEveryOccurrenceOf:(const char *)str withChar:(char)aChar caseSensitive:(BOOL)sense;
- (int)replaceEveryOccurrenceOf:(const char *)str withChar:(char)aChar overlap:(BOOL)overlap;

- (int)replaceEveryOccurrenceOf:(const char *)str withString:(id)sender;
- (int)replaceEveryOccurrenceOf:(const char *)str withString:(id)sender caseSensitive:(BOOL)sense;
- (int)replaceEveryOccurrenceOf:(const char *)str withString:(id)sender overlap:(BOOL)overlap;

- (int)replaceEveryOccurrenceOfString:(id)sender with:(const char *)repl;
- (int)replaceEveryOccurrenceOfString:(id)sender with:(const char *)repl caseSensitive:(BOOL)sense;
- (int)replaceEveryOccurrenceOfString:(id)sender with:(const char *)repl overlap:(BOOL)overlap;

- (int)replaceEveryOccurrenceOfString:(id)sender withChar:(char)aChar;
- (int)replaceEveryOccurrenceOfString:(id)sender withChar:(char)aChar caseSensitive:(BOOL)sense;
- (int)replaceEveryOccurrenceOfString:(id)sender withChar:(char)aChar overlap:(BOOL)overlap;

- (int)replaceEveryOccurrenceOfString:(id)sender withString:(id)repl;
- (int)replaceEveryOccurrenceOfString:(id)sender withString:(id)repl caseSensitive:(BOOL)sense;
- (int)replaceEveryOccurrenceOfString:(id)sender withString:(id)repl overlap:(BOOL)overlap;

- replace:(const char *)str with:(const char *)repl;
- replace:(const char *)str with:(const char *)repl occurrenceNum:(int)n;
- replace:(const char *)str with:(const char *)repl caseSensitive:(BOOL)sense;
- replace:(const char *)str with:(const char *)repl occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- replace:(const char *)str with:(const char *)repl overlap:(BOOL)overlap;
- replace:(const char *)str with:(const char *)repl occurrenceNum:(int)n overlap:(BOOL)overlap;
- replace:(const char *)str with:(const char *)repl caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- replace:(const char *)str withChar:(char)aChar;
- replace:(const char *)str withChar:(char)aChar occurrenceNum:(int)n;
- replace:(const char *)str withChar:(char)aChar caseSensitive:(BOOL)sense;
- replace:(const char *)str withChar:(char)aChar occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- replace:(const char *)str withChar:(char)aChar overlap:(BOOL)overlap;
- replace:(const char *)str withChar:(char)aChar occurrenceNum:(int)n overlap:(BOOL)overlap;
- replace:(const char *)str withChar:(char)aChar caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- replace:(const char *)str withString:(id)sender;
- replace:(const char *)str withString:(id)sender occurrenceNum:(int)n;
- replace:(const char *)str withString:(id)sender caseSensitive:(BOOL)sense;
- replace:(const char *)str withString:(id)sender occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- replace:(const char *)str withString:(id)sender overlap:(BOOL)overlap;
- replace:(const char *)str withString:(id)sender occurrenceNum:(int)n overlap:(BOOL)overlap;
- replace:(const char *)str withString:(id)sender caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- replaceString:(id)sender with:(const char *)repl;
- replaceString:(id)sender with:(const char *)repl occurrenceNum:(int)n;
- replaceString:(id)sender with:(const char *)repl caseSensitive:(BOOL)sense;
- replaceString:(id)sender with:(const char *)repl occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- replaceString:(id)sender with:(const char *)repl overlap:(BOOL)overlap;
- replaceString:(id)sender with:(const char *)repl occurrenceNum:(int)n overlap:(BOOL)overlap;
- replaceString:(id)sender with:(const char *)repl caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- replaceString:(id)sender withChar:(char)aChar;
- replaceString:(id)sender withChar:(char)aChar occurrenceNum:(int)n;
- replaceString:(id)sender withChar:(char)aChar caseSensitive:(BOOL)sense;
- replaceString:(id)sender withChar:(char)aChar occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- replaceString:(id)sender withChar:(char)aChar overlap:(BOOL)overlap;
- replaceString:(id)sender withChar:(char)aChar occurrenceNum:(int)n overlap:(BOOL)overlap;
- replaceString:(id)sender withChar:(char)aChar caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- replaceString:(id)sender withString:(id)repl;
- replaceString:(id)sender withString:(id)repl occurrenceNum:(int)n;
- replaceString:(id)sender withString:(id)repl caseSensitive:(BOOL)sense;
- replaceString:(id)sender withString:(id)repl occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- replaceString:(id)sender withString:(id)repl overlap:(BOOL)overlap;
- replaceString:(id)sender withString:(id)repl occurrenceNum:(int)n overlap:(BOOL)overlap;
- replaceString:(id)sender withString:(id)repl caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
#endif

@end

@interface MiscString(Searching)

- (int)spotOf:(char)aChar occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (int)rspotOf:(char)aChar occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (const char *)rindex:(char)aChar occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (const char *)index:(char)aChar occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (int)spotOfChars:(const char *)aString occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (int)rspotOfChars:(const char *)aString occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (const char *)rindexOfChars:(const char *)aString occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (const char *)indexOfChars:(const char *)aString occurrenceNum:(int)n caseSensitive:(BOOL)sense;

- (BOOL) hasType:(int)type;
- (BOOL) isAllOfType:(int)type;
- (int)spotOfType:(int)type occurrenceNum:(int)n;
- (int)rspotOfType:(int)type occurrenceNum:(int)n;

- (int)spotOfStr:(const char *)str occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (int)rspotOfStr:(const char *)str occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (int)spotOfString:(id)sender occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (int)rspotOfString:(id)sender occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (const char *)strstr:(const char *)str occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (const char *)rstrstr:(const char *)str occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (const char *)strString:(id)sender occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (const char *)rstrString:(id)sender occurrenceNum:(int)n caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (int)numOfType:(int)type;
- (int)numOf:(const char *)str caseSensitive:(BOOL)sense overlap:(BOOL)overlap;
- (int)numOfString:(id)sender caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

#ifndef _HEADER_VIEWER_  /* convenience methods */
- (int)spotOf:(char)aChar;
- (int)spotOf:(char)aChar caseSensitive:(BOOL)sense;
- (int)spotOf:(char)aChar occurrenceNum:(int)n;
- (int)rspotOf:(char)aChar;
- (int)rspotOf:(char)aChar caseSensitive:(BOOL)sense;
- (int)rspotOf:(char)aChar occurrenceNum:(int)n;

- (const char *)rindex:(char)aChar;
- (const char *)rindex:(char)aChar occurrenceNum:(int)n;
- (const char *)rindex:(char)aChar caseSensitive:(BOOL)sense;
- (const char *)index:(char)aChar;
- (const char *)index:(char)aChar occurrenceNum:(int)n;
- (const char *)index:(char)aChar caseSensitive:(BOOL)sense;

- (int)spotOfChars:(const char *)aString;
- (int)spotOfChars:(const char *)aString caseSensitive:(BOOL)sense;
- (int)spotOfChars:(const char *)aString occurrenceNum:(int)n;
- (int)rspotOfChars:(const char *)aString;
- (int)rspotOfChars:(const char *)aString caseSensitive:(BOOL)sense;
- (int)rspotOfChars:(const char *)aString occurrenceNum:(int)n;

- (const char *)rindexOfChars:(const char *)aString;
- (const char *)rindexOfChars:(const char *)aString caseSensitive:(BOOL)sense;
- (const char *)rindexOfChars:(const char *)aString occurrenceNum:(int)n;
- (const char *)indexOfChars:(const char *)aString;
- (const char *)indexOfChars:(const char *)aString caseSensitive:(BOOL)sense;
- (const char *)indexOfChars:(const char *)aString occurrenceNum:(int)n;

- (int)spotOfType:(int)type;
- (int)rspotOfType:(int)type;

- (int)spotOfStr:(const char *)str;
- (int)spotOfStr:(const char *)str occurrenceNum:(int)n;
- (int)spotOfStr:(const char *)str caseSensitive:(BOOL)sense;
- (int)spotOfStr:(const char *)str occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (int)spotOfStr:(const char *)str overlap:(BOOL)overlap;
- (int)spotOfStr:(const char *)str occurrenceNum:(int)n overlap:(BOOL)overlap;
- (int)spotOfStr:(const char *)str caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- (int)rspotOfStr:(const char *)str;
- (int)rspotOfStr:(const char *)str occurrenceNum:(int)n;
- (int)rspotOfStr:(const char *)str caseSensitive:(BOOL)sense;
- (int)rspotOfStr:(const char *)str occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (int)rspotOfStr:(const char *)str overlap:(BOOL)overlap;
- (int)rspotOfStr:(const char *)str occurrenceNum:(int)n overlap:(BOOL)overlap;
- (int)rspotOfStr:(const char *)str caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- (int)spotOfString:(id)sender;
- (int)spotOfString:(id)sender occurrenceNum:(int)n;
- (int)spotOfString:(id)sender caseSensitive:(BOOL)sense;
- (int)spotOfString:(id)sender occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (int)spotOfString:(id)sender overlap:(BOOL)overlap;
- (int)spotOfString:(id)sender occurrenceNum:(int)n overlap:(BOOL)overlap;
- (int)spotOfString:(id)sender caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- (int)rspotOfString:(id)sender;
- (int)rspotOfString:(id)sender occurrenceNum:(int)n;
- (int)rspotOfString:(id)sender caseSensitive:(BOOL)sense;
- (int)rspotOfString:(id)sender occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (int)rspotOfString:(id)sender overlap:(BOOL)overlap;
- (int)rspotOfString:(id)sender occurrenceNum:(int)n overlap:(BOOL)overlap;
- (int)rspotOfString:(id)sender caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- (const char *)strstr:(const char *)str;
- (const char *)strstr:(const char *)str occurrenceNum:(int)n;
- (const char *)strstr:(const char *)str caseSensitive:(BOOL)sense;
- (const char *)strstr:(const char *)str occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (const char *)strstr:(const char *)str overlap:(BOOL)overlap;
- (const char *)strstr:(const char *)str occurrenceNum:(int)n overlap:(BOOL)overlap;
- (const char *)strstr:(const char *)str caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- (const char *)rstrstr:(const char *)str;
- (const char *)rstrstr:(const char *)str occurrenceNum:(int)n;
- (const char *)rstrstr:(const char *)str caseSensitive:(BOOL)sense;
- (const char *)rstrstr:(const char *)str occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (const char *)rstrstr:(const char *)str overlap:(BOOL)overlap;
- (const char *)rstrstr:(const char *)str occurrenceNum:(int)n overlap:(BOOL)overlap;
- (const char *)rstrstr:(const char *)str caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- (const char *)strString:(id)sender;
- (const char *)strString:(id)sender occurrenceNum:(int)n;
- (const char *)strString:(id)sender caseSensitive:(BOOL)sense;
- (const char *)strString:(id)sender occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (const char *)strString:(id)sender overlap:(BOOL)overlap;
- (const char *)strString:(id)sender occurrenceNum:(int)n overlap:(BOOL)overlap;
- (const char *)strString:(id)sender caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- (const char *)rstrString:(id)sender;
- (const char *)rstrString:(id)sender occurrenceNum:(int)n;
- (const char *)rstrString:(id)sender caseSensitive:(BOOL)sense;
- (const char *)rstrString:(id)sender occurrenceNum:(int)n caseSensitive:(BOOL)sense;
- (const char *)rstrString:(id)sender overlap:(BOOL)overlap;
- (const char *)rstrString:(id)sender occurrenceNum:(int)n overlap:(BOOL)overlap;
- (const char *)rstrString:(id)sender caseSensitive:(BOOL)sense overlap:(BOOL)overlap;

- (int)numOf:(const char *)str;
- (int)numOf:(const char *)str caseSensitive:(BOOL)sense;
- (int)numOf:(const char *)str overlap:(BOOL)overlap;

- (int)numOfString:(id)sender;
- (int)numOfString:(id)sender caseSensitive:(BOOL)sense;
- (int)numOfString:(id)sender overlap:(BOOL)overlap;
#endif

@end

@interface MiscString(Sybase)

- convertUnixWildcardsToSybase;
- convertToCaseInsensitiveSearchString;
- makeCaseInsensitiveSearchString;

@end

// These are legal arguments for the -isFileOfType: method...
typedef enum _MiscFileType {
	Misc_Socket           = S_IFSOCK,  // socket
	Misc_Directory        = S_IFDIR,   // directory
	Misc_PlainFile        = S_IFREG,   // regular (plain) file
	Misc_SymbolicLink     = S_IFLNK,   // symbolic link
	Misc_CharacterSpecial = S_IFCHR,   // character special
	Misc_BlockSpecial     = S_IFBLK,   // block special
	Misc_Fifo             = S_IFIFO    // fifo (Sun VFS)
} MiscFileType;

@interface MiscString(Unix)

// all MiscStrings use a global separator for splitting up paths.
// it's less overhead than making a UNIX subclass that stores these
// for each and every path...and typically you would never need to
// worry about changing these anyway...
+ setPathSeparator:(char)c;
+ setExtensionSeparator:(char)c;
+ (char)extensionSeparator;
+ (char)pathSeparator;

// passwords
- encrypt:salt;

// parsing paths
- fileName;
- pathName;
- fileExtension;
- fileBasename;
- fileNameFromZone:(NXZone *)zone;
- pathNameFromZone:(NXZone *)zone;
- fileExtensionFromZone:(NXZone *)zone;
- fileBasenameFromZone:(NXZone *)zone;
- addExtensionIfNeeded:(const char *)aString;

// manipulating paths
- replaceHomeWithTilde;
- replaceTildeWithHome;

// info about paths
- (BOOL)isRelativePath;
- (BOOL)isAbsolutePath;
- (BOOL)doesExistInFileSystem;
- (BOOL)isFileOfType:(MiscFileType)fileType;
- (int)numberOfPathComponents;
- pathComponentAt:(int)index;
- setDirectory:(const char *)dir file:(const char *)file;
- initDirectory:(const char *)dir file:(const char *)file;

- (int)system; // runs the system() function on the string

- loadFromFile:(const char *)fileName; // reads contents of file
	// into the string

@end

#endif /* _MISCSTRING_H */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Marcel Waldvogel and Netfuture.ch.