[Top][All Lists]
[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