Răsfoiți Sursa

First Flags enum defaults to 1.
Auto flags enum finds next power of 2.

woollybah 6 ani în urmă
părinte
comite
18566b0f68
2 a modificat fișierele cu 8 adăugiri și 1 ștergeri
  1. 1 0
      config.bmx
  2. 7 1
      decl.bmx

+ 1 - 0
config.bmx

@@ -27,6 +27,7 @@ Import BRL.LinkedList
 Import BRL.Map
 Import BRL.Map
 Import BRL.FileSystem
 Import BRL.FileSystem
 Import Pub.zlib
 Import Pub.zlib
+Import BRL.Math
 
 
 Import "options.bmx"
 Import "options.bmx"
 Import "base.stringhelper.bmx"
 Import "base.stringhelper.bmx"

+ 7 - 1
decl.bmx

@@ -3537,6 +3537,11 @@ Type TEnumValueDecl Extends TDecl
 			End If
 			End If
 		Else
 		Else
 			Local val:Long
 			Local val:Long
+			
+			' initial flags value
+			If index = 0 And parent.isFlags Then
+				val = 1
+			End If
 
 
 			If previous Then
 			If previous Then
 				'
 				'
@@ -3550,7 +3555,8 @@ Type TEnumValueDecl Extends TDecl
 						Else If (val & (val - 1)) = 0 Then ' power of 2 ?
 						Else If (val & (val - 1)) = 0 Then ' power of 2 ?
 							val :Shl 1
 							val :Shl 1
 						Else
 						Else
-							val :+ 1
+							' find next power of 2
+							val = 2 ^ Ceil(Log(val)/Log(2))
 						End If
 						End If
 					Else
 					Else
 						val :+ 1
 						val :+ 1