mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 08:21:25 +00:00
Proprtylist extensions and coding for DO improvements plus a couple of
bugfixes git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@3492 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
06f5ba6dc4
commit
fcf610c797
17 changed files with 567 additions and 574 deletions
|
@ -161,26 +161,6 @@ static IMP msInitImp; /* designated initialiser for mutable */
|
|||
}
|
||||
}
|
||||
|
||||
- (Class) classForArchiver
|
||||
{
|
||||
return [self class];
|
||||
}
|
||||
|
||||
- (Class) classForCoder
|
||||
{
|
||||
return [self class];
|
||||
}
|
||||
|
||||
- (Class) classForPortCoder
|
||||
{
|
||||
return [self class];
|
||||
}
|
||||
|
||||
- replacementObjectForPortCoder:(NSPortCoder*)aCoder
|
||||
{
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) encodeWithCoder: aCoder
|
||||
{
|
||||
[aCoder encodeValueOfObjCType:@encode(unsigned) at:&_count];
|
||||
|
@ -511,88 +491,104 @@ static IMP msInitImp; /* designated initialiser for mutable */
|
|||
return [self initWithCStringNoCopy: buf length: length fromZone: z];
|
||||
}
|
||||
|
||||
- (NSString*) descriptionForPropertyList
|
||||
- (void) descriptionTo: (NSMutableString*)output
|
||||
{
|
||||
if (_count == 0) {
|
||||
return @"\"\"";
|
||||
if (_count == 0)
|
||||
{
|
||||
[output appendString: @"\"\""];
|
||||
}
|
||||
else {
|
||||
unsigned i;
|
||||
unsigned length = _count;
|
||||
BOOL needQuote = NO;
|
||||
else
|
||||
{
|
||||
unsigned i;
|
||||
unsigned length = _count;
|
||||
BOOL needQuote = NO;
|
||||
|
||||
for (i = 0; i < _count; i++) {
|
||||
char val = _contents_chars[i];
|
||||
for (i = 0; i < _count; i++)
|
||||
{
|
||||
char val = _contents_chars[i];
|
||||
|
||||
if (isalnum(val)) {
|
||||
continue;
|
||||
if (isalnum(val))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
switch (val) {
|
||||
case '\a':
|
||||
case '\b':
|
||||
case '\t':
|
||||
case '\r':
|
||||
case '\n':
|
||||
case '\v':
|
||||
case '\f':
|
||||
case '\\':
|
||||
case '"' :
|
||||
length += 1;
|
||||
break;
|
||||
switch (val)
|
||||
{
|
||||
case '\a':
|
||||
case '\b':
|
||||
case '\t':
|
||||
case '\r':
|
||||
case '\n':
|
||||
case '\v':
|
||||
case '\f':
|
||||
case '\\':
|
||||
case '"' :
|
||||
length += 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
if (val == ' ' || isprint(val)) {
|
||||
needQuote = YES;
|
||||
}
|
||||
else {
|
||||
length += 3;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (val == ' ' || isprint(val))
|
||||
{
|
||||
needQuote = YES;
|
||||
}
|
||||
else
|
||||
{
|
||||
length += 3;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (needQuote || length != _count) {
|
||||
NSZone *z = fastZone(self);
|
||||
char *buf = NSZoneMalloc(z, length+3);
|
||||
char *ptr = buf;
|
||||
NSString *result;
|
||||
if (needQuote || length != _count)
|
||||
{
|
||||
NSZone *z = fastZone(self);
|
||||
char *buf = NSZoneMalloc(z, length+3);
|
||||
char *ptr = buf;
|
||||
NSString *result;
|
||||
|
||||
*ptr++ = '"';
|
||||
for (i = 0; i < _count; i++) {
|
||||
char val = _contents_chars[i];
|
||||
*ptr++ = '"';
|
||||
for (i = 0; i < _count; i++)
|
||||
{
|
||||
char val = _contents_chars[i];
|
||||
|
||||
switch (val) {
|
||||
case '\a': *ptr++ = '\\'; *ptr++ = 'a'; break;
|
||||
case '\b': *ptr++ = '\\'; *ptr++ = 'b'; break;
|
||||
case '\t': *ptr++ = '\\'; *ptr++ = 't'; break;
|
||||
case '\r': *ptr++ = '\\'; *ptr++ = 'r'; break;
|
||||
case '\n': *ptr++ = '\\'; *ptr++ = 'n'; break;
|
||||
case '\v': *ptr++ = '\\'; *ptr++ = 'v'; break;
|
||||
case '\f': *ptr++ = '\\'; *ptr++ = 'f'; break;
|
||||
case '\\': *ptr++ = '\\'; *ptr++ = '\\'; break;
|
||||
case '"' : *ptr++ = '\\'; *ptr++ = '"'; break;
|
||||
switch (val)
|
||||
{
|
||||
case '\a': *ptr++ = '\\'; *ptr++ = 'a'; break;
|
||||
case '\b': *ptr++ = '\\'; *ptr++ = 'b'; break;
|
||||
case '\t': *ptr++ = '\\'; *ptr++ = 't'; break;
|
||||
case '\r': *ptr++ = '\\'; *ptr++ = 'r'; break;
|
||||
case '\n': *ptr++ = '\\'; *ptr++ = 'n'; break;
|
||||
case '\v': *ptr++ = '\\'; *ptr++ = 'v'; break;
|
||||
case '\f': *ptr++ = '\\'; *ptr++ = 'f'; break;
|
||||
case '\\': *ptr++ = '\\'; *ptr++ = '\\'; break;
|
||||
case '"' : *ptr++ = '\\'; *ptr++ = '"'; break;
|
||||
|
||||
default:
|
||||
if (isprint(val) || val == ' ') {
|
||||
*ptr++ = val;
|
||||
}
|
||||
else {
|
||||
*ptr++ = '\\';
|
||||
*ptr++ = '0';
|
||||
*ptr++ = ((val&0700)>>6)+'0';
|
||||
*ptr++ = ((val&070)>>3)+'0';
|
||||
*ptr++ = (val&07)+'0';
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (isprint(val) || val == ' ')
|
||||
{
|
||||
*ptr++ = val;
|
||||
}
|
||||
else
|
||||
{
|
||||
*ptr++ = '\\';
|
||||
*ptr++ = '0';
|
||||
*ptr++ = ((val&0700)>>6)+'0';
|
||||
*ptr++ = ((val&070)>>3)+'0';
|
||||
*ptr++ = (val&07)+'0';
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
*ptr++ = '"';
|
||||
*ptr = '\0';
|
||||
result = [[[_fastCls._NSGCString alloc] initWithCStringNoCopy: buf
|
||||
length: length+2 fromZone: z] autorelease];
|
||||
return result;
|
||||
*ptr++ = '"';
|
||||
*ptr = '\0';
|
||||
result = [[_fastCls._NSGCString alloc] initWithCStringNoCopy: buf
|
||||
length: length+2 fromZone: z];
|
||||
[output appendString: result];
|
||||
[result release];
|
||||
}
|
||||
else
|
||||
{
|
||||
[output appendString: self];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
}
|
||||
@end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue