ObjFW
|
00001 /* 00002 * Copyright (c) 2008, 2009, 2010, 2011, 2012 00003 * Jonathan Schleifer <js@webkeks.org> 00004 * 00005 * All rights reserved. 00006 * 00007 * This file is part of ObjFW. It may be distributed under the terms of the 00008 * Q Public License 1.0, which can be found in the file LICENSE.QPL included in 00009 * the packaging of this file. 00010 * 00011 * Alternatively, it may be distributed under the terms of the GNU General 00012 * Public License, either version 2 or 3, which can be found in the file 00013 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this 00014 * file. 00015 */ 00016 00017 #ifndef __STDC_LIMIT_MACROS 00018 # define __STDC_LIMIT_MACROS 00019 #endif 00020 #ifndef __STDC_CONSTANT_MACROS 00021 # define __STDC_CONSTANT_MACROS 00022 #endif 00023 00024 #include <stdarg.h> 00025 00026 #import "OFObject.h" 00027 #import "OFString.h" 00028 00029 @class OFDataArray; 00030 00048 @interface OFStream: OFObject <OFCopying> 00049 { 00050 char *cache; 00051 char *writeBuffer; 00052 size_t cacheLength, writeBufferLength; 00053 BOOL buffersWrites; 00054 BOOL blocking; 00055 BOOL waitingForDelimiter; 00056 } 00057 00058 #ifdef OF_HAVE_PROPERTIES 00059 @property (getter=isBlocking) BOOL blocking; 00060 @property (readonly, getter=isAtEndOfStream) BOOL atEndOfStream; 00061 #endif 00062 00068 - (BOOL)isAtEndOfStream; 00069 00082 - (size_t)readNBytes: (size_t)size 00083 intoBuffer: (void*)buffer; 00084 00100 - (void)readExactlyNBytes: (size_t)length 00101 intoBuffer: (void*)buffer; 00102 00111 - (uint8_t)readInt8; 00112 00121 - (uint16_t)readBigEndianInt16; 00122 00131 - (uint32_t)readBigEndianInt32; 00132 00141 - (uint64_t)readBigEndianInt64; 00142 00151 - (float)readBigEndianFloat; 00152 00161 - (double)readBigEndianDouble; 00162 00175 - (size_t)readNBigEndianInt16s: (size_t)nInt16s 00176 intoBuffer: (uint16_t*)buffer; 00177 00190 - (size_t)readNBigEndianInt32s: (size_t)nInt32s 00191 intoBuffer: (uint32_t*)buffer; 00192 00205 - (size_t)readNBigEndianInt64s: (size_t)nInt64s 00206 intoBuffer: (uint64_t*)buffer; 00207 00220 - (size_t)readNBigEndianFloats: (size_t)nFloats 00221 intoBuffer: (float*)buffer; 00222 00235 - (size_t)readNBigEndianDoubles: (size_t)nDoubles 00236 intoBuffer: (double*)buffer; 00237 00246 - (uint16_t)readLittleEndianInt16; 00247 00256 - (uint32_t)readLittleEndianInt32; 00257 00266 - (uint64_t)readLittleEndianInt64; 00267 00276 - (float)readLittleEndianFloat; 00277 00286 - (double)readLittleEndianDouble; 00287 00300 - (size_t)readNLittleEndianInt16s: (size_t)nInt16s 00301 intoBuffer: (uint16_t*)buffer; 00302 00315 - (size_t)readNLittleEndianInt32s: (size_t)nInt32s 00316 intoBuffer: (uint32_t*)buffer; 00317 00330 - (size_t)readNLittleEndianInt64s: (size_t)nInt64s 00331 intoBuffer: (uint64_t*)buffer; 00332 00345 - (size_t)readNLittleEndianFloats: (size_t)nFloats 00346 intoBuffer: (float*)buffer; 00347 00360 - (size_t)readNLittleEndianDoubles: (size_t)nDoubles 00361 intoBuffer: (double*)buffer; 00362 00373 - (OFDataArray*)readDataArrayWithNItems: (size_t)nItems; 00374 00386 - (OFDataArray*)readDataArrayWithItemSize: (size_t)itemSize 00387 andNItems: (size_t)nItems; 00388 00395 - (OFDataArray*)readDataArrayTillEndOfStream; 00396 00411 - (OFString*)readStringWithLength: (size_t)length; 00412 00428 - (OFString*)readStringWithEncoding: (of_string_encoding_t)encoding 00429 length: (size_t)length; 00430 00437 - (OFString*)readLine; 00438 00447 - (OFString*)readLineWithEncoding: (of_string_encoding_t)encoding; 00448 00456 - (OFString*)tryReadLine; 00457 00467 - (OFString*)tryReadLineWithEncoding: (of_string_encoding_t)encoding; 00468 00477 - (OFString*)readTillDelimiter: (OFString*)delimiter; 00478 00488 - (OFString*)readTillDelimiter: (OFString*)delimiter 00489 withEncoding: (of_string_encoding_t)encoding; 00490 00500 - (OFString*)tryReadTillDelimiter: (OFString*)delimiter; 00501 00512 - (OFString*)tryReadTillDelimiter: (OFString*)delimiter 00513 withEncoding: (of_string_encoding_t)encoding; 00514 00520 - (BOOL)buffersWrites; 00521 00527 - (void)setBuffersWrites: (BOOL)enable; 00528 00532 - (void)flushWriteBuffer; 00533 00540 - (void)writeNBytes: (size_t)length 00541 fromBuffer: (const void*)buffer; 00542 00548 - (void)writeInt8: (uint8_t)int8; 00549 00555 - (void)writeBigEndianInt16: (uint16_t)int16; 00556 00562 - (void)writeBigEndianInt32: (uint32_t)int32; 00563 00569 - (void)writeBigEndianInt64: (uint64_t)int64; 00570 00576 - (void)writeBigEndianFloat: (float)float_; 00577 00583 - (void)writeBigEndianDouble: (double)double_; 00584 00594 - (size_t)writeNBigEndianInt16s: (size_t)nInt16s 00595 fromBuffer: (const uint16_t*)buffer; 00596 00606 - (size_t)writeNBigEndianInt32s: (size_t)nInt32s 00607 fromBuffer: (const uint32_t*)buffer; 00608 00618 - (size_t)writeNBigEndianInt64s: (size_t)nInt64s 00619 fromBuffer: (const uint64_t*)buffer; 00620 00630 - (size_t)writeNBigEndianFloats: (size_t)nFloats 00631 fromBuffer: (const float*)buffer; 00632 00642 - (size_t)writeNBigEndianDoubles: (size_t)nDoubles 00643 fromBuffer: (const double*)buffer; 00644 00650 - (void)writeLittleEndianInt16: (uint16_t)int16; 00651 00657 - (void)writeLittleEndianInt32: (uint32_t)int32; 00658 00664 - (void)writeLittleEndianInt64: (uint64_t)int64; 00665 00671 - (void)writeLittleEndianFloat: (float)float_; 00672 00678 - (void)writeLittleEndianDouble: (double)double_; 00679 00689 - (size_t)writeNLittleEndianInt16s: (size_t)nInt16s 00690 fromBuffer: (const uint16_t*)buffer; 00691 00701 - (size_t)writeNLittleEndianInt32s: (size_t)nInt32s 00702 fromBuffer: (const uint32_t*)buffer; 00703 00713 - (size_t)writeNLittleEndianInt64s: (size_t)nInt64s 00714 fromBuffer: (const uint64_t*)buffer; 00715 00725 - (size_t)writeNLittleEndianFloats: (size_t)nFloats 00726 fromBuffer: (const float*)buffer; 00727 00737 - (size_t)writeNLittleEndianDoubles: (size_t)nDoubles 00738 fromBuffer: (const double*)buffer; 00739 00746 - (size_t)writeDataArray: (OFDataArray*)dataArray; 00747 00754 - (size_t)writeString: (OFString*)string; 00755 00762 - (size_t)writeLine: (OFString*)string; 00763 00773 - (size_t)writeFormat: (OFConstantString*)format, ...; 00774 00785 - (size_t)writeFormat: (OFConstantString*)format 00786 withArguments: (va_list)arguments; 00787 00793 - (size_t)pendingBytes; 00794 00800 - (BOOL)isBlocking; 00801 00810 - (void)setBlocking: (BOOL)enable; 00811 00817 - (int)fileDescriptor; 00818 00822 - (void)close; 00823 00825 - (size_t)_readNBytes: (size_t)length 00826 intoBuffer: (void*)buffer; 00827 - (void)_writeNBytes: (size_t)length 00828 fromBuffer: (const void*)buffer; 00829 - (BOOL)_isWaitingForDelimiter; 00831 @end