/** GSWBundle.m - GSWeb: Class GSWBundle Copyright (C) 1999-2004 Free Software Foundation, Inc. Written by: Manuel Guesdon Date: Mar 1999 Written by: David Wetzel $Revision$ $Date$ $Id$ This file is part of the GNUstep Web Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. **/ #include "config.h" RCS_ID("$Id$") #include "GSWeb.h" #include #include "WOKeyValueUnarchiver.h" #include @implementation NSBundle (WOResourceManagement) -(void)initializeObject:(id)anObject fromArchive:(NSDictionary*)anArchive { NSDictionary * variableDefinitions = nil; WOKeyValueUnarchiver * unarchiver; unarchiver = [[WOKeyValueUnarchiver alloc] initWithDictionary: anArchive]; AUTORELEASE(unarchiver); [unarchiver setDelegate:anObject]; variableDefinitions = (NSDictionary*) [unarchiver decodeObjectForKey:@"variables"]; [unarchiver finishInitializationOfObjects]; [unarchiver awakeObjects]; if (variableDefinitions) { NSString * varName; id varValue; NSEnumerator * keyEnumer = [variableDefinitions keyEnumerator]; while ((varName = [keyEnumer nextObject])) { varValue = [variableDefinitions objectForKey:varName]; [anObject setValue:varValue forKey:varName]; } } } @end @implementation GSWBundleUnarchiverDelegate - (void) dealloc { [super dealloc]; } - (id) unarchiver:(NSKeyedUnarchiver*)unarchiver objectForReference:(NSString*)keyPath { return [_object valueForKeyPath:keyPath]; } - (id) initWithObject:(id)object { if ((self=[super init])) { _object=object; } return self; } @end