Annotation of objc/NXPropertyList.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * "Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.0 (the 'License').  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License."
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: /*     NXPropertyList.h
                     25:        Basic protocol for property lists
                     26:        Copyright 1991, NeXT, Inc.
                     27:        Bertrand, August 1991
                     28: */
                     29: 
                     30: #import "NXString.h"
                     31: #import "hashtable.h"
                     32: #import "maptable.h"
                     33: #import "List.h"
                     34:  
                     35: /********      The basic property list protocol                ********/
                     36: 
                     37: @protocol NXPropertyList
                     38: - (unsigned)count;
                     39: - (BOOL)member:(NXString *)key;
                     40: - get:(NXString *)key;
                     41:     /* returns nil or value */
                     42: - insert:(NXString *)key value:value;
                     43:     /* returns nil or previous value; 
                     44:     caller is responsible for freing previous value */
                     45: - remove:(NXString *)key;
                     46:     /* returns nil or previous value; 
                     47:     caller is responsible for freing previous value */
                     48: - empty;
                     49: - (NXMapState)initEnumeration;
                     50:     /* To enumerate use something like:
                     51:        NXMapState      state = [self initEnumeration];
                     52:         NXString       *key;
                     53:        id              value;
                     54:        while ([self enumerate:&state key:&key value:&value]) {
                     55:                ...
                     56:        }
                     57:     */
                     58: - (BOOL)enumerate:(NXMapState *)state key:(NXString **)refKey value:(id *)refValue;
                     59:     
                     60: @end
                     61: 
                     62: /********      A class implementing it         ********/
                     63: 
                     64: @interface NXPropertyList:Object <NXPropertyList> {
                     65:     NXMapTable *table;
                     66: }
                     67: @end
                     68: 
                     69: /********      Basic ASCII read/write of property lists        ********/
                     70: 
                     71: @interface NXPropertyList (Basic_IO)
                     72: - initFromStream:(NXStream *)stream;
                     73: - initFromPath:(NXString *)path;
                     74:     /* all init methods must be called just after alloc; 
                     75:        they may return nil in case of inexistant file or syntax error;  
                     76:        Only syntax errors are logged on console */
                     77: 
                     78: - (void)writeToStream:(NXStream *)stream;
                     79: - (BOOL)writeToPath:(NXString *)path safely:(BOOL)safe;
                     80:     /* uses a temporary ~ file, and then atomically moves the file */
                     81: - (BOOL)writeToPath:(NXString *)path;
                     82:     /* All basic write function do indenting;
                     83:        BOOL returned indicates success */
                     84:     
                     85: @end
                     86: 
                     87: /********      A list that really frees its elements   ********/
                     88: 
                     89: @interface NXCleanList:List
                     90: - free;
                     91:     /* sends free to each of its objects */
                     92: @end
                     93: 
                     94: /********      Fancy ASCII read/write of property lists        ********/
                     95: 
                     96: typedef struct _NXPropertyListReadContext {
                     97:     unsigned   line;           /* for error messages */
                     98:     NXMutableString *buffer;   /* for efficiency */
                     99:     id keyFactory;             /* e.g. [NXCollectedString class] */
                    100:     id stringValueFactory;     /* e.g. [NXReadOnlyString class] */
                    101:     id listValueFactory;       /* e.g. [List class]; nil OK */
                    102:     id propertyListValueFactory; /* e.g. [NXPropertyList class]; nil OK */
                    103:     BOOL       noValueIsSame;  /* if = missing, either key or nil */
                    104:     NXZone     *zone;          /* zone used for reading; may be NULL */
                    105:     NXHashTable        *uniquingTable; /* used to unique strings */
                    106: } NXPropertyListReadContext;
                    107: 
                    108: typedef struct _NXPropertyListWriteContext {
                    109:     unsigned   indentDelta;            /* 0 => dont add white spaces */
                    110:     unsigned   indent;                 /* current number of spaces */
                    111:     BOOL       topLevelBrackets;       /* the outer {} */
                    112:     const char *pairSeparator;         /* after each pair (after the ';') */
                    113:     // not an NXString because bug cc!
                    114: } NXPropertyListWriteContext;
                    115: 
                    116: @protocol NXPropertyListFancyIO
                    117: - initFromStream:(NXStream *)stream context:(NXPropertyListReadContext *)context;
                    118: - (void)writeToStream:(NXStream *)stream context:(NXPropertyListWriteContext *)context;
                    119: @end
                    120: 
                    121: @interface NXPropertyList (Fancy_IO)
                    122: - initFromStream:(NXStream *)stream context:(NXPropertyListReadContext *)context; //?? use protocol when possible in ObjC
                    123: - (void)writeToStream:(NXStream *)stream context:(NXPropertyListWriteContext *)context; //?? use protocol when possible in ObjC
                    124: - initFromPath:(NXString *)path context:(NXPropertyListReadContext *)context;
                    125: @end
                    126: 
                    127: @interface NXCleanList (Fancy_IO)
                    128: - initFromStream:(NXStream *)stream context:(NXPropertyListReadContext *)context; //?? use protocol when possible in ObjC
                    129: - (void)writeToStream:(NXStream *)stream context:(NXPropertyListWriteContext *)context; //?? use protocol when possible in ObjC
                    130: @end
                    131: 
                    132: @interface NXString (Fancy_IO)
                    133: - initFromStream:(NXStream *)stream context:(NXPropertyListReadContext *)context; //?? use protocol when possible in ObjC
                    134: - (void)writeToStream:(NXStream *)stream context:(NXPropertyListWriteContext *)context; //?? use protocol when possible in ObjC
                    135: @end
                    136: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.