1*16467b97STreehugger Robot// 2*16467b97STreehugger Robot// RuntimeException.m 3*16467b97STreehugger Robot// ANTLR 4*16467b97STreehugger Robot// 5*16467b97STreehugger Robot// Created by Alan Condit on 6/5/10. 6*16467b97STreehugger Robot// [The "BSD licence"] 7*16467b97STreehugger Robot// Copyright (c) 2010 Alan Condit 8*16467b97STreehugger Robot// All rights reserved. 9*16467b97STreehugger Robot// 10*16467b97STreehugger Robot// Redistribution and use in source and binary forms, with or without 11*16467b97STreehugger Robot// modification, are permitted provided that the following conditions 12*16467b97STreehugger Robot// are met: 13*16467b97STreehugger Robot// 1. Redistributions of source code must retain the above copyright 14*16467b97STreehugger Robot// notice, this list of conditions and the following disclaimer. 15*16467b97STreehugger Robot// 2. Redistributions in binary form must reproduce the above copyright 16*16467b97STreehugger Robot// notice, this list of conditions and the following disclaimer in the 17*16467b97STreehugger Robot// documentation and/or other materials provided with the distribution. 18*16467b97STreehugger Robot// 3. The name of the author may not be used to endorse or promote products 19*16467b97STreehugger Robot// derived from this software without specific prior written permission. 20*16467b97STreehugger Robot// 21*16467b97STreehugger Robot// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22*16467b97STreehugger Robot// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23*16467b97STreehugger Robot// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24*16467b97STreehugger Robot// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25*16467b97STreehugger Robot// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26*16467b97STreehugger Robot// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27*16467b97STreehugger Robot// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28*16467b97STreehugger Robot// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29*16467b97STreehugger Robot// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30*16467b97STreehugger Robot// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*16467b97STreehugger Robot 32*16467b97STreehugger Robot#import "RuntimeException.h" 33*16467b97STreehugger Robot 34*16467b97STreehugger Robot 35*16467b97STreehugger Robot@implementation RuntimeException 36*16467b97STreehugger Robot 37*16467b97STreehugger Robot+ (id) newException 38*16467b97STreehugger Robot{ 39*16467b97STreehugger Robot return [[RuntimeException alloc] init]; 40*16467b97STreehugger Robot} 41*16467b97STreehugger Robot 42*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason 43*16467b97STreehugger Robot{ 44*16467b97STreehugger Robot return [[RuntimeException alloc] init:aReason]; 45*16467b97STreehugger Robot} 46*16467b97STreehugger Robot 47*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 48*16467b97STreehugger Robot{ 49*16467b97STreehugger Robot return [[RuntimeException alloc] init:aReason userInfo:aUserInfo]; 50*16467b97STreehugger Robot} 51*16467b97STreehugger Robot 52*16467b97STreehugger Robot+ (id) newException:(NSString *)aName reason:(NSString *)aReason; 53*16467b97STreehugger Robot{ 54*16467b97STreehugger Robot return [[RuntimeException alloc] initWithName:aName reason:aReason]; 55*16467b97STreehugger Robot} 56*16467b97STreehugger Robot 57*16467b97STreehugger Robot+ (id) newException:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo; 58*16467b97STreehugger Robot{ 59*16467b97STreehugger Robot return [[RuntimeException alloc] initWithName:aName reason:aReason userInfo:aUserInfo]; 60*16467b97STreehugger Robot} 61*16467b97STreehugger Robot 62*16467b97STreehugger Robot 63*16467b97STreehugger Robot- (id) init 64*16467b97STreehugger Robot{ 65*16467b97STreehugger Robot self = [super initWithName:@"RuntimeException" reason:@"UnknownException" userInfo:nil]; 66*16467b97STreehugger Robot return(self); 67*16467b97STreehugger Robot} 68*16467b97STreehugger Robot 69*16467b97STreehugger Robot- (id) init:(NSString *)aReason 70*16467b97STreehugger Robot{ 71*16467b97STreehugger Robot self = [super initWithName:(NSString *)@"RuntimeException" reason:(NSString *)aReason userInfo:(NSDictionary *)nil]; 72*16467b97STreehugger Robot return(self); 73*16467b97STreehugger Robot} 74*16467b97STreehugger Robot 75*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 76*16467b97STreehugger Robot{ 77*16467b97STreehugger Robot self = [super initWithName:@"RuntimeException" reason:aReason userInfo:aUserInfo]; 78*16467b97STreehugger Robot return(self); 79*16467b97STreehugger Robot} 80*16467b97STreehugger Robot 81*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason 82*16467b97STreehugger Robot{ 83*16467b97STreehugger Robot self = [super initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)nil]; 84*16467b97STreehugger Robot return(self); 85*16467b97STreehugger Robot} 86*16467b97STreehugger Robot 87*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 88*16467b97STreehugger Robot{ 89*16467b97STreehugger Robot self = [super initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo]; 90*16467b97STreehugger Robot return(self); 91*16467b97STreehugger Robot} 92*16467b97STreehugger Robot 93*16467b97STreehugger Robot- (NSString *) Description 94*16467b97STreehugger Robot{ 95*16467b97STreehugger Robot return [super reason]; 96*16467b97STreehugger Robot} 97*16467b97STreehugger Robot 98*16467b97STreehugger Robot- (id) stackTrace:(NSException *)e 99*16467b97STreehugger Robot{ 100*16467b97STreehugger Robot NSArray *addrs = [e callStackReturnAddresses]; 101*16467b97STreehugger Robot NSArray *trace = [e callStackSymbols]; 102*16467b97STreehugger Robot 103*16467b97STreehugger Robot for (NSString *traceStr in trace) { 104*16467b97STreehugger Robot NSLog( @"%@", traceStr); 105*16467b97STreehugger Robot // TODO: remove special after testing 106*16467b97STreehugger Robot if ([traceStr hasPrefix:@"main("] > 0) 107*16467b97STreehugger Robot return traceStr; 108*16467b97STreehugger Robot if (![traceStr hasPrefix:@"org.stringtemplate"]) 109*16467b97STreehugger Robot return traceStr; 110*16467b97STreehugger Robot } 111*16467b97STreehugger Robot return trace; 112*16467b97STreehugger Robot} 113*16467b97STreehugger Robot 114*16467b97STreehugger Robot@end 115*16467b97STreehugger Robot 116*16467b97STreehugger Robot@implementation CloneNotSupportedException 117*16467b97STreehugger Robot 118*16467b97STreehugger Robot+ (id) newException 119*16467b97STreehugger Robot{ 120*16467b97STreehugger Robot return [[CloneNotSupportedException alloc] init]; 121*16467b97STreehugger Robot} 122*16467b97STreehugger Robot 123*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason 124*16467b97STreehugger Robot{ 125*16467b97STreehugger Robot return [[CloneNotSupportedException alloc] init:aReason]; 126*16467b97STreehugger Robot} 127*16467b97STreehugger Robot 128*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 129*16467b97STreehugger Robot{ 130*16467b97STreehugger Robot return [[CloneNotSupportedException alloc] init:aReason userInfo:aUserInfo]; 131*16467b97STreehugger Robot} 132*16467b97STreehugger Robot 133*16467b97STreehugger Robot- (id) init 134*16467b97STreehugger Robot{ 135*16467b97STreehugger Robot self = [super initWithName:@"CloneNotSupportedException" reason:@"Attempted to clone non-cloneable object" userInfo:nil]; 136*16467b97STreehugger Robot return(self); 137*16467b97STreehugger Robot} 138*16467b97STreehugger Robot 139*16467b97STreehugger Robot- (id) init:(NSString *)aReason 140*16467b97STreehugger Robot{ 141*16467b97STreehugger Robot self = [super initWithName:@"CloneNotSupportedException" reason:(NSString *)aReason userInfo:nil]; 142*16467b97STreehugger Robot return(self); 143*16467b97STreehugger Robot} 144*16467b97STreehugger Robot 145*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 146*16467b97STreehugger Robot{ 147*16467b97STreehugger Robot self = [super initWithName:@"CloneNotSupportedException" reason:aReason userInfo:aUserInfo]; 148*16467b97STreehugger Robot return(self); 149*16467b97STreehugger Robot} 150*16467b97STreehugger Robot 151*16467b97STreehugger Robot@end 152*16467b97STreehugger Robot 153*16467b97STreehugger Robot@implementation ConcurrentModificationException 154*16467b97STreehugger Robot 155*16467b97STreehugger Robot+ (id) newException 156*16467b97STreehugger Robot{ 157*16467b97STreehugger Robot return [[ConcurrentModificationException alloc] init]; 158*16467b97STreehugger Robot} 159*16467b97STreehugger Robot 160*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason 161*16467b97STreehugger Robot{ 162*16467b97STreehugger Robot return [[ConcurrentModificationException alloc] init:aReason]; 163*16467b97STreehugger Robot} 164*16467b97STreehugger Robot 165*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 166*16467b97STreehugger Robot{ 167*16467b97STreehugger Robot return [[ConcurrentModificationException alloc] init:aReason userInfo:aUserInfo]; 168*16467b97STreehugger Robot} 169*16467b97STreehugger Robot 170*16467b97STreehugger Robot- (id) init 171*16467b97STreehugger Robot{ 172*16467b97STreehugger Robot self = [super initWithName:@"ConcurrentModificationException" reason:@"UnknownException" userInfo:nil]; 173*16467b97STreehugger Robot return(self); 174*16467b97STreehugger Robot} 175*16467b97STreehugger Robot 176*16467b97STreehugger Robot- (id) init:(NSString *)aReason 177*16467b97STreehugger Robot{ 178*16467b97STreehugger Robot self = [super initWithName:@"ConcurrentModificationException" reason:(NSString *)aReason userInfo:nil]; 179*16467b97STreehugger Robot return(self); 180*16467b97STreehugger Robot} 181*16467b97STreehugger Robot 182*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 183*16467b97STreehugger Robot{ 184*16467b97STreehugger Robot self = [super initWithName:@"ConcurrentModificationException" reason:aReason userInfo:aUserInfo]; 185*16467b97STreehugger Robot return(self); 186*16467b97STreehugger Robot} 187*16467b97STreehugger Robot 188*16467b97STreehugger Robot@end 189*16467b97STreehugger Robot 190*16467b97STreehugger Robot@implementation IllegalArgumentException 191*16467b97STreehugger Robot 192*16467b97STreehugger Robot+ (id) newException 193*16467b97STreehugger Robot{ 194*16467b97STreehugger Robot return [[IllegalArgumentException alloc] init]; 195*16467b97STreehugger Robot} 196*16467b97STreehugger Robot 197*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason 198*16467b97STreehugger Robot{ 199*16467b97STreehugger Robot return [[IllegalArgumentException alloc] init:aReason]; 200*16467b97STreehugger Robot} 201*16467b97STreehugger Robot 202*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 203*16467b97STreehugger Robot{ 204*16467b97STreehugger Robot return [[IllegalArgumentException alloc] init:aReason userInfo:aUserInfo]; 205*16467b97STreehugger Robot} 206*16467b97STreehugger Robot 207*16467b97STreehugger Robot- (id) init 208*16467b97STreehugger Robot{ 209*16467b97STreehugger Robot self = [super initWithName:@"IllegalArgumentException" reason:@"IllegalStateException" userInfo:nil]; 210*16467b97STreehugger Robot return(self); 211*16467b97STreehugger Robot} 212*16467b97STreehugger Robot 213*16467b97STreehugger Robot- (id) init:(NSString *)aReason 214*16467b97STreehugger Robot{ 215*16467b97STreehugger Robot self = [super initWithName:@"IllegalArgumentException" reason:(NSString *)aReason userInfo:nil]; 216*16467b97STreehugger Robot return(self); 217*16467b97STreehugger Robot} 218*16467b97STreehugger Robot 219*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 220*16467b97STreehugger Robot{ 221*16467b97STreehugger Robot self = [super initWithName:@"IllegalArgumentException" reason:aReason userInfo:aUserInfo]; 222*16467b97STreehugger Robot return(self); 223*16467b97STreehugger Robot} 224*16467b97STreehugger Robot 225*16467b97STreehugger Robot@end 226*16467b97STreehugger Robot 227*16467b97STreehugger Robot@implementation IllegalStateException 228*16467b97STreehugger Robot 229*16467b97STreehugger Robot+ (id) newException 230*16467b97STreehugger Robot{ 231*16467b97STreehugger Robot return [[IllegalStateException alloc] init]; 232*16467b97STreehugger Robot} 233*16467b97STreehugger Robot 234*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason 235*16467b97STreehugger Robot{ 236*16467b97STreehugger Robot return [[IllegalStateException alloc] init:aReason]; 237*16467b97STreehugger Robot} 238*16467b97STreehugger Robot 239*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 240*16467b97STreehugger Robot{ 241*16467b97STreehugger Robot return [[IllegalStateException alloc] init:aReason userInfo:aUserInfo]; 242*16467b97STreehugger Robot} 243*16467b97STreehugger Robot 244*16467b97STreehugger Robot- (id) init 245*16467b97STreehugger Robot{ 246*16467b97STreehugger Robot self = [super initWithName:@"IllegalStateException" reason:@"IllegalStateException" userInfo:nil]; 247*16467b97STreehugger Robot return(self); 248*16467b97STreehugger Robot} 249*16467b97STreehugger Robot 250*16467b97STreehugger Robot- (id) init:(NSString *)aReason 251*16467b97STreehugger Robot{ 252*16467b97STreehugger Robot self = [super initWithName:@"IllegalStateException" reason:(NSString *)aReason userInfo:nil]; 253*16467b97STreehugger Robot return(self); 254*16467b97STreehugger Robot} 255*16467b97STreehugger Robot 256*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 257*16467b97STreehugger Robot{ 258*16467b97STreehugger Robot self = [super initWithName:@"IllegalStateException" reason:aReason userInfo:aUserInfo]; 259*16467b97STreehugger Robot return(self); 260*16467b97STreehugger Robot} 261*16467b97STreehugger Robot 262*16467b97STreehugger Robot@end 263*16467b97STreehugger Robot 264*16467b97STreehugger Robot@implementation IndexOutOfBoundsException 265*16467b97STreehugger Robot 266*16467b97STreehugger Robot+ (id) newException 267*16467b97STreehugger Robot{ 268*16467b97STreehugger Robot return [[IndexOutOfBoundsException alloc] init]; 269*16467b97STreehugger Robot} 270*16467b97STreehugger Robot 271*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason 272*16467b97STreehugger Robot{ 273*16467b97STreehugger Robot return [[IndexOutOfBoundsException alloc] init:aReason]; 274*16467b97STreehugger Robot} 275*16467b97STreehugger Robot 276*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 277*16467b97STreehugger Robot{ 278*16467b97STreehugger Robot return [[IndexOutOfBoundsException alloc] init:aReason userInfo:aUserInfo]; 279*16467b97STreehugger Robot} 280*16467b97STreehugger Robot 281*16467b97STreehugger Robot- (id) init 282*16467b97STreehugger Robot{ 283*16467b97STreehugger Robot self = [super initWithName:@"IndexOutOfBoundsException" reason:@"IndexOutOfBoundsException" userInfo:nil]; 284*16467b97STreehugger Robot return(self); 285*16467b97STreehugger Robot} 286*16467b97STreehugger Robot 287*16467b97STreehugger Robot- (id) init:(NSString *)aReason 288*16467b97STreehugger Robot{ 289*16467b97STreehugger Robot self = [super initWithName:@"IndexOutOfBoundsException" reason:(NSString *)aReason userInfo:nil]; 290*16467b97STreehugger Robot return(self); 291*16467b97STreehugger Robot} 292*16467b97STreehugger Robot 293*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 294*16467b97STreehugger Robot{ 295*16467b97STreehugger Robot self = [super initWithName:@"IndexOutOfBoundsException" reason:aReason userInfo:aUserInfo]; 296*16467b97STreehugger Robot return(self); 297*16467b97STreehugger Robot} 298*16467b97STreehugger Robot 299*16467b97STreehugger Robot@end 300*16467b97STreehugger Robot 301*16467b97STreehugger Robot@implementation NoSuchElementException 302*16467b97STreehugger Robot 303*16467b97STreehugger Robot+ (id) newException 304*16467b97STreehugger Robot{ 305*16467b97STreehugger Robot return [[NoSuchElementException alloc] init]; 306*16467b97STreehugger Robot} 307*16467b97STreehugger Robot 308*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason 309*16467b97STreehugger Robot{ 310*16467b97STreehugger Robot return [[NoSuchElementException alloc] init:aReason]; 311*16467b97STreehugger Robot} 312*16467b97STreehugger Robot 313*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 314*16467b97STreehugger Robot{ 315*16467b97STreehugger Robot return [[NoSuchElementException alloc] init:aReason userInfo:(NSDictionary *)aUserInfo]; 316*16467b97STreehugger Robot} 317*16467b97STreehugger Robot 318*16467b97STreehugger Robot- (id) init 319*16467b97STreehugger Robot{ 320*16467b97STreehugger Robot self = [super initWithName:@"NoSuchElementException" reason:@"UnknownException" userInfo:nil]; 321*16467b97STreehugger Robot return(self); 322*16467b97STreehugger Robot} 323*16467b97STreehugger Robot 324*16467b97STreehugger Robot- (id) init:(NSString *)aReason 325*16467b97STreehugger Robot{ 326*16467b97STreehugger Robot self = [super initWithName:@"NoSuchElementException" reason:(NSString *)aReason userInfo:(NSDictionary *)nil]; 327*16467b97STreehugger Robot return(self); 328*16467b97STreehugger Robot} 329*16467b97STreehugger Robot 330*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 331*16467b97STreehugger Robot{ 332*16467b97STreehugger Robot self = [super initWithName:@"NoSuchElementException" reason:aReason userInfo:aUserInfo]; 333*16467b97STreehugger Robot return(self); 334*16467b97STreehugger Robot} 335*16467b97STreehugger Robot 336*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 337*16467b97STreehugger Robot{ 338*16467b97STreehugger Robot self = [super initWithName:aName reason:aReason userInfo:aUserInfo]; 339*16467b97STreehugger Robot return(self); 340*16467b97STreehugger Robot} 341*16467b97STreehugger Robot 342*16467b97STreehugger Robot@end 343*16467b97STreehugger Robot 344*16467b97STreehugger Robot@implementation NullPointerException 345*16467b97STreehugger Robot 346*16467b97STreehugger Robot+ (id) newException 347*16467b97STreehugger Robot{ 348*16467b97STreehugger Robot return [[NullPointerException alloc] init]; 349*16467b97STreehugger Robot} 350*16467b97STreehugger Robot 351*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason 352*16467b97STreehugger Robot{ 353*16467b97STreehugger Robot return [[NullPointerException alloc] init:aReason]; 354*16467b97STreehugger Robot} 355*16467b97STreehugger Robot 356*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 357*16467b97STreehugger Robot{ 358*16467b97STreehugger Robot return [[NullPointerException alloc] init:aReason userInfo:(NSDictionary *)aUserInfo]; 359*16467b97STreehugger Robot} 360*16467b97STreehugger Robot 361*16467b97STreehugger Robot- (id) init 362*16467b97STreehugger Robot{ 363*16467b97STreehugger Robot self = [super initWithName:@"NullPointerException" reason:@"UnknownException" userInfo:nil]; 364*16467b97STreehugger Robot return(self); 365*16467b97STreehugger Robot} 366*16467b97STreehugger Robot 367*16467b97STreehugger Robot- (id) init:(NSString *)aReason 368*16467b97STreehugger Robot{ 369*16467b97STreehugger Robot self = [super initWithName:@"NullPointerException" reason:(NSString *)aReason userInfo:(NSDictionary *)nil]; 370*16467b97STreehugger Robot return(self); 371*16467b97STreehugger Robot} 372*16467b97STreehugger Robot 373*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 374*16467b97STreehugger Robot{ 375*16467b97STreehugger Robot self = [super initWithName:@"NullPointerException" reason:aReason userInfo:aUserInfo]; 376*16467b97STreehugger Robot return(self); 377*16467b97STreehugger Robot} 378*16467b97STreehugger Robot 379*16467b97STreehugger Robot@end 380*16467b97STreehugger Robot 381*16467b97STreehugger Robot@implementation RewriteEarlyExitException 382*16467b97STreehugger Robot 383*16467b97STreehugger Robot+ (id) newException 384*16467b97STreehugger Robot{ 385*16467b97STreehugger Robot return [[self alloc] init]; 386*16467b97STreehugger Robot} 387*16467b97STreehugger Robot 388*16467b97STreehugger Robot- (id) init 389*16467b97STreehugger Robot{ 390*16467b97STreehugger Robot self = [super initWithName:@"RewriteEarlyExitException" reason:nil userInfo:nil]; 391*16467b97STreehugger Robot return self; 392*16467b97STreehugger Robot} 393*16467b97STreehugger Robot 394*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo 395*16467b97STreehugger Robot{ 396*16467b97STreehugger Robot self = [super initWithName:aName reason:aReason userInfo:aUserInfo]; 397*16467b97STreehugger Robot return(self); 398*16467b97STreehugger Robot} 399*16467b97STreehugger Robot 400*16467b97STreehugger Robot- (NSString *) description 401*16467b97STreehugger Robot{ 402*16467b97STreehugger Robot return [self name]; 403*16467b97STreehugger Robot} 404*16467b97STreehugger Robot 405*16467b97STreehugger Robot@end 406*16467b97STreehugger Robot 407*16467b97STreehugger Robot@implementation UnsupportedOperationException 408*16467b97STreehugger Robot 409*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason 410*16467b97STreehugger Robot{ 411*16467b97STreehugger Robot return [[RuntimeException alloc] initWithName:@"Unsupported Operation Exception" reason:aReason userInfo:nil]; 412*16467b97STreehugger Robot} 413*16467b97STreehugger Robot 414*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason 415*16467b97STreehugger Robot{ 416*16467b97STreehugger Robot self=[super initWithName:aName reason:aReason userInfo:nil]; 417*16467b97STreehugger Robot return self; 418*16467b97STreehugger Robot} 419*16467b97STreehugger Robot 420*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)userInfo 421*16467b97STreehugger Robot{ 422*16467b97STreehugger Robot self=[super initWithName:aName reason:aReason userInfo:userInfo]; 423*16467b97STreehugger Robot return self; 424*16467b97STreehugger Robot} 425*16467b97STreehugger Robot 426*16467b97STreehugger Robot@end 427*16467b97STreehugger Robot 428