• MPL Bitwise Operators

    From nospam.LEE.WESTLAKE@nospam.LEE.WESTLAKE@f6.n250.z2.fidonet.org (LEE WESTLAKE) to All on Thu Jan 13 15:25:46 2022
    From Newsgroup: alt.bbs.mystic

    Hi All,

    Is someone able to clarify as to how bitwise operators are implemented in MPL?

    For example: the expression "a := b xor c;" currently returns "Unknown identifier: xor"' during compilation.

    As always, any advice is greatly appreciated.

    o-----------o------------o-------------------------o
    TALIADON | 2:250/6 | 21:3/138 | TALIADON-BBS@MAIL.COM | o-----------o-----------o------------o-------------------------o
    | "Error is a great teacher, and humility its hardest lesson." | o--------------------------------------------------------------o
    --- Synchronet 3.20c-Linux NewsLink 1.2
  • From nospam.g00r00@nospam.g00r00@f215.n129.z1.fidonet.org (g00r00) to LEE WESTLAKE on Thu Jan 13 12:25:44 2022
    From Newsgroup: alt.bbs.mystic

    Is someone able to clarify as to how bitwise operators are implemented
    in MPL?

    For example: the expression "a := b xor c;" currently returns "Unknown identifier: xor"' during compilation.

    MPL is supposed to support your typical bitwise operators (keywords and/or/xor/shl/shr) but clearly something is not working.

    There are also three functions that allow you to check, set, and toggle bits in
    any integer type that MPL supports which can be used for now until I figure out
    what happened.

    This is in a WHATSNEW from way back in 2011 (The number you pass is the actual bit you want to check, set or toggle ie 1-32)

    + New MPL function "BitCheck" accepts a bit position and checks it against
    an integer, returning true or false if the bit is on. So for example in
    the Records, the third bit in UserFlags is UserDeleted:

    GetThisUser
    If BitCheck(3, UserFlags) Then WriteLn('User is marked deleted');

    Note that this was implemented before actual bitwise math, which also
    made it into this version. Keep reading! :)

    + New MPL function "BitToggle" accepts a bit position and an integer and
    toggles the bit.

    GetThisUser
    BitToggle(3, UserFlags); // undeletes if they are deleted or deletes if
    // they are not deleted.

    + New MPL function "BitSet" accepts a bit position and an integer and sets
    the bit ON/OFF based on a boolean:

    GetThisUser
    BitSet(3, UserFlags, True); // user is marked as deleted

    ... What do you mean, QWK? It took me over an hour to read!

    --- Synchronet 3.20c-Linux NewsLink 1.2
  • From nospam.Nick.Andre@nospam.Nick.Andre@f426.n229.z1.fidonet.org (Nick Andre) to G00R00 on Thu Jan 13 16:34:31 2022
    From Newsgroup: alt.bbs.mystic

    On 13 Jan 22 12:25:44, G00R00 said the following to Lee Westlake:

    MPL is supposed to support your typical bitwise operators (keywords and/or/xor/shl/shr) but clearly something is not working.

    But...............................................

    .......................... does it have cowbell.

    Nick

    --- Synchronet 3.20c-Linux NewsLink 1.2
  • From nospam.LEE.WESTLAKE@nospam.LEE.WESTLAKE@f6.n250.z2.fidonet.org (LEE WESTLAKE) to g00r00 on Thu Jan 13 23:35:48 2022
    From Newsgroup: alt.bbs.mystic

    MPL is supposed to support your typical bitwise operators (keywords and/or/xor/shl/shr) but clearly something is not working.

    I certainly miss them when they're not there, but an arithmetic solution
    proved just as good.

    There are also three functions that allow you to check, set, and toggle bits in any integer type that MPL supports which can be used for now
    until I figure out what happened.

    This is in a WHATSNEW from way back in 2011 (The number you pass is the actual bit you want to check, set or toggle ie 1-32)

    + New MPL function "BitCheck" accepts a bit position and checks it against an integer, returning true or false if the bit is on. So for example in the Records, the third bit in UserFlags is UserDeleted:

    GetThisUser
    If BitCheck(3, UserFlags) Then WriteLn('User is marked deleted');

    Note that this was implemented before actual bitwise math, which also
    made it into this version. Keep reading! :)

    + New MPL function "BitToggle" accepts a bit position and an integer and
    toggles the bit.

    GetThisUser
    BitToggle(3, UserFlags); // undeletes if they are deleted or
    deletes if // they are not deleted.

    + New MPL function "BitSet" accepts a bit position and an integer and sets the bit ON/OFF based on a boolean:

    GetThisUser
    BitSet(3, UserFlags, True); // user is marked as deleted

    Thanks g00r00, I appreciate the additional information.

    o-----------o------------o-------------------------o
    TALIADON | 2:250/6 | 21:3/138 | TALIADON-BBS@MAIL.COM | o-----------o-----------o------------o-------------------------o
    | "Error is a great teacher, and humility its hardest lesson." | o--------------------------------------------------------------o

    --- Synchronet 3.20c-Linux NewsLink 1.2
  • From nospam.LEE.WESTLAKE@nospam.LEE.WESTLAKE@f6.n250.z2.fidonet.org (LEE WESTLAKE) to Nick Andre on Thu Jan 13 23:37:00 2022
    From Newsgroup: alt.bbs.mystic

    But...............................................

    .......................... does it have cowbell.

    I need moooooore cowbell!

    o-----------o------------o-------------------------o
    TALIADON | 2:250/6 | 21:3/138 | TALIADON-BBS@MAIL.COM | o-----------o-----------o------------o-------------------------o
    | "Error is a great teacher, and humility its hardest lesson." | o--------------------------------------------------------------o
    --- Synchronet 3.20c-Linux NewsLink 1.2