Overview
Comment: | Change OFFile API, add OFStream protocol. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
f32e7ed45278424115ec049511b20bea |
User & Date: | js on 2008-12-06 15:22:55 |
Other Links: | manifest | tags |
Context
2008-12-06
| ||
15:28 | Also install OFStream.h. check-in: 5bc198ef05 user: js tags: trunk | |
15:22 | Change OFFile API, add OFStream protocol. check-in: f32e7ed452 user: js tags: trunk | |
15:14 | Rename cString to getCString, as this needs to be generated. check-in: 9c420c6cc3 user: js tags: trunk | |
Changes
Modified src/OFFile.h from [8e748f0d5d] to [7e04efd7c9].
︙ | ︙ | |||
9 10 11 12 13 14 15 16 17 18 19 | * the packaging of this file. */ #import <stdio.h> #import <sys/types.h> #import "OFObject.h" /** * The OFFile class provides functions to read, write and manipulate files. */ | > | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | * the packaging of this file. */ #import <stdio.h> #import <sys/types.h> #import "OFObject.h" #import "OFStream.h" /** * The OFFile class provides functions to read, write and manipulate files. */ @interface OFFile: OFObject <OFStream> { FILE *fp; } /** * \param path The path to the file to open as a C string * \param mode The mode in which the file should be opened as a C string |
︙ | ︙ | |||
104 105 106 107 108 109 110 | * \param buf The buffer into which the data is read * \param size The size of the data that should be read. * The buffer MUST be at least size * nitems big! * \param nitems nitem The number of items to read * The buffer MUST be at least size * nitems big! * \return The number of bytes read */ | | | > | > > > > > > > > > > > | > > > > > > > | | | > | > > > > > > > > > | 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 | * \param buf The buffer into which the data is read * \param size The size of the data that should be read. * The buffer MUST be at least size * nitems big! * \param nitems nitem The number of items to read * The buffer MUST be at least size * nitems big! * \return The number of bytes read */ - (size_t)readNItems: (size_t)nitems ofSize: (size_t)size intoBuffer: (uint8_t*)buf; /** * Reads from the file into a buffer. * * \param buf The buffer into which the data is read * \param size The size of the data that should be read. * The buffer MUST be at least size big! * \return The number of bytes read */ - (size_t)readNBytes: (size_t)size intoBuffer: (uint8_t*)buf; /** * Reads from the file into a new buffer. * * \param size The size of the data that should be read * \param nitem The number of items to read * \return A new buffer with the data read. * It is part of the memory pool of the OFFile. */ - (uint8_t*)readNItems: (size_t)nitems ofSize: (size_t)size; /** * Reads from the file into a new buffer. * * \param size The size of the data that should be read * \return A new buffer with the data read. * It is part of the memory pool of the OFFile. */ - (uint8_t*)readNBytes: (size_t)size; /** * Writes from a buffer into the file. * * \param buf The buffer from which the data is written to the file * \param size The size of the data that should be written * \param nitem The number of items to write * \return The number of bytes written */ - (size_t)writeNItems: (size_t)nitems ofSize: (size_t)size fromBuffer: (uint8_t*)buf; /** * Writes from a buffer into the file. * * \param buf The buffer from which the data is written to the file * \param size The size of the data that should be written * \return The number of bytes written */ - (size_t)writeNBytes: (size_t)size fromBuffer: (uint8_t*)buf; @end |
Modified src/OFFile.m from [1bbfec1dfa] to [af02f63c5b].
︙ | ︙ | |||
82 83 84 85 86 87 88 | } - (BOOL)atEndOfFile { return (feof(fp) == 0 ? NO : YES); } | | | | | > > > > > > > | > | | | | > > | > > | > > > > > > > > > > | 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 | } - (BOOL)atEndOfFile { return (feof(fp) == 0 ? NO : YES); } - (size_t)readNItems: (size_t)nitems ofSize: (size_t)size intoBuffer: (uint8_t*)buf { size_t ret; if ((ret = fread(buf, size, nitems, fp)) == 0 && !feof(fp)) [[OFReadFailedException newWithObject: self andSize: size andNItems: nitems] raise]; return ret; } - (size_t)readNBytes: (size_t)size intoBuffer: (uint8_t*)buf { return [self readNItems: size ofSize: 1 intoBuffer: buf]; } - (uint8_t*)readNItems: (size_t)nitems ofSize: (size_t)size { uint8_t *ret; ret = [self getMemForNItems: nitems ofSize: size]; @try { [self readNItems: nitems ofSize: size intoBuffer: ret]; } @catch (OFReadFailedException *e) { [self freeMem: ret]; @throw e; return NULL; } return ret; } - (uint8_t*)readNBytes: (size_t)size { return [self readNItems: size ofSize: 1]; } - (size_t)writeNItems: (size_t)nitems ofSize: (size_t)size fromBuffer: (uint8_t*)buf { size_t ret; if ((ret = fwrite(buf, size, nitems, fp)) == 0 && size != 0 && nitems != 0) [[OFWriteFailedException newWithObject: self andSize: size andNItems: nitems] raise]; return ret; } - (size_t)writeNBytes: (size_t)size fromBuffer: (uint8_t*)buf { return [self writeNItems: size ofSize: 1 fromBuffer: buf]; } @end |
Added src/OFStream.h version [6c96d5c694].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | /* * 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. */ /** * The OFStream protocol provides functions to read and write streams. */ @protocol OFStream /** * Reads from the stream into a buffer. * * \param buf The buffer into which the data is read * \param size The size of the data that should be read. * The buffer MUST be at least size big! * \return The number of bytes read */ - (size_t)readNBytes: (size_t)size intoBuffer: (uint8_t*)buf; /** * Reads from the stream into a new buffer. * * \param size The size of the data that should be read * \return A new buffer with the data read. * It is part of the memory pool of the OFFile. */ - (uint8_t*)readNBytes: (size_t)size; /** * Writes from a buffer into the file. * * \param buf The buffer from which the data is written to the file * \param size The size of the data that should be written * \return The number of bytes written */ - (size_t)writeNBytes: (size_t)size fromBuffer: (uint8_t*)buf; @end |
Modified tests/OFHashes/OFHashes.m from [14ae7b2f3f] to [04796aa034].
︙ | ︙ | |||
31 32 33 34 35 36 37 | OFMD5Hash *md5 = [OFMD5Hash new]; OFSHA1Hash *sha1 = [OFSHA1Hash new]; OFFile *f = [OFFile newWithPath: "testfile" andMode: "rb"]; while (![f atEndOfFile]) { | | | < | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | OFMD5Hash *md5 = [OFMD5Hash new]; OFSHA1Hash *sha1 = [OFSHA1Hash new]; OFFile *f = [OFFile newWithPath: "testfile" andMode: "rb"]; while (![f atEndOfFile]) { len = [f readNBytes: 64 intoBuffer: buf]; [md5 updateWithBuffer: buf ofSize: len]; [sha1 updateWithBuffer: buf ofSize: len]; } [f free]; |
︙ | ︙ |