comparison svk/generate.nim @ 1488:3ce7c132fdac default tip

did: improvments
author sam <sam@basx.dev>
date Sun, 18 May 2025 16:36:52 +0700
parents f786797a0cbe
children
comparison
equal deleted inserted replaced
1487:f786797a0cbe 1488:3ce7c132fdac
259 for flag in flags: 259 for flag in flags:
260 let a = distinctBase(S)(result) 260 let a = distinctBase(S)(result)
261 let b = distinctBase(S)(flag) 261 let b = distinctBase(S)(flag)
262 result = S(a or b) 262 result = S(a or b)
263 263
264 func toEnums[T, S](number: T): seq[S] = 264 func toEnums*[T, S](number: T): seq[S] =
265 for value in enumFullRange(T): 265 for value in enumFullRange(S):
266 if (value.ord and cint(number)) > 0: 266 if (value.ord and cint(number)) > 0:
267 result.add value 267 result.add value
268 """ 268 """
269 269
270 outFile.writeLine "type" 270 outFile.writeLine "type"
431 431
432 for edef in enums.values(): 432 for edef in enums.values():
433 if edef.values.len > 0: 433 if edef.values.len > 0:
434 if edef.isBitmask: 434 if edef.isBitmask:
435 let bitsName = edef.name 435 let bitsName = edef.name
436 let p = bitsName.rfind("Flag") 436 let p = bitsName.rfind("FlagBits")
437 let flagsName = bitsName[0 ..< p] & "Flags" 437 let flagsName = bitsName[0 ..< p] & "Flags" & bitsName[p + 8 .. ^1]
438 438
439 outFile.writeLine &"converter {bitsName}ToBits*(flags: openArray[{bitsName}]): {flagsName} =" 439 outFile.writeLine &"converter {bitsName}ToBits*(flags: openArray[{bitsName}]): {flagsName} ="
440 outFile.writeLine &" asBits[{bitsName}, {flagsName}](flags)" 440 outFile.writeLine &" asBits[{bitsName}, {flagsName}](flags)"
441 outFile.writeLine &"func `$`*(bits: {flagsName}): string =" 441 outFile.writeLine &"func `$`*(bits: {flagsName}): string ="
442 outFile.writeLine &" $toEnums[{flagsName}, {bitsName}](bits)" 442 outFile.writeLine &" $toEnums[{flagsName}, {bitsName}](bits)"