2. Functions

There are three functions that can be used in routing blocks to operate with flags.

2.1. setflag ( flag )

This function sets the value of the flag given as parameter to 1 (true). The value of the parameter must be an integer between 0 and 31.

Example 3. setflag(15) -- set the 15th flag

   0                     1                     2                     3
   0 1 2 3 4 5 6 7   8 9 0 1 2 3 4 5   6 7 8 9 0 1 2 3   4 5 6 7 8 9 0 1	
  +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
  |0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|1| |0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|0|
  +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

If the value of the flag was already set, the operation has no other effect, the flag remains set to 1.

The function returns always true.

2.2. resetflag ( flag )

This function resets the value of the flag given as parameter to 0 (false). The value of the parameter must be an integer between 0 and 31, too.

Example 4. resetflag(15) -- reset the 15th flag

   0                     1                     2                     3
   0 1 2 3 4 5 6 7   8 9 0 1 2 3 4 5   6 7 8 9 0 1 2 3   4 5 6 7 8 9 0 1	
  +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
  |0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|0|
  +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

If the value of the flag was already 0, the operation has no other effect, the flag remains set to 0.

The function returns always true.

2.3. isflagset ( flag )

This function tests the value of the flag given as parameter. The value of the parameter must be an integer between 0 and 31, too.

The function returns true, if the value of the flag is 1, and false, if the value of the flag is 0.

Example 5. isflagset(15)

   0                     1                     2                     3
   0 1 2 3 4 5 6 7   8 9 0 1 2 3 4 5   6 7 8 9 0 1 2 3   4 5 6 7 8 9 0 1	
  +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
  |0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|1| |0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|0|
  +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+

  # when the flags' bit map is as above
  if(isflagset(15))
  {
     # this branch is executed
  } else {
     # not in this case
  };