< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index Next in Thread >

Re: [reSIProcate] Conditional compile should not change object sizes



On Apr 13, 2005, at 13.40, Dennis Dupont wrote:

I have been hit by this twice now: 
  
[snip]

Welcome to this most frustrating and not-nearly-exclusive-enough club! :-)

It appears somebody tried to address this with the ApiCheck and ApiCheckList classes.  However, the only way to use them would be to pass each possibly affected class and its size to the ApiCheck class, something cumbersome and
not very robust in terms of keeping up with library changes.


Indeed.

 
I think a longer term solution would be to make TransportSelector an interface class (only pure virtual methods), and use a TransportSelectorFactory that could be conditionally compiled to instantiate the correct implementation class.  This of course has the problem of breaking value semantics (sigh).
 

Ideally with the release of the next tarball, this is something that we really MUST address. The library will have very limited utility if we cannot create a stable ABI that doesn't change from one compilation / config cycle to the next. At the most basic level, the size of the DataStackLocal buffer must be fixed and the objects that are included conditionally (Security, V6, etc) should all be padded in the cases where they are absent so we don't have this ABI instability.


Anyone in a position to assist in making these changes? I think they can all be backwards compatible from an API/CODE point of view, but obviously not from an ABI point of view.

Cheers,
Alan

a l a n a t j a s o m i d o t c o m