Hi all

A couple of months ago, I someone could tell me whether it was possible to have record variants of sets lesser than 32 members to be aligned.
Frank Heckenbach told me to make GPC use 8 bits as the smallest size for a set, by changing TSelElement in p/rts/sets.pas and set_word_size and set_alignment in p/util.c.
That worked great, had it not been for the fact that the code depended on reversed ordering of those bytes! (Actually, what I need is the elements in the set to represent the binary bits in a consecutive order)
In the following code, I need BIT0 to be represented by the most significant bit of USRINT, and BIT15 by the least significant.

***********************************
TYPE
 INT16         =  INTEGER(16);
 INT8          =  packed -128..127;
 INT0_65535    =  packed 0..65535;
 B_TYPE        =  (B1, B2, B3, B4, B5, B6, B7, B8);
 BITS          =  (BIT0, BIT1, BIT2, BIT3, BIT4, BIT5, BIT6, BIT7, BIT8,
                   BIT9, BIT10, BIT11, BIT12, BIT13, BIT14, BIT15);

 B_TYPE_SET    =  set of B_TYPE;
 BIT_SET       =  set of BITS;

VAR
 OUT_REC   = record case INT16 of
       0    : (BSLB : B_TYPE_SET;
               BSHB : B_TYPE_SET);
       1    : (USRINT : INT0_65535);
       2    : (BT : BIT_SET);
     end;
************************************

I tried to change set_words_big_endian to "1", in p/util.c!
That made the bit representation work, but when I tried running p/test/setest.pas, I got the following result:

"The set opcodes work : [] False mul plus minus in and rel False"
 

Is there a way to get sets to use "set_words_big_endian", or am I on a totally hopeless mission, all together?
It would really save my day if this would be possible!

Best Regards and Merry Christmas
Sven Jauring