This is GeneralExceptions.m in view mode; [Download] [Up]
/*
Copyright (C) 1996
Ovidiu Predescu <ovidiu@bx.logicnet.ro>
Mircea Oancea <mircea@jupiter.elcom.pub.ro>
Author: Ovidiu Predescu <ovidiu@bx.logicnet.ro>
This file is part of the FoundationExtensions library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <stdarg.h>
#include <stdio.h>
#include <Foundation/NSString.h>
#include <Foundation/NSDictionary.h>
#include <Foundation/NSValue.h>
#include <extensions/NSException.h>
#include <extensions/exceptions/GeneralExceptions.h>
#include <extensions/MissingMethods.h>
#if GNUSTEP_BASE_LIBRARY || LIBOBJECTS_LIBRARY
# define name_ivar e_name
# define reason_ivar e_reason
# define userInfo_ivar e_info
#else
# define name_ivar name
# define reason_ivar reason
# define userInfo_ivar userInfo
#endif
#if LIB_FOUNDATION_LIBRARY
@implementation MemoryExhaustedException
MemoryExhaustedException* memoryExhaustedException = nil;
- __init
{
name = [NSMallocException retain];
reason = @"Memory exhausted";
return self;
}
+ (void)initialize
{
memoryExhaustedException = [NSAllocateObject(self, 0, NULL) init];
}
+ (id)alloc
{
return memoryExhaustedException;
}
+ (id)allocWithZone:(NSZone*)zone
{
return memoryExhaustedException;
}
- (void)release
{
pointer = NULL;
size = 0;
}
- (id)init
{
return self;
}
- setPointer:(void**)_pointer memorySize:(unsigned)_size
{
pointer = _pointer;
size = _size;
return self;
}
@end /* MemoryExhaustedException */
@implementation MemoryDeallocationException
- setPointer:(void**)_pointer memorySize:(unsigned)_size
{
pointer = _pointer;
size = _size;
name = NSMallocException;
reason = @"Deallocation error";
return self;
}
@end /* MemoryDeallocationException */
@implementation MemoryCopyException
@end
#endif /* LIB_FOUNDATION_LIBRARY */
@implementation FileNotFoundException
- initWithFilename:(NSString*)f
{
id aux = @"filename";
self = [self initWithName:@"FileNotFoundException"
reason:[NSString stringWithFormat:@"File not found: %s", [f cString]]
userInfo:[NSDictionary dictionaryWithObjectsAndKeys:f, aux, nil]];
return self;
}
- (NSString*)filename
{
return [[self userInfo] objectForKey:@"filename"];
}
@end /* FileNotFoundException */
@implementation AssertException
- init
{
self = [self initWithName:NSInternalInconsistencyException
reason:nil userInfo:nil];
return self;
}
@end /* AssertException */
@implementation SyntaxErrorException
- init
{
self = [self initWithName:@"Syntax error" reason:nil userInfo:nil];
return self;
}
- initWithReason:(NSString*)aReason
{
self = [self initWithName:@"Syntax error" reason:aReason userInfo:nil];
return self;
}
@end /* SyntaxErrorException */
@implementation UnknownTypeException
- initForType:(const char*)type
{
self = [self initWithName:NSInvalidArgumentException
reason:@"Unknown Objective-C type encoding"
userInfo:[NSDictionary dictionaryWithObjectsAndKeys:
[NSString stringWithCString:type], @"type",
nil]];
return self;
}
@end /* UnknownTypeException */
@implementation UnknownClassException
- setClassName:(NSString*)className
{
self = [self initWithName:NSInvalidArgumentException
reason:@"Unknown Objective-C class"
userInfo:[NSDictionary dictionaryWithObjectsAndKeys:
className, @"name",
nil]];
return self;
}
@end /* UnknownClassException */
@implementation ObjcRuntimeException
@end /* ObjcRuntimeException */
@implementation InternalInconsistencyException
- init
{
self = [self initWithName:@"Internal inconsistency exception" reason:nil userInfo:nil];
return self;
}
@end /* InternalInconsistencyException */
@implementation InvalidArgumentException
- init
{
self = [self initWithName:NSInvalidArgumentException reason:nil userInfo:nil];
return self;
}
- initWithReason:(NSString*)aReason
{
self = [self initWithName:NSInvalidArgumentException
reason:aReason userInfo:nil];
return self;
}
@end /* InvalidArgumentException */
@implementation IndexOutOfRangeException
- init
{
self = [self initWithName:@"Index out of range"
reason:nil userInfo:nil];
return self;
}
- initForSize:(int)size index:(int)index
{
id keys[] = { @"size", @"index" };
id values[] = { [NSNumber numberWithInt:size],
[NSNumber numberWithInt:index] };
self = [self initWithName:@"Index out of range"
reason:nil
userInfo:[NSDictionary dictionaryWithObjects:values
forKeys:keys
count:2]];
return self;
}
@end /* IndexOutOfRangeException */
@implementation RangeException
- init
{
self = [self initWithName:NSRangeException reason:nil userInfo:nil];
return self;
}
- initWithReason:(NSString*)aReason size:(int)size index:(int)index
{
id keys[] = { @"size", @"index" };
id values[] = { [NSNumber numberWithInt:size],
[NSNumber numberWithInt:index] };
self = [self initWithName:@"Index out of range"
reason:aReason
userInfo:[NSDictionary dictionaryWithObjects:values
forKeys:keys
count:2]];
return self;
}
@end /* RangeException */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.