Tidied coding/decoding to be a bit more efficient.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@3120 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
richard 1998-10-26 18:06:51 +00:00
parent 2c35e21378
commit 89f459748a
2 changed files with 37 additions and 31 deletions

View file

@ -185,10 +185,13 @@ static IMP msInitImp; /* designated initialiser for mutable */
- (void) encodeWithCoder: aCoder
{
[aCoder encodeValueOfObjCType:@encode(unsigned) at:&_count];
if (_count > 0)
{
[aCoder encodeArrayOfObjCType:@encode(unsigned char)
count:_count
at:_contents_chars];
}
}
- initWithCoder: aCoder
{
@ -887,9 +890,12 @@ stringDecrementCountAndFillHoleAt(NSGMutableCStringStruct *self,
[aCoder decodeValueOfObjCType:@encode(unsigned) at:&cap];
[self initWithCapacity:cap];
_count = cap;
if (_count > 0)
{
[aCoder decodeArrayOfObjCType: @encode(unsigned char)
count: _count
at: _contents_chars];
}
return self;
}

View file

@ -265,20 +265,26 @@
- (void) encodeWithCoder: aCoder
{
[aCoder encodeValueOfObjCType:@encode(int) at:&_count];
[aCoder encodeValueOfObjCType: @encode(unsigned) at: &_count];
if (_count > 0)
{
[aCoder encodeArrayOfObjCType: @encode(unichar)
count: _count
at: _contents_chars];
}
}
- initWithCoder: aCoder
{
[aCoder decodeValueOfObjCType:@encode(int) at:&_count];
[aCoder decodeValueOfObjCType: @encode(unsigned) at: &_count];
if (_count)
{
_zone = fastZone(self);
_contents_chars = NSZoneMalloc(_zone, sizeof(unichar)*_count);
[aCoder decodeArrayOfObjCType: @encode(unichar)
count: _count
at: _contents_chars];
}
return self;
}
@ -548,25 +554,19 @@ stringDecrementCountAndFillHoleAt(NSGMutableStringStruct *self,
range.location, range.length);
}
- (void) encodeWithCoder: aCoder // *** changed to unichar
{
[aCoder encodeValueOfObjCType:@encode(unsigned) at:&_capacity];
[aCoder encodeValueOfObjCType:@encode(int) at:&_count];
[aCoder encodeArrayOfObjCType:@encode(unichar)
count:_count
at:_contents_chars];
}
- initWithCoder: aCoder // *** changed to unichar
{
unsigned cap;
[aCoder decodeValueOfObjCType: @encode(unsigned) at: &cap];
[self initWithCapacity:cap];
[aCoder decodeValueOfObjCType:@encode(int) at:&_count];
_count = cap;
if (_count)
{
[aCoder decodeArrayOfObjCType: @encode(unichar)
count: _count
at: _contents_chars];
}
return self;
}