This is MME+GlobalSymbols.m in view mode; [Download] [Up]
// // MME+GlobalSymbols.m -- merge engine global symbol table handlers // Written by Don Yacktman Copyright (c) 1995 by Don Yacktman. // Version 1.0. All rights reserved. // This notice may not be removed from this source code. // // This object is included in the MiscKit by permission from the author // and its use is governed by the MiscKit license, found in the file // "LICENSE.rtf" in the MiscKit distribution. Please refer to that file // for a list of all applicable permissions and restrictions. // #import <misckit/misckit.h> #import <misckit/MiscMergeEngine.h> @implementation MiscMergeEngine (GlobalSymbols) // Handling a global symbol table static MiscDictionary *globalSymbolTable = nil; + resetGlobalSymbolTable /*" Empties the global symbol table. Returns self. "*/ { // we don't free values--this could leak memory if (globalSymbolTable) { [globalSymbolTable freeObjects]; [globalSymbolTable free]; } globalSymbolTable = [[MiscDictionary alloc] init]; return self; } + setGlobalSymbol:name toValue:val /*" Sets the global symbol %{name} to have the value %{val}. Returns self. "*/ { if (!globalSymbolTable) [self resetGlobalSymbolTable]; [val squashSpaces]; // just to be safe [globalSymbolTable insertKey:name value:val]; return self; } + addDictionaryToGlobalSymbols:(MiscDictionary *)aDictionary /*" Adds the contents of %{aDictionary} to the global symbol table. Returns self. #{%{Warning:} This is currently unimplemented.} "*/ { // ***** iterate through dictionary and copy symbols over verbatim if (!globalSymbolTable) [self resetGlobalSymbolTable]; return self; } + addListToGlobalSymbols:(List *)aList /*" Adds the contents of %{aList} to the global symbol table. Returns self. The keys for the List's contents are generated as ªf0º, ªf1º, and so on. "*/ { int i; id name = [MiscString new]; for (i=0; i<[aList count]; i++) { id val = [aList objectAt:i]; [name setFromFormat:"f%d", (i+1)]; if ([val isKindOf:([MiscString class])]) [self setGlobalSymbol:name toValue:val]; } return self; } + (MiscString *)globalSymbolForKey:(MiscString *)name /*" Returns the value for the global symbol %{name}, if found. Returns nil if not found. "*/ { if (!globalSymbolTable) [self resetGlobalSymbolTable]; if (!name || ![name length] || ![name stringValue]) return nil; if ([globalSymbolTable isKey:name]) return (MiscString *)[globalSymbolTable valueForKey:name]; return nil; // don't have it... } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.