This is Source.m in view mode; [Download] [Up]
#import "Source.h"
#import <stdio.h>
#import <stdlib.h>
#import <string.h>
@implementation Source
+ newStrings:(char **)s
{
int i;
self = [super new];
for(nlines=0; s[nlines]; nlines++)
;
lines = malloc(nlines*sizeof(char *));
for(i=0; i<nlines; i++) {
lines[i] = malloc(strlen(s[i])+1);
strcpy(lines[i],s[i]);
}
lp=0;
return self;
}
- (int)getchar
{
if (lp >= nlines)
return EOF;
else
return *lines[lp++];
}
- (int)getcharWithPrompt:(char *)prompt
{
return [self getchar];
}
- (int)getline:(char *)string size:(int)max
{
if (lp >= nlines) {
*string=0;
return 0;
}
else
strncpy(string, lines[lp++], max-1);
string[max-1]=0;
return(strlen(string));
}
- (int)getline:(char *)string size:(int)max WithPrompt:(char *)prompt
{
return [self getline:string size:max];
}
- putString:(char *)string; // no op for Source
{
return self;
}
-free
{
int i;
for (i=nlines-1; i>=0; i--)
free(lines[i]);
return [super free];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.