Marcus, Thanks for the reminder and for digging up that newsletter link! Perhaps someone <hint>Daniel</hint> can look into making it part of the OpenBeOS resources page. e Marcus Overhagen wrote: > > Hello, > > I would like to straighten out some facts about the FBC problem and binary > compatibility. > > First: Yes, it is possible to change class headers, for example by adding new > functions, > or by removing functions from the private: section without breaking > functionality, > as long as these functions are not virtual. > You can also add your own variables, but you have to make sure you don't break > the FBC layout. > > This means, you are not allowed to change: > > * The size of objects (i.e. structs or classes) > * The offsets to "visible" (public or protected) data > * The existence and size of the vtable > * The offsets to the virtual functions in the vtable > > In other words: > > If there are any variables that are public or protected, they may be used > by applications and can't be changed. You are also not allowed to change > their position, for example by reordering. But you can add or romve variables > in the private: section, if you make sure that the size of the class stays > the same. Adding a > void * mydata; > forces you to remove 4 bytes of data elsewhere, for eample by reducing > the uint32 reseved[x]; and replacing x with x -1. > > Order and positions of virtual functions can not change, and you also > can't change the amount of virtual functions. > > There is also a (very old) newsletter about this, it explains this much more > and in very detail, I think it's a must read for everyone involved here. > > please find it here: > http://www-classic.be.com/aboutbe/benewsletter/Issue79.html#Insight > > regards > Marcus >