Added som NSCoding

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@17444 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Stefan Urbanek 2003-08-06 21:09:41 +00:00
parent 129ea11412
commit ff2fe9ef93
13 changed files with 124 additions and 4 deletions

View file

@ -5,6 +5,11 @@
* Modules: Removed StepTalk module as it is no more needed, because
we have framework and it can provide scripting capabilities by it self
* All GNUMakefiles modified to reflect change to Framework
* Added Framework loading in .stenv description files.
Use: Frameworks = (name1, name2);
NOTE: You HAVE to remove your previous installation of StepTalk to be
able to install new one. (especially Local/Library/Headers/StepTalk).
2003 Aug 5 Stefan Urbanek <urbanek@host.sk>

View file

@ -5,3 +5,5 @@ shared_*obj
*.bundle
*.stmodule
*.stlanguage
*.framework
derived_src

View file

@ -11,7 +11,7 @@
{
Name = "StepTalk";
Modules = (StepTalk);
Frameworks = (StepTalk);
Classes =
{

View file

@ -133,6 +133,14 @@
[self loadModule:name];
}
/* Load frameworks */
enumerator = [[description frameworks] objectEnumerator];
while( (name = [enumerator nextObject]) )
{
[self includeFramework:name];
}
/* Register finders */
enumerator = [[description objectFinders] objectEnumerator];

View file

@ -44,6 +44,7 @@ enum
NSMutableDictionary *behaviours;
NSMutableDictionary *aliases;
NSMutableArray *modules;
NSMutableArray *frameworks;
NSMutableArray *finders;
int restriction;
@ -61,6 +62,7 @@ enum
- (NSMutableDictionary *)classes;
- (NSArray *)modules;
- (NSArray *)frameworks;
- (NSArray *)objectFinders;
@end

View file

@ -87,6 +87,7 @@ static NSDictionary *dictForDescriptionWithName(NSString *defName)
- (void)updateUseList:(NSArray *)array;
- (void)updateModuleList:(NSArray *)array;
- (void)updateFrameworkList:(NSArray *)array;
- (void)updateFinderList:(NSArray *)array;
@end
@ -182,6 +183,7 @@ static NSDictionary *dictForDescriptionWithName(NSString *defName)
[self updateUseList:[def objectForKey:@"Use"]];
[self updateModuleList:[def objectForKey:@"Modules"]];
[self updateFrameworkList:[def objectForKey:@"Frameworks"]];
[self updateFinderList:[def objectForKey:@"Finders"]];
[self updateBehavioursFromDictionary:[def objectForKey:@"Behaviours"]];
[self updateClassesFromDictionary:[def objectForKey:@"Classes"]];
@ -233,7 +235,30 @@ static NSDictionary *dictForDescriptionWithName(NSString *defName)
}
}
}
- (void)updateFrameworkList:(NSArray *)array
{
NSEnumerator *enumerator;
NSString *str;
enumerator = [array objectEnumerator];
while( (str = [enumerator nextObject]) )
{
if(!frameworks)
{
frameworks = [[NSMutableArray alloc] init];
}
if( ![frameworks containsObject:str] )
{
[frameworks addObject:str];
}
}
}
- (NSArray *)frameworks
{
return [NSArray arrayWithArray:frameworks];
}
- (void)updateFinderList:(NSArray *)array
{
NSEnumerator *enumerator;

View file

@ -9,7 +9,7 @@
@class NSArray;
@class STEnvironment;
@interface STScriptObject:NSObject
@interface STScriptObject:NSObject<NSCoding>
{
NSMutableDictionary *ivars;
NSMutableDictionary *methodDictionary;

View file

@ -6,6 +6,7 @@
#import "STFunctions.h"
#import <Foundation/NSArray.h>
#import <Foundation/NSCoder.h>
#import <Foundation/NSDictionary.h>
#import <Foundation/NSException.h>
@ -146,4 +147,22 @@ some other, more clever mechanism. */
[invocation setReturnValue:&retval];
}
- (void)encodeWithCoder:(NSCoder *)coder
{
// [super encodeWithCoder: coder];
[coder encodeObject:methodDictionary];
[coder encodeObject:ivars];
}
- initWithCoder:(NSCoder *)decoder
{
self = [super init]; //[super initWithCoder: decoder];
[decoder decodeValueOfObjCType: @encode(id) at: &methodDictionary];
[decoder decodeValueOfObjCType: @encode(id) at: &ivars];
return self;
}
@end

View file

@ -80,7 +80,7 @@ extern NSArray *STBytecodeNames;
extern NSString *STBytecodeName(unsigned short code);
extern NSString *STDissasembleBytecode(STBytecode bytecode);
@interface STBytecodes:NSData
@interface STBytecodes:NSData<NSCoding>
{
NSData *bytes;
}

View file

@ -266,5 +266,21 @@ NSString *STDissasembleBytecode(STBytecode bytecode)
*pointer,length];
return bytecode;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
// [super encodeWithCoder: coder];
[coder encodeObject:bytes];
}
- initWithCoder:(NSCoder *)decoder
{
self = [super init]; // super initWithCoder: decoder];
[decoder decodeValueOfObjCType: @encode(id) at: &bytes];
return self;
}
@end

View file

@ -27,7 +27,7 @@
@class NSMutableArray;
@class STBytecodes;
@interface STCompiledCode:NSObject
@interface STCompiledCode:NSObject<NSCoding>
{
STBytecodes *bytecodes;
NSArray *literals;

View file

@ -80,4 +80,29 @@
{
return externRefs;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
// [super encodeWithCoder: coder];
[coder encodeObject:bytecodes];
[coder encodeObject:literals];
[coder encodeObject:externRefs];
[coder encodeValueOfObjCType: @encode(short) at: &tempCount];
[coder encodeValueOfObjCType: @encode(short) at: &stackSize];
}
- initWithCoder:(NSCoder *)decoder
{
self = [super init]; // [super initWithCoder: decoder];
[decoder decodeValueOfObjCType: @encode(id) at: &bytecodes];
[decoder decodeValueOfObjCType: @encode(id) at: &literals];
[decoder decodeValueOfObjCType: @encode(id) at: &externRefs];
[decoder decodeValueOfObjCType: @encode(short) at: &tempCount];
[decoder decodeValueOfObjCType: @encode(short) at: &stackSize];
return self;
}
@end

View file

@ -120,4 +120,22 @@
{
return @"Smalltalk";
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[super encodeWithCoder: coder];
[coder encodeObject:selector];
[coder encodeValueOfObjCType: @encode(short) at: &argCount];
}
- initWithCoder:(NSCoder *)decoder
{
self = [super initWithCoder: decoder];
[decoder decodeValueOfObjCType: @encode(id) at: &selector];
[decoder decodeValueOfObjCType: @encode(short) at: &argCount];
return self;
}
@end