gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: incompatibilities between base and libobjc2


From: David Chisnall
Subject: Re: incompatibilities between base and libobjc2
Date: Mon, 6 Sep 2010 23:15:56 +0100

On 6 Sep 2010, at 23:07, Eric Wasylishen wrote:

> - preface.h includes the sarray.h header, which is not present in libobjc2. 
> It doesn't look like any of the sarray functions are used anywhere in GNUstep 
> base, so this include can probably be removed (?)

Yup, I thought I'd got all of the places where sarray.h was included, but 
apparently I missed one.  

> - NSObject.h uses a TypedStream class, not present in libobjc2. (for read: 
> and write: methods which are commented out). It looks like the TypedStream 
> stuff has been unused for a long time, maybe it can be removed from NSObject?

Hmm, I thought these were conditionally compiled.  I think they can probably go 
- they're for legacy compatibility with some really ancient stuff - but I don't 
want to be the one to delete them...

> - libobjc2 lacks the encodings.h header. It looks like this needs to be added 
> to expose the functions in libobjc2/encoding2.c for some parts of Foundation 
> such as NSConnection.

Should be easy to fix - do you have a list of the functions that it uses?  I 
had to implement some really ugly legacy compatibility functions that I don't 
want to go in the header (the struct parsing ones - libobjc2 has a cleaner API 
for doing this stuff, the implementation currently there is only until I get 
around to rewriting the code in -base that uses the ugly API).

> Also, old libobjc has encoding constants like "#define _C_INT 'i' " in 
> objc/objc-api.h, and these constants aren't present in libobjc2

I really hate these (the encodings are part of the language definition, but the 
constants aren't), but these are in Apple's libobjc so I should probably give 
in and add them.

> - GSObjCRuntime.m has include <objc/Protocol.h>, which isn't in libobjc2

There's also some stuff missing in libobjc2's implementation of the Protocol 
class.

> - Source/GSPrivate.h uses "struct objc_category" and "Category"  which are 
> not exposed by libobjc2. Not sure what to do for these..


They are not exposed because they are an implementation detail that should not 
be touched by anything except the compiler and the runtime.  Why does GNUstep 
think that it needs them?

David

-- Sent from my brain




reply via email to

[Prev in Thread] Current Thread [Next in Thread]