[Gambas-user] Constant expressions

Brian G brian at westwoodsvcs.com
Tue Oct 12 20:45:06 CEST 2021


This is amazing! Thank you so much!

"Failure is the key to success; 
 each mistake teaches us something"  .. Morihei Ueshiba
Brian G

----- On Oct 12, 2021, at 6:00 AM, Benoît Minisini g4mba5 at gmail.com wrote:

> Hi,
> 
> I have implemented in the compiler the ability to use "constant
> expressions".
> 
> Constant expressions are integer expressions that are evaluated at
> compile time, and that can be used in the following places:
> 
> - Constant declarations.
> 
> - Enumeration declarations.
> 
> - Embedded array declarations.
> 
> These expressions only support a subset of Gambas operators and
> pre-defined constants.
> 
> Here is the list of what you can use inside a constant expression:
> 
> - Arithmetic operators: +, -, *, /, \, Div, %, Mod
> 
> - Logical operators: And, Or, Xor, Not
> 
> - Bitwise operators: Shl, Shr, Asl, Asr, Lsl, Lsr
> 
> - Size of a native numerical or date datatype: SizeOf()
> 
> - Native datatype constants : gb.Boolean, gb.Byte, gb.Short, gb.Integer,
>   gb.Long, gb.Single, gb.Float, gb.Date.
> 
> - Another integer constant.
> 
> WARNING! In the context of constant integer expressions, The / operator
> acts like the integer division operator \.
> 
> Note that the bitwise operators now can used like... operators, and must
> be used that way in the context of constant integer expressions
> 
> Here are some examples:
> 
>   Public Const Alpha As Integer = 1
>   Public Const Beta As Integer = (Alpha * 2) + 1
>   Public Const Delta As Byte = Beta + Alpha
> 
>   Private Enum FirstFlag = 1 Shl 0, SecondFlag = 1 Shl 1,
>     ThirdFlag = 1 Shl 2
> 
>   Private SomeEmbeddedArray[Delta * SizeOf(gb.Short)] As String
> 
> The corresponding documentation is available in the wiki here:
> 
> https://gambaswiki.org/edit/lang/constexpr
> 
> Enjoy it!
> 
> --
> Benoît Minisini
> 
> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----


More information about the User mailing list