This is NXCoder.m in view mode; [Download] [Up]
/* Implementation for NXCoder * * Copyright (C) 1994 The Board of Trustees of * The Leland Stanford Junior University. All Rights Reserved. * * Authors: Paul Kunz * * This file is part of an Objective-C library * * NXCoder.m,v 1.6 1995/01/25 04:17:01 pfkeb Exp */ /* Based on * (Preliminary Documentation) Copyright (c) 1994 by NeXT Computer, Inc. * All Rights Reserved. * * An implementation of NSCoder that uses NXTypedStream without NSCoder * */ #include "NXCoder.h" #include "NSString.h" #include <stdarg.h> /* for ANSI programs */ #include <stdio.h> #include <gnuarchive/encoding.h> @implementation NXCoder // Encoding Data - (void)encodeArrayOfObjCType:(const char *)types count:(unsigned)count at:(const void *)array { NXWriteArray( stream, types, count, array); return; } - (void)encodeBycopyObject:(id)anObject; { [self encodeObject:anObject]; return; } - (void)encodeConditionalObject:(id)anObject; { [self encodeObject:anObject]; return; } // - (void)encodeDataObject:(NSData *)data; - (void)encodeObject:(id)anObject { NXWriteObject( stream, anObject); return; } - (void)encodeObjectReference:(id)anObject { NXWriteObjectReference( stream, anObject); return; } // - (void)encodePropertyList:(id)plist; // - (void)encodePoint:(NSPoint)point; // - (void)encodeRect:(NSRect)rect; - (void)encodeRootObject:(id)rootObject { NXWriteRootObject( stream, rootObject); return; } - (void)encodeSize:(NXSize)size { NXWriteSize(stream,&size); return; } - (void) encodeColor:(NXColor *)aColor { /* not supported in NSCoder */ NXWriteColor(stream, *aColor); return; } - (void)encodeValueOfObjCType:(const char *)type at:(const void *)address { NXWriteType( stream, type, address ); return; } // - (void)encodeValuesOfObjCTypes:(const char *)types, args, ... // Decoding Data - (void)decodeArrayOfObjCType:(const char *)types count:(unsigned)count at:(void *)address { NXReadArray( stream, types, count, address ); return; } // - (NSData *)decodeDataObject; - (id)decodeObject { id object; object = NXReadObject( stream ); return object; } // - (id)decodePropertyList; // - (NSPoint)decodePoint; - (NXRect)decodeRect { NXRect rect; NXReadRect(stream, &rect); return rect; } - (NXSize)decodeSize { NXSize size; NXReadSize( stream, &size); return size; } - (void)decodeValueOfObjCType:(const char *)type at:(void *)address { NXReadType( stream, type, address ); return; } - (NXColor) decodeColor { /* not supported in NSCoder */ return NXReadColor(stream); } - (void)decodeValuesOfObjCTypes:(const char *)types, ... { #define CODER_MAX_VAR_ARGS 10 va_list args; const char *c; char *where[CODER_MAX_VAR_ARGS]; int i; va_start(args, types); for ( c = types, i = 0; *c; c = objc_skip_typespec(c) ) { if ( i < CODER_MAX_VAR_ARGS ) { where[i++] = va_arg(args, char*); } else { printf( "[NXCoder decodeValuesOfObjCTypes]:" " Maximum number of args exceeded\n"); return; } } va_end(args); NXReadTypes(stream, types, where[0], where[1], where[2], where[3], where[4], where[5], where[6], where[7], where[8], where[9]); return; } // Managing Zones // - (NSZone *)objectZone; // - (void)setObjectZone:(NSZone *)zone; // Getting a Version // - (unsigned int)systemVersion; - (unsigned int)versionForClassName:(NSString *)className { const char *class = [className cString]; return NXTypedStreamClassVersion( stream, class ); } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.