|
From: | emacstheviking |
Subject: | Re: Bit flags... |
Date: | Thu, 23 Oct 2014 14:36:12 +0100 |
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:
accflag(0, public).
accflag(4, final).
accflag(5, super).
accflag(9, interface).
accflag(10, abstract).
> %% predicate to convert Value into a list of accflag/2 names.
My way:
access_flags(Value, Output) :-
findall(X, flag_check(Value, X), Output).
flag_check(Value, Output) :-
accflag(X, Output),
g_assign(z, Value),
g_test_set_bit(z, X).
> 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?
--
Michał Bieliński
_______________________________________________
Users-prolog mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/users-prolog
[Prev in Thread] | Current Thread | [Next in Thread] |