nyctergatis.com

Contact

Projects
Sysquake Remote Live
NME
PDF
Hike
Sudoku
GifBuilder
jpeglib for Palm OS
MySQL Client
Cross-GCC for Mac OS
NMEObjC.m
Go to the documentation of this file.
00001 
00008 /* License: new BSD license (see NME.h) */
00009 
00010 #import "NMEObjC.h"
00011 #import "NME.h"
00012 
00013 @implementation NSData(NME)
00014 
00015 + (NSData *)dataWithNME:(char const *)src length:(int)length
00016         fontSize:(int)fontSize format:(char)format
00017 {
00018     NMEText buf, dest;
00019     NMEInt bufSize, destLen;
00020     NMEErr err;
00021     NSData *data;
00022     NMEOutputFormat const *f;
00023     NMEOutputFormat formatDebugNested;
00024     
00025     bufSize = 1024 + 2 * length;
00026     
00027 tryAgain:
00028     buf = malloc(bufSize);
00029     if (!buf)
00030         return nil;
00031     
00032     switch (format)
00033     {
00034         case 'd':
00035             f = &NMEOutputFormatDebug;
00036             break;
00037         case 'D':
00038             formatDebugNested = NMEOutputFormatDebug;
00039             formatDebugNested.sublistInListItem = TRUE;
00040             f = &formatDebugNested;
00041             break;
00042         case 'h':
00043             f = &NMEOutputFormatHTML;
00044             break;
00045         case 'l':
00046             f = &NMEOutputFormatLaTeX;
00047             break;
00048         case 'n':
00049             f = &NMEOutputFormatNME;
00050             break;
00051         case 'r':
00052             f = &NMEOutputFormatRTF;
00053             break;
00054         default:
00055             f = &NMEOutputFormatText;
00056             break;
00057     }
00058     
00059     err = NMEProcess(src, length,
00060             buf, bufSize,
00061             kNMEProcessOptDefault, "\n", f, fontSize,
00062             &dest, &destLen, NULL);
00063     if (err == kNMEErrNotEnoughMemory)
00064     {
00065         if (bufSize < 65536 + 10 * length)
00066         {
00067             free((void *)buf);
00068             bufSize *= 2;
00069             goto tryAgain;
00070         }
00071         else
00072         {
00073             free((void *)buf);
00074             return nil;
00075         }
00076     }
00077     
00078     data = [NSData dataWithBytes:dest length:destLen];
00079     free((void *)buf);
00080     return data;
00081 }
00082 
00083 + (NSData *)dataWithNME:(char const *)src length:(int)length
00084         fontSize:(int)fontSize
00085 {
00086     return [NSData dataWithNME:src length:length
00087             fontSize:fontSize format:'r'];
00088 }
00089 
00090 + (NSData *)dataWithNMEString:(NSString *)src
00091         fontSize:(int)fontSize format:(char)format;
00092 {
00093     NSData *data = [src dataUsingEncoding:NSUTF8StringEncoding];
00094     return [NSData dataWithNME:[data bytes] length:[data length]
00095             fontSize:fontSize format:'r'];
00096 }
00097 
00098 @end
Generated by Doxygen.
Copyright 2007-2013, Yves Piguet.
All rights reserved.