This is RCStringCharacter.m in view mode; [Download] [Up]
#import <RCString.h>
/*
Copyright (C) 1992. Bruce Ediger.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License.
*/
//
// implementation of "character substitution and retrieval" methods
//
@implementation RCString (Characters)
- (int)retrieveCharacterAt:(int)index
{
int iRetval = 0;
if (index >= 0 && p && p->s && p->l > index)
iRetval = p->s[index];
return iRetval;
}
- substituteCharacter:(int)aChar at:(int)index
{
if (index >= 0 && p && p->s && p->l - 1 > index) {
if (p->n > 1)
[self copyReference];
p->s[index] = aChar;
}
return self;
}
- insertCharacter:(int)aChar at:(int)index
{
if (index >= 0 && p && p->s && p->l - 1 > index) {
char *bpNewString;
if (p->n > 1)
[self copyReference];
bpNewString = malloc(p->l + 1);
if (bpNewString) {
bcopy(p->s, bpNewString, index);
bpNewString[index] = aChar;
bcopy(&p->s[index], &bpNewString[index + 1], p->l - index);
free(p->s);
p->s = bpNewString;
++p->l;
}
}
return self;
}
#ifndef INDEX
#define INDEX(a, b) index((a), (b))
#define RINDEX(a, b) rindex((a), (b))
#else
#define INDEX(a, b) strchr((a), (b))
#define RINDEX(a, b) strrchr((a), (b))
#endif
- (int)indexOfCharacter:(int)aChar
{
char *bpTheChar;
int irRetval = -1;
if (p && p->s) {
bpTheChar = INDEX(p->s, aChar);
if (bpTheChar)
irRetval = (unsigned int)bpTheChar - (unsigned int)p->s;
}
return irRetval;
}
- (int)lastIndexOfCharacter:(int)aChar
{
char *bpTheChar;
int irRetval = -1;
if (p && p->s) {
bpTheChar = RINDEX(p->s, aChar);
if (bpTheChar)
irRetval = (unsigned int)bpTheChar - (unsigned int)p->s;
}
return irRetval;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.