Sfoglia il codice sorgente

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

woollybah 6 anni fa
parent
commit
18566b0f68
2 ha cambiato i file con 8 aggiunte e 1 eliminazioni
  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.FileSystem
 Import Pub.zlib
+Import BRL.Math
 
 Import "options.bmx"
 Import "base.stringhelper.bmx"

+ 7 - 1
decl.bmx

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