|Subject:||Re: Bit flags...|
|Date:||Thu, 23 Oct 2014 14:38:50 +0100|
My final solution is this, which works and doesn't use global state:accflag(0x0001, public).accflag(0x0010, final).accflag(0x0020, super).accflag(0x0200, interface).accflag(0x0400, abstract).access_flags(Value, Output) :-findall(X, flag_check(Value, X), Output).flag_check(Value, Output) :-accflag(B, Output),On is Value /\ B,On > 0.Many thanks to Michał Bieliński for invaluable assistance, well, the answer pretty much, I just have to grok it now!Excellent! :)Sean.On 23 October 2014 00:25, "Michał Bieliński" <address@hidden> wrote:Dnia 22 Października 2014, 00:54, Śr, emacstheviking napisał:
> I really didn't think this would be so difficult! I have tried for
> several hours now to find an elegant solution to my problem:
> given a 32 bit value, create a list of atoms that represent
> the names of those bit positions of interest.
Until this point it sounds easy.
> %% these define the bit positions of interest
> accflag(0x0001, public).
> accflag(0x0010, final).
> accflag(0x0020, super).
> accflag(0x0200, interface).
> accflag(0x0400, abstract).
Bit positions those are not. They are bit values.
Those are bit positions:
> %% predicate to convert Value into a list of accflag/2 names.
access_flags(Value, Output) :-
findall(X, flag_check(Value, X), Output).
flag_check(Value, Output) :-
> AAARGGGGH! Next month will be my 30th year in software and it
> gets better every day!
Just out of curiosity, how do you count the time? From your first hello
world? From first year of working as programmer? Something else?
Users-prolog mailing list
|[Prev in Thread]||Current Thread||[Next in Thread]|