Boolean

From MSX Game Library

Revision as of 16:07, 24 March 2024 by Aoineko (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

In MSXGL, boolean can be defined using the type bool.

While booleans are supposed to have only two values (true or false), here we use an 8-bit unsigned integer to store this value.
Its value can therefore go from 0 to 255.
By convention, we use :

  • FALSE = 0
  • TRUE = 1 (some engines use 0xFF value)

⚠️ However, while the value FALSE (0) is guaranteed on all boolean function returns, the value TRUE (1) is never guaranteed : Any value other than FALSE (0) should be interpret as TRUE.
This choice was made for performance reasons both when returning the value and also when testing the returned value.

How to test that a boolean 'b' is true:

if(b) // Ok!
if(b != FALSE) // Ok!
if(b == TRUE) // Not Ok! (no guaranteed to work)

To test that it is false:

if(!b) // Ok!
if(b == FALSE) // Ok!
if(b != TRUE) // Not Ok! (no guaranteed to work)

In short, never use TRUE to check a boolean value.