Changes

Jump to navigation Jump to search
107 bytes added ,  16:40, 8 July 2022
Switched to Syntax Highlighting
Line 26: Line 26:  
==Example Code==
 
==Example Code==
   −
<tt>
+
<syntaxhighlight lang=objective-c>
 
   
- (BOOL)readFile:(NSString *)filename returnError:(NSMutableString *)errorString  
 
- (BOOL)readFile:(NSString *)filename returnError:(NSMutableString *)errorString  
 
 
 
{
 
{
:unsigned long i;
+
  unsigned long i;
   −
:unsigned long num_lines, num_rows, lines_to_skip;
+
  unsigned long num_lines, num_rows, lines_to_skip;
   −
:unsigned long row,column;
+
  unsigned long row,column;
   −
:FILE *fp;
+
  FILE *fp;
 
 
:[errorString setString:@"no error"];
+
  [errorString setString:@"no error"];
 
 
:fp = fopen([filename cStringUsingEncoding:NSASCIIStringEncoding],"r");
+
  fp = fopen([filename cStringUsingEncoding:NSASCIIStringEncoding],"r");
 
 
:// set up a line buffer
+
  // set up a line buffer
   −
:LineBuffer *line = NewLineBuffer(1000);
+
  LineBuffer *line = NewLineBuffer(1000);
 
 
:// how many lines in the file
+
  // how many lines in the file
   −
:num_lines = CountLinesInFile(line,fp);  
+
  num_lines = CountLinesInFile(line,fp);  
   −
:// count lines rewinds the file, so we're back at the beginning..
+
  // count lines rewinds the file, so we're back at the beginning..
   −
:lines_to_skip = NUM_HEADER_LINES;
+
  lines_to_skip = NUM_HEADER_LINES;
   −
:num_rows = num_lines – lines_to_skip;
+
  num_rows = num_lines – lines_to_skip;
 
 
:// skip the header lines, if they exist
+
  // skip the header lines, if they exist
   −
:for (i=0;i<lines_to_skip;i++) GetNextLine(line,fp);  
+
  for (i=0;i<lines_to_skip;i++) GetNextLine(line,fp);  
 
 
:// read in all the rows and columns
+
  // read in all the rows and columns
   −
:column = 0;
+
  column = 0;
   −
:for(row=0;row<num_rows;row++) {
+
  for(row=0;row<num_rows;row++) {
   −
::if (GetNextLine(line,fp)) {
+
    if (GetNextLine(line,fp)) {
   −
:::while (GetNextTabField(line, tabtext)) {
+
      while (GetNextTabField(line, tabtext)) {
 
 
::::SetRowColumnText(row,column,tabtext);
+
        SetRowColumnText(row,column,tabtext);
   −
::::column++;
+
        column++;
   −
:::}
+
      }
   −
::}
+
    }
   −
:}
+
  }
 
 
   −
:// all the rows have been read in
+
  // all the rows have been read in
   −
:// done reading from the file, so dispose of file stuff
+
  // done reading from the file, so dispose of file stuff
   −
:fclose(fp);
+
  fclose(fp);
   −
:DisposeLineBuffer(line);
+
  DisposeLineBuffer(line);
 
 
:return(TRUE);
+
  return(TRUE);
    
}
 
}
</tt>
+
</syntaxhighlight>
    
==LineBuffer data structure==
 
==LineBuffer data structure==
<blockquote>
  −
<tt> typedef struct {
      +
<syntaxhighlight lang=objective-c>
 +
typedef struct {
   −
:unsigned long max; // maximum size of the line (i.e. size of buffer pointed to by text)
+
  unsigned long max; // maximum size of the line (i.e. size of buffer pointed to by text)
   −
:char *text; // the buffer that contains the last line read from the file
+
  char *text; // the buffer that contains the last line read from the file
   −
:char *textptr; // for internal use; a ptr to the start of the next tab field
+
  char *textptr; // for internal use; a ptr to the start of the next tab field
   −
:char *textend; // for internal use; a pointer to the end of the line
+
  char *textend; // for internal use; a pointer to the end of the line
   −
:unsigned long length; // the length of the line, ie. the number of characters that were read in from the file
+
  unsigned long length; // the length of the line, ie. the number of characters that were read in from the file
   −
:char *buffer_ptr; // points to start of next line in a buffer -- initialized by SetBuffer
+
  char *buffer_ptr; // points to start of next line in a buffer -- initialized by SetBuffer
   −
:unsigned long buffer_size; // the total number of characters in the buffer -- initialized by SetBuffer
+
  unsigned long buffer_size; // the total number of characters in the buffer -- initialized by SetBuffer
    +
} LineBuffer;
 +
</syntaxhighlight>
   −
} LineBuffer;
  −
</tt>
  −
</blockquote>
      
==Routines==
 
==Routines==

Navigation menu