FreeBasic Enum Keyword
last modified June 16, 2025
The FreeBasic Enum
keyword defines an enumeration type, which
contains a set of named constants. Enums make code more readable by replacing
magic numbers with meaningful names.
Basic Definition
In FreeBasic, Enum
creates a new type consisting of named integer
constants. Each constant in the enumeration has an underlying integer value.
By default, the first enumerator has value 0, and each subsequent enumerator is incremented by 1. You can explicitly assign values to enumerators. Enums improve code clarity and maintainability.
Simple Enum Declaration
This example shows a basic enum declaration and usage.
Enum Days Sunday Monday Tuesday Wednesday Thursday Friday Saturday End Enum Dim today As Days = Wednesday Print "Today is day number: "; today
Here we define a Days
enum with seven constants representing
weekdays. The first value (Sunday) gets 0, Monday gets 1, and so on. We
declare a variable of type Days
and print its numeric value.
Enum With Explicit Values
You can assign specific values to enum constants.
Enum HttpStatus OK = 200 Created = 201 Accepted = 202 BadRequest = 400 Unauthorized = 401 NotFound = 404 End Enum Dim response As HttpStatus = NotFound Print "HTTP Status: "; response
This enum defines common HTTP status codes with their standard numeric values.
We assign the NotFound
value to a variable and print it. Using
named constants makes the code more understandable than using raw numbers.
Enum With Bit Flags
Enums can be used to create bit flags for combining options.
Enum FilePermissions Read = 1 Write = 2 Execute = 4 End Enum Dim myPermissions As FilePermissions = Read Or Write If (myPermissions And Read) = Read Then Print "Read permission granted" End If
This example shows how to use enums for bitwise operations. Each permission is a power of two, allowing combination with OR operations. We check for specific permissions using AND operations. This is common in system programming.
Enum In Switch Statement
Enums work well with Select Case
statements for clear branching.
Enum TrafficLight Red Yellow Green End Enum Dim light As TrafficLight = Yellow Select Case light Case Red Print "Stop" Case Yellow Print "Caution" Case Green Print "Go" End Select
We define a traffic light enum and use it in a Select Case
statement. The code becomes very readable as each case clearly describes
the action for each light state. Enums eliminate magic numbers in such logic.
Enum With Custom Base Type
FreeBasic allows specifying the underlying type for an enum.
Enum SmallEnum As Byte Value1 Value2 Value3 End Enum Enum LargeEnum As Integer BigValue1 = 100000 BigValue2 BigValue3 End Enum Print "Size of SmallEnum: "; SizeOf(SmallEnum) Print "Size of LargeEnum: "; SizeOf(LargeEnum)
Here we declare two enums with different underlying types. SmallEnum
uses Byte (1 byte), while LargeEnum
uses Integer (4 bytes). This
can be useful for memory optimization or when needing larger enum values.
Enum As Function Parameters
Enums can be used as function parameters for type safety.
Enum LogLevel Debug Info Warning [Error] Critical End Enum Sub LogMessage(level As LogLevel, message As String) Print "["; level; "] "; message End Sub LogMessage(Info, "Application started") LogMessage([Error], "File not found")
This example demonstrates using an enum as a function parameter. The
LogMessage
function accepts a LogLevel
enum,
ensuring only valid log levels can be passed. Note the brackets around
Error
as it's a FreeBasic keyword.
Enum With Methods
Enums can be extended with methods using the Extends
keyword.
Enum Colors Red Green Blue End Enum Function Colors.ToString(c As Colors) As String Select Case c Case Red: Return "Red" Case Green: Return "Green" Case Blue: Return "Blue" End Select End Function Dim favorite As Colors = Green Print "Favorite color: "; Colors.ToString(favorite)
Here we extend the Colors
enum with a ToString
method. This allows converting enum values to human-readable strings. The
method is called using the enum type name followed by the method name.
Best Practices
- Naming: Use singular names for basic enums, plural for flags.
- Values: Only specify values when they have special meaning.
- Scoping: Prefix enum values if they might conflict.
- Documentation: Comment enum values that aren't self-explanatory.
- Type Safety: Use enums instead of integers when appropriate.
This tutorial covered the FreeBasic Enum
keyword with practical
examples showing its usage in different scenarios.
Author
List all FreeBasic Tutorials.