ResKnife/NuTemplateEditor/NuTemplateOCNTElement.m
2003-08-17 23:21:37 +02:00

135 lines
2.3 KiB
Objective-C

//
// NuTemplateOCNTElement.m
// ResKnife (PB2)
//
// Created by Uli Kusterer on Tue Aug 05 2003.
// Copyright (c) 2003 M. Uli Kusterer. All rights reserved.
//
#import "NuTemplateOCNTElement.h"
static NuTemplateOCNTElement* sLastParsedElement = nil;
@implementation NuTemplateOCNTElement
+(NuTemplateOCNTElement*) lastParsedElement
{
return sLastParsedElement;
}
+(void) setLastParsedElement: (NuTemplateOCNTElement*)e
{
NSLog( @"[NuTemplateOCNTElement setLastParsedElement: %@]", e );
sLastParsedElement = e;
}
-(id) initForType: (NSString*)t withLabel: (NSString*)l
{
if( self = [super initForType:t withLabel:l] )
longValue = 0;
[[self class] setLastParsedElement:self];
return self;
}
-(id) copyWithZone: (NSZone*)zone
{
NuTemplateOCNTElement* el = [super copyWithZone: zone];
if( el )
{
[el setLongValue: longValue];
[[self class] setLastParsedElement:el];
}
return el;
}
-(void) readDataFrom: (NuTemplateStream*)stream
{
if( [type isEqualToString: @"LCNT"] )
[stream readAmount:4 toBuffer: &longValue];
else if( [type isEqualToString: @"LZCT"] )
{
short n = -1;
[stream readAmount:sizeof(n) toBuffer: &n];
longValue = n +1;
}
else if( [type isEqualToString: @"ZCNT"] )
{
short n = -1;
[stream readAmount:sizeof(n) toBuffer: &n];
longValue = n +1;
}
else
{
short n = 0;
[stream readAmount:sizeof(n) toBuffer: &n];
longValue = n;
}
}
-(unsigned int) sizeOnDisk
{
if( [type isEqualToString: @"LCNT"] )
return 4;
else if( [type isEqualToString: @"LZCT"] )
return 4;
else
return 2;
}
-(void) writeDataTo: (NuTemplateStream*)stream
{
if( [type isEqualToString: @"LCNT"] )
[stream writeAmount:4 fromBuffer: &longValue];
else if( [type isEqualToString: @"LZCT"] )
{
long n = longValue -1;
[stream writeAmount:sizeof(n) fromBuffer: &n];
}
else if( [type isEqualToString: @"ZCNT"] )
{
short n = longValue -1;
[stream writeAmount:sizeof(n) fromBuffer: &n];
}
else
{
short n = longValue;
[stream writeAmount:sizeof(n) fromBuffer: &n];
}
}
-(void) setLongValue: (long)d
{
longValue = d;
}
-(long) longValue
{
return longValue;
}
-(NSString*) stringValue
{
return [NSString stringWithFormat: @"%ld", longValue];
}
-(void) setStringValue: (NSString*)str
{
// Dummy out. User can't change counter this way, they have to add items.
}
@end