On Mon, Nov 25, 2002 at 02:47:54PM +0100, Terje Sletteb? wrote: [snip] > As you say, and as was pointed out at the start of the thread, it may work > on a specific platform (like x86). Perhaps it could be possible to have code > that detects the platform, and which could then report an error on > misalignment, if that is not tolerated on the given platform. It appears > Boost.Config isn't enough for this, though, as it only detects the OS, not > the underlying hardware. > > How did you do it on the ARM? As I understand, it requires word-alignment > for words (and half-word alignment for half-words, if that is supported on > the given ARM version). > Well it is probably a conjuntion of luck and the kind of data we were working with. As I have mentioned before, offset_cast was used mostly for network packet analysis. And fortunately almost all network protocol structures have correct aligmnent. So we were casting only to correct offsets :)
> > I have mentioned before, that binary analysis could be done also using a > > more > > complicated framework. Would it make sense to create one? > > > What does it do? The framework I'm proposing should allow user to specify a structure layout ( like what field starts where and what type if have ). Then there would be a kind of possibly hidden management which would do nescesary copy-in and copy-out operations. I can imagine it should be something like this: void modify_binary_header( void* pData ) { binary_struct b; b.add_field<int>( 0, "field1" ); b.add_field<char>( 4, "field2" ); b.add_field<int>( 5, "field3" ); b.map_to_binary( pData, offset ); b["field1"]=b["field2"]*2; } Please consider this as very preliminary example, just to show a desired functionality. Construction of tructure can be probably done in some better way using static templates. Idea is that binary_struct would be responsible to some sort of safe copying ( possibly byte-by-byte ) of binary data into/out from the internal field representation. It can provide also some other functionality like byte order corretion or handling of sub-byte fields ( something what is not aligned to byte boundary ) Well, this is my idea how to resolve such a problem where simple mapping using offset_cast is not sufficient. Regards, Pavol _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost