oolite/src/Core/Debug/OOTCPStreamDecoderAbstracti...

123 lines
3.7 KiB
Objective-C

/* OOTCPStreamDecoderAbstractionLayer.h
Abstraction layer to allow OOTCPStreamDecoder to work with CoreFoundation/
CF-Lite, Cocoa Foundation or GNUstep Foundation.
*/
#ifndef INCLUDED_OOTCPStreamDecoderAbstractionLayer_h
#define INCLUDED_OOTCPStreamDecoderAbstractionLayer_h
#ifndef OOTCPSTREAM_USE_COREFOUNDATION
#define OOTCPSTREAM_USE_COREFOUNDATION 0
#endif
#if OOTCPSTREAM_USE_COREFOUNDATION
#include <CoreFoundation/CoreFoundation.h>
#import "JAAutoreleasePool.h"
#define OOALRelease(object) CFRelease(object)
#define OOTypeDescription(object) JAAutorelease(CFCopyTypeIDDescription(CFGetTypeID(object)))
typedef CFStringRef OOALStringRef;
#define OOALIsString(object) (CFGetTypeID(object) == CFStringGetTypeID())
#define OOALSTR(str) CFSTR(str)
#define OOALStringCreateWithFormatAndArguments(format, args) CFStringCreateWithFormatAndArguments(kCFAllocatorDefault, NULL, format, args)
typedef CFDictionaryRef OOALDictionaryRef;
#define OOALIsDictionary(object) (CFGetTypeID(object) == CFDictionaryGetTypeID())
#define OOALDictionaryGetValue(dictionary, key) CFDictionaryGetValue(dictionary, key)
typedef CFDataRef OOALDataRef;
typedef CFMutableDataRef OOALMutableDataRef;
#define OOALIsData(object) (CFGetTypeID(object) == CFDataGetTypeID())
#define OOALDataCreateMutable(capacity) CFDataCreateMutable(kCFAllocatorDefault, capacity)
#define OOALMutableDataAppendBytes(data, bytes, length) CFDataAppendBytes(data, bytes, length)
#define OOALDataGetBytePtr(data) CFDataGetBytePtr(data)
#define OOALDataGetLength(data) CFDataGetLength(data)
typedef JAAutoreleasePoolRef OOALAutoreleasePoolRef;
#define OOALCreateAutoreleasePool() JACreateAutoreleasePool()
#define OOALDestroyAutoreleasePool(pool) JADestroyAutoreleasePool(pool)
#define OOALPropertyListFromData(data, errStr) JAAutorelease(CFPropertyListCreateFromXMLData(kCFAllocatorDefault, data, kCFPropertyListImmutable, errStr))
#else /* !OOTCPSTREAM_USE_COREFOUNDATION */
#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h>
#if __OBJC__
#import <Foundation/Foundation.h>
typedef id OOALObjectRef;
typedef NSString *OOALStringRef;
typedef NSData *OOALDataRef;
typedef NSMutableData *OOALMutableDataRef;
typedef NSDictionary *OOALDictionaryRef;
typedef NSAutoreleasePool *OOALAutoreleasePoolRef;
#define OOALSTR(x) @""x
#else
typedef const void *OOALObjectRef;
typedef const struct NSString *OOALStringRef;
typedef const struct NSData *OOALDataRef;
typedef struct NSData *OOALMutableDataRef;
typedef const struct NSDictionary *OOALDictionaryRef;
typedef const struct NSAutoreleasePool *OOALAutoreleasePoolRef;
OOALStringRef OOALGetConstantString(const char *string); // Should only be used with string literals!
#define OOALSTR(string) OOALGetConstantString("" string "")
#endif
void OOALRelease(OOALObjectRef object);
OOALStringRef OOTypeDescription(OOALObjectRef object);
bool OOALIsString(OOALObjectRef object);
OOALStringRef OOALStringCreateWithFormatAndArguments(OOALStringRef format, va_list args);
bool OOALIsDictionary(OOALObjectRef object);
OOALObjectRef OOALDictionaryGetValue(OOALDictionaryRef dictionary, OOALObjectRef key);
bool OOALIsData(OOALObjectRef object);
OOALMutableDataRef OOALDataCreateMutable(size_t capacity);
void OOALMutableDataAppendBytes(OOALMutableDataRef data, const void *bytes, size_t length);
const void *OOALDataGetBytePtr(OOALDataRef data);
size_t OOALDataGetLength(OOALDataRef data);
OOALAutoreleasePoolRef OOALCreateAutoreleasePool(void);
#define OOALDestroyAutoreleasePool(pool) OOALRelease(pool)
OOALObjectRef OOALPropertyListFromData(OOALMutableDataRef data, OOALStringRef *errStr);
#endif /* OOTCPSTREAM_USE_COREFOUNDATION */
#endif /* INCLUDED_OOTCPStreamDecoderAbstractionLayer_h */