Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ##########################
- ### Bit/flag functions ###
- ##########################
- # You need to create a variable like this (in this example, there are four flags):
- # var flags = 0b0000
- #
- # Then you need to create some constants or an enum for these flags.
- # As an enum:
- # enum STATES { walking = 1 << 0, running = 1 << 1, rising = 1 << 2, falling = 1 << 3 }
- # Or as constants:
- # const STATE_WALKING = 1 << 0
- # const STATE_RUNNING = 1 << 1
- # ...
- # USE CASE: if check_flag(bitfield_variable, flag_constant): ...
- # e.g.
- # if check_flag(statebits, STATES.walking):
- static func check_flag(bitfield : int, flag : int, verbose : bool = false):
- var out = bool(bitfield & flag)
- if verbose: print(out)
- return out
- # USE CASE: bitfield_variable = toggle_flag(bitfield_variable, flag_constant)
- # e.g.
- # statebits = toggle_flag(statebits, STATES.walking)
- static func toggle_flag(bitfield : int, flag : int):
- if (bitfield & flag): bitfield = bitfield - flag
- else: bitfield = bitfield | flag
- print(bitfield)
- return bitfield
- # USE CASE: bitfield_variable = set_flag(bitfield_variable, flag_constant, boolean)
- # e.g.
- # statebits = set_flag(statebits, STATE.walking, true)
- static func set_flag(bitfield : int, flag : int, switch : bool):
- if switch: # setting bit to 1
- if !(bitfield & flag): bitfield = bitfield | flag
- else: # setting bit to 0
- if (bitfield & flag): bitfield = bitfield - flag
- return bitfield
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement