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 * Modules: Removed StepTalk module as it is no more needed, because
we have framework and it can provide scripting capabilities by it self we have framework and it can provide scripting capabilities by it self
* All GNUMakefiles modified to reflect change to Framework * 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> 2003 Aug 5 Stefan Urbanek <urbanek@host.sk>

View file

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

View file

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

View file

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

View file

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

View file

@ -87,6 +87,7 @@ static NSDictionary *dictForDescriptionWithName(NSString *defName)
- (void)updateUseList:(NSArray *)array; - (void)updateUseList:(NSArray *)array;
- (void)updateModuleList:(NSArray *)array; - (void)updateModuleList:(NSArray *)array;
- (void)updateFrameworkList:(NSArray *)array;
- (void)updateFinderList:(NSArray *)array; - (void)updateFinderList:(NSArray *)array;
@end @end
@ -182,6 +183,7 @@ static NSDictionary *dictForDescriptionWithName(NSString *defName)
[self updateUseList:[def objectForKey:@"Use"]]; [self updateUseList:[def objectForKey:@"Use"]];
[self updateModuleList:[def objectForKey:@"Modules"]]; [self updateModuleList:[def objectForKey:@"Modules"]];
[self updateFrameworkList:[def objectForKey:@"Frameworks"]];
[self updateFinderList:[def objectForKey:@"Finders"]]; [self updateFinderList:[def objectForKey:@"Finders"]];
[self updateBehavioursFromDictionary:[def objectForKey:@"Behaviours"]]; [self updateBehavioursFromDictionary:[def objectForKey:@"Behaviours"]];
[self updateClassesFromDictionary:[def objectForKey:@"Classes"]]; [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 - (void)updateFinderList:(NSArray *)array
{ {
NSEnumerator *enumerator; NSEnumerator *enumerator;

View file

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

View file

@ -6,6 +6,7 @@
#import "STFunctions.h" #import "STFunctions.h"
#import <Foundation/NSArray.h> #import <Foundation/NSArray.h>
#import <Foundation/NSCoder.h>
#import <Foundation/NSDictionary.h> #import <Foundation/NSDictionary.h>
#import <Foundation/NSException.h> #import <Foundation/NSException.h>
@ -146,4 +147,22 @@ some other, more clever mechanism. */
[invocation setReturnValue:&retval]; [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 @end

View file

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

View file

@ -266,5 +266,21 @@ NSString *STDissasembleBytecode(STBytecode bytecode)
*pointer,length]; *pointer,length];
return bytecode; 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 @end

View file

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

View file

@ -80,4 +80,29 @@
{ {
return externRefs; 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 @end

View file

@ -120,4 +120,22 @@
{ {
return @"Smalltalk"; 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 @end