Differences From Artifact [37b58b7cb0]:
- File src/OFExceptions.m — part of check-in [6072f61f83] at 2008-10-07 21:25:10 on branch trunk — OFFile improvements. (user: js, size: 3510) [annotate] [blame] [check-ins using]
To Artifact [6d13800ff5]:
- File
src/OFExceptions.m
— part of check-in
[b597d49f43]
at
2008-10-08 23:15:26
on branch trunk
— Multiple changes, see details.
* OFObject getMem: renamd to getMemWithSize:.
* OFString compare: renamed to compareTo:.
* Exceptions don't throw itself anymore.
* Exceptions include an error string now.
* Exceptions now got raise and string.
* New methods for OFFile:
* changeModeOfFile:toMode:
* changeOwnerOfFile:toOwner:andGroup:
* delete:
* link:to:
* symlink:to:
* OFFile isEndOfFile renamd to atEndOfFile
* OFNotImplementedExeception newWithObject:andMethod renamed to
newWithObject:andSelector:.
* Tests updated accordingly.
* TODO list added. (user: js, size: 3769) [annotate] [blame] [check-ins using]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /* * Copyright (c) 2008 * Jonathan Schleifer <js@webkeks.org> * * All rights reserved. * * This file is part of libobjfw. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE included in * the packaging of this file. */ #import <stdio.h> #import "OFExceptions.h" @implementation OFException + newWithObject: (id)obj { return [[OFException alloc] initWithObject: obj]; } - initWithObject: (id)obj { | > > | > > > > > > > > > > > > > > > > > > > | > | | < < | | | > > | | < < > | > | | | | < < > | > < < > | | < < > | | < < > | | < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | /* * Copyright (c) 2008 * Jonathan Schleifer <js@webkeks.org> * * All rights reserved. * * This file is part of libobjfw. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE included in * the packaging of this file. */ #import <stdio.h> #import <stdlib.h> #import "OFExceptions.h" @implementation OFException + newWithObject: (id)obj { return [[OFException alloc] initWithObject: obj]; } - initWithObject: (id)obj { if ((self = [super init])) errstr = NULL; return self; } - free { if (errstr != NULL) free(errstr); return [super free]; } - (void)raise { @throw self; } - (char*)string { return errstr; } @end @implementation OFNoMemException + newWithObject: (id)obj andSize: (size_t)size { return [[OFNoMemException alloc] initWithObject: obj andSize: size]; } - initWithObject: (id)obj andSize: (size_t)size { if ((self = [super init])) asprintf(&errstr, "ERROR: Could not allocate %zu bytes for " "object of class %s!\n", size, [obj name]); return self; } @end @implementation OFNotImplementedException + newWithObject: (id)obj andSelector: (SEL)sel { return [[OFNotImplementedException alloc] initWithObject: obj andSelector: sel]; } - initWithObject: (id)obj andSelector: (SEL)sel { if ((self = [super init])) /* FIXME: Is casting SEL to char* portable? */ asprintf(&errstr, "ERROR: Requested selector %s not " "implemented in %s!\n", (char*)sel, [obj name]); return self; } @end @implementation OFMemNotPartOfObjException + newWithObject: (id)obj andPointer: (void*)ptr { return [[OFMemNotPartOfObjException alloc] initWithObject: obj andPointer: ptr]; } - initWithObject: (id)obj andPointer: (void*)ptr { if ((self = [super init])) asprintf(&errstr, "ERROR: Memory at %p was not allocated as " "part of object of class\n" "ERROR: %s!\n" "ERROR: -> Not changing memory allocation!\n" "ERROR: (Hint: It is possible that you tried to free the " "same memory twice!)\n", ptr, [obj name]); return self; } @end @implementation OFOverflowException + newWithObject: (id)obj { return [[OFOverflowException alloc] initWithObject: obj]; } - initWithObject: (id)obj { if ((self = [super init])) asprintf(&errstr, "ERROR: Overflow in object of class %s!\n", [obj name]); return self; } @end @implementation OFOpenFileFailedException + newWithObject: (id)obj andPath: (const char*)path andMode: (const char*)mode { return [[OFOpenFileFailedException alloc] initWithObject: obj andPath: path andMode: mode]; } - initWithObject: (id)obj andPath: (const char*)path andMode: (const char*)mode { if ((self = [super init])) asprintf(&errstr, "ERROR: Failed to open file %s with mode %s " "in object of class %s!\n", path, mode, [self name]); return self; } @end @implementation OFReadOrWriteFailedException + newWithObject: (id)obj andSize: (size_t)size andNItems: (size_t)nitems { return [[OFReadOrWriteFailedException alloc] initWithObject: obj andSize: size andNItems: nitems]; } @end @implementation OFReadFailedException - initWithObject: (id)obj andSize: (size_t)size andNItems: (size_t)nitems { if ((self = [super init])) asprintf(&errstr, "ERROR: Failed to read %zu items of size " "%zu in object of class %s!\n", nitems, size, [obj name]); return self; } @end @implementation OFWriteFailedException - initWithObject: (id)obj andSize: (size_t)size andNItems: (size_t)nitems { if ((self = [super init])) asprintf(&errstr, "ERROR: Failed to write %zu items of size " "%zu in object of class %s!\n", nitems, size, [obj name]); return self; } @end |