users-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bit flags...


From: Michał Bieliński
Subject: Re: Bit flags...
Date: Thu, 23 Oct 2014 01:25:55 +0200
User-agent: SquirrelMail/1.4.21

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]