mirror of
https://github.com/gnustep/libs-steptalk.git
synced 2025-02-21 10:41:04 +00:00
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:
parent
129ea11412
commit
ff2fe9ef93
13 changed files with 124 additions and 4 deletions
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -5,3 +5,5 @@ shared_*obj
|
||||||
*.bundle
|
*.bundle
|
||||||
*.stmodule
|
*.stmodule
|
||||||
*.stlanguage
|
*.stlanguage
|
||||||
|
*.framework
|
||||||
|
derived_src
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
{
|
{
|
||||||
Name = "StepTalk";
|
Name = "StepTalk";
|
||||||
|
|
||||||
Modules = (StepTalk);
|
Frameworks = (StepTalk);
|
||||||
|
|
||||||
Classes =
|
Classes =
|
||||||
{
|
{
|
||||||
|
|
|
@ -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];
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue