mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-22 16:33:29 +00:00
Tidyups and bugfixes based on compiler warnings.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@4881 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
6beb80c336
commit
ca36a2f5ed
5 changed files with 224 additions and 181 deletions
|
@ -182,6 +182,7 @@
|
|||
@encode(unsigned), &count);
|
||||
*l = count;
|
||||
array = objc_malloc(count);
|
||||
where = array;
|
||||
while (count-- > 0)
|
||||
(*imp)(self, @selector(decodeValueOfObjCType:at:), type, where++);
|
||||
|
||||
|
|
|
@ -634,10 +634,10 @@ GSTimeNow()
|
|||
break;
|
||||
|
||||
default:
|
||||
dtoIndex++;
|
||||
if (debug)
|
||||
NSLog(@"odd char (unicode %d) in NSDateTimeOrdering.\n",
|
||||
[dto characterAtIndex: index]);
|
||||
[dto characterAtIndex: dtoIndex]);
|
||||
dtoIndex++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -763,7 +763,7 @@ GSTimeNow()
|
|||
default:
|
||||
if (debug)
|
||||
NSLog(@"unexpected char (unicode%d) in NSDateTimeOrdering.\n",
|
||||
[dto characterAtIndex: index]);
|
||||
[dto characterAtIndex: dtoIndex]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1012,21 +1012,18 @@ static NSNotificationCenter *default_center = nil;
|
|||
* Post the notification to all the observers that specified neither
|
||||
* NAME nor OBJECT.
|
||||
*/
|
||||
if (o != ENDOBS)
|
||||
for (o = WILDCARD; o != ENDOBS; o = o->next)
|
||||
{
|
||||
for (o = WILDCARD; o != ENDOBS; o = o->next)
|
||||
{
|
||||
GSIArrayAddItem(a, (GSIArrayItem)o);
|
||||
}
|
||||
count = GSIArrayCount(a);
|
||||
while (count-- > arrayBase)
|
||||
{
|
||||
o = GSIArrayItemAtIndex(a, count).ext;
|
||||
if (o->next != 0)
|
||||
(*o->method)(o->observer, o->selector, notification);
|
||||
}
|
||||
GSIArrayRemoveItemsFromIndex(a, arrayBase);
|
||||
GSIArrayAddItem(a, (GSIArrayItem)o);
|
||||
}
|
||||
count = GSIArrayCount(a);
|
||||
while (count-- > arrayBase)
|
||||
{
|
||||
o = GSIArrayItemAtIndex(a, count).ext;
|
||||
if (o->next != 0)
|
||||
(*o->method)(o->observer, o->selector, notification);
|
||||
}
|
||||
GSIArrayRemoveItemsFromIndex(a, arrayBase);
|
||||
|
||||
/*
|
||||
* Post the notification to all the observers that specified OBJECT,
|
||||
|
|
|
@ -144,7 +144,8 @@ pathSeps()
|
|||
myPathSeps = [NSCharacterSet characterSetWithCharactersInString: @"/"];
|
||||
#endif
|
||||
RETAIN(myPathSeps);
|
||||
sepMember = [myPathSeps methodForSelector: @selector(characterIsMember:)];
|
||||
sepMember = (BOOL (*)(NSCharacterSet*, SEL, unichar))
|
||||
[myPathSeps methodForSelector: @selector(characterIsMember:)];
|
||||
}
|
||||
return myPathSeps;
|
||||
}
|
||||
|
|
372
Source/Unicode.m
372
Source/Unicode.m
|
@ -1,7 +1,7 @@
|
|||
/* Support functions for Unicode implementation
|
||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
|
||||
Written by: Stevo Crvenkovski <stevo@btinternet.com>
|
||||
Written by: Stevo Crvenkovski < stevo@btinternet.com >
|
||||
Date: March 1997
|
||||
|
||||
This file is part of the GNUstep Base Library.
|
||||
|
@ -35,138 +35,174 @@ struct _ucc_ {unichar from; char to;};
|
|||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
|
||||
unichar encode_chartouni(char c, NSStringEncoding enc)
|
||||
typedef unsigned char unc;
|
||||
|
||||
unichar
|
||||
encode_chartouni(char c, NSStringEncoding enc)
|
||||
{
|
||||
/* All that I could find in Next documentation
|
||||
on NSNonLossyASCIIStringEncoding was <<forthcoming>>. */
|
||||
if((enc==NSNonLossyASCIIStringEncoding)
|
||||
|| (enc==NSASCIIStringEncoding)
|
||||
|| (enc==NSISOLatin1StringEncoding))
|
||||
return (unichar)((unsigned char)c);
|
||||
|
||||
if((enc==NSNEXTSTEPStringEncoding))
|
||||
if((unsigned char)c<Next_conv_base)
|
||||
return (unichar)((unsigned char)c);
|
||||
/* All that I could find in Next documentation
|
||||
on NSNonLossyASCIIStringEncoding was << forthcoming >>. */
|
||||
if ((enc == NSNonLossyASCIIStringEncoding)
|
||||
|| (enc == NSASCIIStringEncoding)
|
||||
|| (enc == NSISOLatin1StringEncoding))
|
||||
{
|
||||
return (unichar)((unc)c);
|
||||
}
|
||||
if ((enc == NSNEXTSTEPStringEncoding))
|
||||
{
|
||||
if ((unc)c < Next_conv_base)
|
||||
return (unichar)((unc)c);
|
||||
else
|
||||
return(Next_char_to_uni_table[(unsigned char)c - Next_conv_base]);
|
||||
|
||||
if((enc==NSCyrillicStringEncoding))
|
||||
if((unsigned char)c<Cyrillic_conv_base)
|
||||
return (unichar)((unsigned char)c);
|
||||
return(Next_char_to_uni_table[(unc)c - Next_conv_base]);
|
||||
}
|
||||
if ((enc == NSCyrillicStringEncoding))
|
||||
{
|
||||
if ((unc)c < Cyrillic_conv_base)
|
||||
return (unichar)((unc)c);
|
||||
else
|
||||
return(Cyrillic_char_to_uni_table[(unsigned char)c - Cyrillic_conv_base]);
|
||||
return(Cyrillic_char_to_uni_table[(unc)c - Cyrillic_conv_base]);
|
||||
}
|
||||
|
||||
#if 0
|
||||
if((enc==NSSymbolStringEncoding))
|
||||
if((unsigned char)c<Symbol_conv_base)
|
||||
return (unichar)((unsigned char)c);
|
||||
if ((enc == NSSymbolStringEncoding))
|
||||
{
|
||||
if ((unc)c < Symbol_conv_base)
|
||||
return (unichar)((unc)c);
|
||||
else
|
||||
return(Symbol_char_to_uni_table[(unsigned char)c - Symbol_conv_base]);
|
||||
return(Symbol_char_to_uni_table[(unc)c - Symbol_conv_base]);
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
char encode_unitochar(unichar u, NSStringEncoding enc)
|
||||
char
|
||||
encode_unitochar(unichar u, NSStringEncoding enc)
|
||||
{
|
||||
int res;
|
||||
int i=0;
|
||||
int i =0;
|
||||
|
||||
if((enc==NSNonLossyASCIIStringEncoding)
|
||||
|| (enc==NSASCIIStringEncoding))
|
||||
if(u<128)
|
||||
return (char)u;
|
||||
else
|
||||
return 0;
|
||||
if ((enc == NSNonLossyASCIIStringEncoding)
|
||||
|| (enc == NSASCIIStringEncoding))
|
||||
{
|
||||
if (u <128)
|
||||
return (char)u;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((enc == NSISOLatin1StringEncoding))
|
||||
{
|
||||
if (u <256)
|
||||
return (char)u;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
if((enc==NSISOLatin1StringEncoding))
|
||||
if(u<256)
|
||||
return (char)u;
|
||||
else
|
||||
return 0;
|
||||
if ((enc == NSNEXTSTEPStringEncoding))
|
||||
{
|
||||
if (u <(unichar)Next_conv_base)
|
||||
return (char)u;
|
||||
else
|
||||
{
|
||||
while (((res = u-Next_uni_to_char_table[i++].from) > 0)
|
||||
&& (i < Next_uni_to_char_table_size));
|
||||
return res?0:Next_uni_to_char_table[--i].to;
|
||||
}
|
||||
}
|
||||
|
||||
if((enc== NSNEXTSTEPStringEncoding))
|
||||
if(u<(unichar)Next_conv_base)
|
||||
return (char)u;
|
||||
else
|
||||
{
|
||||
while(((res=u-Next_uni_to_char_table[i++].from)>0) && (i<Next_uni_to_char_table_size));
|
||||
return res?0:Next_uni_to_char_table[--i].to;
|
||||
}
|
||||
|
||||
if((enc==NSCyrillicStringEncoding))
|
||||
if(u<(unichar)Cyrillic_conv_base)
|
||||
return (char)u;
|
||||
else
|
||||
{
|
||||
while(((res=u-Cyrillic_uni_to_char_table[i++].from)>0) && (i<Cyrillic_uni_to_char_table_size));
|
||||
return res?0:Cyrillic_uni_to_char_table[--i].to;
|
||||
}
|
||||
if ((enc == NSCyrillicStringEncoding))
|
||||
{
|
||||
if (u <(unichar)Cyrillic_conv_base)
|
||||
return (char)u;
|
||||
else
|
||||
{
|
||||
while (((res = u-Cyrillic_uni_to_char_table[i++].from) > 0)
|
||||
&& (i < Cyrillic_uni_to_char_table_size));
|
||||
return res ? 0 : Cyrillic_uni_to_char_table[--i].to;
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
if((enc==NSSymbolStringEncoding))
|
||||
if(u<(unichar)Symbol_conv_base)
|
||||
return (char)u;
|
||||
else
|
||||
{
|
||||
while(((res=u-Symbol_uni_to_char_table[i++].from)>0) && (i<Symbol_uni_to_char_table_size));
|
||||
return res?'*':Symbol_uni_to_char_table[--i].to;
|
||||
}
|
||||
if ((enc == NSSymbolStringEncoding))
|
||||
{
|
||||
if (u <(unichar)Symbol_conv_base)
|
||||
return (char)u;
|
||||
else
|
||||
{
|
||||
while (((res = u-Symbol_uni_to_char_table[i++].from) > 0)
|
||||
&& (i < Symbol_uni_to_char_table_size));
|
||||
return res ? '*' : Symbol_uni_to_char_table[--i].to;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
unichar chartouni(char c)
|
||||
unichar
|
||||
chartouni(char c)
|
||||
{
|
||||
static NSStringEncoding enc = GSUndefinedEncoding;
|
||||
if (enc == 0) enc = [NSString defaultCStringEncoding];
|
||||
|
||||
if (enc == 0)
|
||||
enc = [NSString defaultCStringEncoding];
|
||||
return encode_chartouni(c, enc);
|
||||
}
|
||||
|
||||
char unitochar(unichar u)
|
||||
char
|
||||
unitochar(unichar u)
|
||||
{
|
||||
unsigned char res;
|
||||
unc res;
|
||||
static NSStringEncoding enc = GSUndefinedEncoding;
|
||||
if (enc == 0) enc = [NSString defaultCStringEncoding];
|
||||
if((res=encode_unitochar(u, enc)))
|
||||
|
||||
if (enc == 0)
|
||||
enc = [NSString defaultCStringEncoding];
|
||||
if ((res = encode_unitochar(u, enc)))
|
||||
return res;
|
||||
else
|
||||
return '*';
|
||||
}
|
||||
|
||||
int strtoustr(unichar * u1,const char *s1,int size)
|
||||
{
|
||||
int count;
|
||||
for(count=0;(count<size)&&(s1[count]!=0);count++)
|
||||
u1[count]=chartouni(s1[count]);
|
||||
return count;
|
||||
}
|
||||
|
||||
int ustrtostr(char *s2,unichar *u1,int size)
|
||||
{
|
||||
int count;
|
||||
for(count=0;(count<size)&&(u1[count]!=(unichar)0);count++)
|
||||
s2[count]=unitochar(u1[count]);
|
||||
return(count);
|
||||
}
|
||||
|
||||
int encode_strtoustr(unichar * u1,const char *s1,int size, NSStringEncoding enc)
|
||||
{
|
||||
int count;
|
||||
for(count=0;(count<size)&&(s1[count]!=0);count++)
|
||||
u1[count]=encode_chartouni(s1[count],enc);
|
||||
return count;
|
||||
}
|
||||
int
|
||||
strtoustr(unichar * u1,const char *s1,int size)
|
||||
{
|
||||
int count;
|
||||
|
||||
int encode_ustrtostr(char *s2,unichar *u1,int size, NSStringEncoding enc)
|
||||
{
|
||||
int count;
|
||||
for(count=0;(count<size)&&(u1[count]!=(unichar)0);count++)
|
||||
s2[count]=encode_unitochar(u1[count],enc);
|
||||
return(count);
|
||||
}
|
||||
for (count = 0; (count < size) && (s1[count] != 0); count++)
|
||||
u1[count] = chartouni(s1[count]);
|
||||
return count;
|
||||
}
|
||||
|
||||
int
|
||||
ustrtostr(char *s2,unichar *u1,int size)
|
||||
{
|
||||
int count;
|
||||
|
||||
for (count = 0; (count < size) && (u1[count] != (unichar)0); count++)
|
||||
s2[count] = unitochar(u1[count]);
|
||||
return(count);
|
||||
}
|
||||
|
||||
int
|
||||
encode_strtoustr(unichar * u1,const char *s1,int size, NSStringEncoding enc)
|
||||
{
|
||||
int count;
|
||||
|
||||
for (count = 0; (count < size) && (s1[count] != 0); count++)
|
||||
u1[count] = encode_chartouni(s1[count], enc);
|
||||
return count;
|
||||
}
|
||||
|
||||
int
|
||||
encode_ustrtostr(char *s2,unichar *u1,int size, NSStringEncoding enc)
|
||||
{
|
||||
int count;
|
||||
|
||||
for (count = 0; (count < size) && (u1[count] != (unichar)0); count++)
|
||||
s2[count] = encode_unitochar(u1[count], enc);
|
||||
return(count);
|
||||
}
|
||||
|
||||
/* Be carefull if you use this. Unicode arrays returned by
|
||||
-getCharacters methods are not zero terminated */
|
||||
|
@ -174,6 +210,7 @@ int
|
|||
uslen (unichar *u)
|
||||
{
|
||||
int len = 0;
|
||||
|
||||
while (u[len] != 0)
|
||||
{
|
||||
if (u[++len] == 0)
|
||||
|
@ -183,23 +220,28 @@ uslen (unichar *u)
|
|||
return len;
|
||||
}
|
||||
|
||||
unichar uni_tolower(unichar ch)
|
||||
unichar
|
||||
uni_tolower(unichar ch)
|
||||
{
|
||||
int res;
|
||||
int count=0;
|
||||
while(((res=ch - t_tolower[count++][0])>0)&&(count<t_len_tolower));
|
||||
return res?ch:t_tolower[--count][1];
|
||||
}
|
||||
|
||||
unichar uni_toupper(unichar ch)
|
||||
{
|
||||
int res;
|
||||
int count=0;
|
||||
while(((res=ch - t_toupper[count++][0])>0)&&(count<t_len_toupper));
|
||||
return res?ch:t_toupper[--count][1];
|
||||
}
|
||||
int count = 0;
|
||||
|
||||
unsigned char uni_cop(unichar u)
|
||||
while (((res = ch - t_tolower[count++][0]) > 0) && (count < t_len_tolower));
|
||||
return res ? ch : t_tolower[--count][1];
|
||||
}
|
||||
|
||||
unichar
|
||||
uni_toupper(unichar ch)
|
||||
{
|
||||
int res;
|
||||
int count = 0;
|
||||
|
||||
while (((res = ch - t_toupper[count++][0]) > 0) && (count < t_len_toupper));
|
||||
return res ? ch : t_toupper[--count][1];
|
||||
}
|
||||
|
||||
unsigned char
|
||||
uni_cop(unichar u)
|
||||
{
|
||||
unichar count,first,last,comp;
|
||||
BOOL notfound;
|
||||
|
@ -207,49 +249,51 @@ unsigned char uni_cop(unichar u)
|
|||
first = 0;
|
||||
last = uni_cop_table_size;
|
||||
notfound = TRUE;
|
||||
count=0;
|
||||
count =0;
|
||||
|
||||
if(u > (unichar)0x0080) // no nonspacing in ascii
|
||||
{
|
||||
while(notfound && (first <= last))
|
||||
if (u > (unichar)0x0080) // no nonspacing in ascii
|
||||
{
|
||||
if(!(first==last))
|
||||
{
|
||||
count = (first + last) / 2;
|
||||
comp=uni_cop_table[count].code;
|
||||
if(comp < u)
|
||||
first = count+1;
|
||||
else
|
||||
if(comp > u)
|
||||
last = count-1;
|
||||
else
|
||||
notfound = FALSE;
|
||||
}
|
||||
else /* first==last */
|
||||
{
|
||||
if(u == uni_cop_table[first].code)
|
||||
return uni_cop_table[first].cop;
|
||||
return 0;
|
||||
} /* else */
|
||||
} /* while notfound ...*/
|
||||
return notfound?0:uni_cop_table[count].cop;
|
||||
}
|
||||
while (notfound && (first <= last))
|
||||
{
|
||||
if (!(first == last))
|
||||
{
|
||||
count = (first + last) / 2;
|
||||
comp = uni_cop_table[count].code;
|
||||
if (comp < u)
|
||||
first = count+1;
|
||||
else
|
||||
if (comp > u)
|
||||
last = count-1;
|
||||
else
|
||||
notfound = FALSE;
|
||||
}
|
||||
else /* first == last */
|
||||
{
|
||||
if (u == uni_cop_table[first].code)
|
||||
return uni_cop_table[first].cop;
|
||||
return 0;
|
||||
} /* else */
|
||||
} /* while notfound ...*/
|
||||
return notfound ? 0 : uni_cop_table[count].cop;
|
||||
}
|
||||
else /* u is ascii */
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL uni_isnonsp(unichar u)
|
||||
BOOL
|
||||
uni_isnonsp(unichar u)
|
||||
{
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
// check is uni_cop good for this
|
||||
if(uni_cop(u))
|
||||
if (uni_cop(u))
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
unichar *uni_is_decomp(unichar u)
|
||||
unichar*
|
||||
uni_is_decomp(unichar u)
|
||||
{
|
||||
unichar count,first,last,comp;
|
||||
BOOL notfound;
|
||||
|
@ -257,33 +301,33 @@ unichar *uni_is_decomp(unichar u)
|
|||
first = 0;
|
||||
last = uni_dec_table_size;
|
||||
notfound = TRUE;
|
||||
count=0;
|
||||
count =0;
|
||||
|
||||
if(u > (unichar)0x0080) // no composites in ascii
|
||||
{
|
||||
while(notfound && (first <= last))
|
||||
if (u > (unichar)0x0080) // no composites in ascii
|
||||
{
|
||||
if(!(first==last))
|
||||
{
|
||||
count = (first + last) / 2;
|
||||
comp=uni_dec_table[count].code;
|
||||
if(comp < u)
|
||||
first = count+1;
|
||||
else
|
||||
if(comp > u)
|
||||
last = count-1;
|
||||
else
|
||||
notfound = FALSE;
|
||||
}
|
||||
else /* first==last */
|
||||
{
|
||||
if(u == uni_dec_table[first].code)
|
||||
return uni_dec_table[first].decomp;
|
||||
return 0;
|
||||
} /* else */
|
||||
} /* while notfound ...*/
|
||||
return notfound?0:uni_dec_table[count].decomp;
|
||||
}
|
||||
while (notfound && (first <= last))
|
||||
{
|
||||
if (!(first == last))
|
||||
{
|
||||
count = (first + last) / 2;
|
||||
comp = uni_dec_table[count].code;
|
||||
if (comp < u)
|
||||
first = count+1;
|
||||
else
|
||||
if (comp > u)
|
||||
last = count-1;
|
||||
else
|
||||
notfound = FALSE;
|
||||
}
|
||||
else /* first == last */
|
||||
{
|
||||
if (u == uni_dec_table[first].code)
|
||||
return uni_dec_table[first].decomp;
|
||||
return 0;
|
||||
} /* else */
|
||||
} /* while notfound ...*/
|
||||
return notfound ? 0 : uni_dec_table[count].decomp;
|
||||
}
|
||||
else /* u is ascii */
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue